こんにちは、tanzoです。
今回は、CentOS上でSolarisの情報を取得したい思い、試しにPuppet Boltを使ってみました!!
ほとんどLinuxの知識が皆無だったこともあり、すごい苦戦したため、備忘録として残しておきます。
ちなみに、CentOS、Solaris、VirtualBox等の環境は準備されている前提での説明になりますので、その点はご了承ください。
環境
- Windows 10
- CentOS Stream release 8 (Virtual box上に構築)
- Oracle Solaris 11.4 (Virtual box上に構築)
- Virtual box (バージョン:6.1.14)
- teraterm (バージョン:4.105)
Puppet Boltインストール(Windows上に)
インストールはhttps://yum.puppetlabs.com/puppet/el/8/x86_64/
のサイトから、__puppet-bolt-3.4.0-1.el8.x86_64.rpm__を選択して任意のディレクトリにダウンロードしておきます。
(自分の現環境では、yumが使えなかったので、ファイルをダウンロードする方法を採用しています)
CentOS起動とscpによるファイル転送
-
CentOSはteratermから起動しておきます。(teratermは窓の杜などでインストールしておいてください)
起動したら、ログインして、以下図のように、「SSH SCP...」のボタンを押下します。
-
次に以下の図のように、「…」ボタンを押下して、先ほどダウンロードしたrpmファイルを選択し、右側の「Send」ボタンを押下します。
*その際に「To」の入力欄に関しては入力しなくても大丈夫です。(入力しない場合は、ホームディレクトリがデフォルトで選択されます)※点線より下の項目も入力しなくて大丈夫です。
- そしてrpmファイルがしっかり転送されたか確認するために、CentOS上で以下のコマンドを入力します。
出力結果に先ほど転送したrpmファイルがあれば、OKです。
コマンド
[yuta@localhost ~]$ ls puppet*
puppet-bolt-3.4.0-1.el8.x86_64.rpm
Puppet Boltインストール(CentOS上に)
rpmファイルがCentOS上にあることが確認できたため、以下のコマンドを入力して、インストールしていきます。
コマンド
[yuta@localhost ~]$ rpm -ivh puppet-bolt-3.4.0-1.el8.x86_64.rpm
インストールに成功したら、次に鍵の設定を行っていきます。
SSH鍵認証の手順
ここからは、CentOSとSolarisの二つを同時に操作していきますので、teratermからファイル →「新しい接続」でSolarisにもログインをしておきます。(もし、Solarisにログインした際に、ホームディレクトリが無いというエラーが出ていた場合、sudoになって、作成しておいてください)
ちなみに自分は、/export/home/ユーザ名 というホームディレクトリが無いというエラーが出ていたので作りました笑 ← 無かったら絶対作ってください!(ディレクトリは 【# mkdir ディレクトリ名】で作成できます)
- 今回はCentOSからSolarisの情報を取得するため、CentOSがクライアント、Solarisがサーバ側になります。
はじめにCentOS上で以下のコマンドを入力して、サーバへログイン認証する鍵を作成します。(.sshフォルダは勝手に作ってくれます)
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/yuta/.ssh/id_rsa): ← Enterキーを押します
Created directory '/home/yuta/.ssh'. ← ~/.ssh がない場合、ディレクトリを作成してくれます
Enter passphrase (empty for no passphrase): ← パスフレーズを入力します(入力しなくてもOK)
Enter same passphrase again: ← もう一度パスフレーズを入力します(入力しなくてもOK ↑入力してない場合)
Your identification has been saved in /home/yuta/.ssh/id_rsa.
Your public key has been saved in /home/yuta/.ssh/id_rsa.pub.
- では、実際に公開鍵、秘密鍵が作られたかどうか、以下のコマンドで確認します。(以下、currentディレクトリがbinですが、lsでpath通してるので問題ないです)
コマンド
[yuta@localhost bin]$ ls /home/yuta/.ssh
id_rsa id_rsa.pub known_hosts
- 上記、鍵ファイルの確認が取れましたので、次にSolaris(サーバ側)上に公開鍵(id_rsa.pubファイル)の転送を行います。以下のコマンドでエラーが出なければ、OKです。(ちなみに自分は、scp: ./id_rsa.pub: Permission deniedのようなエラーが出て、降参したので別の方法でやりました笑)
[yuta@localhost ~]$ scp /home/yuta/.ssh/id_rsa.pub ログイン先のユーザ名@ログイン先のホスト名かIP:
CentOSからSolarisにファイル転送(scp以外)
scpコマンドでファイル転送が出来なかった場合、無理やりですがSolaris上で以下の手順を行ってください!
①ホームディレクトリにいる状態でsudo(以下のコマンド参照)
コマンド
-bash-4.4$ pwd
/export/home/ユーザ名 ← Solarisにログインした際にいる階層(実質ログインして、何も考えずにsudoすればよい)
-bash-4.4$ sudo -s
Password:
root@solaris:/export/home/ユーザ名#
②CentOS上のid_rsa.pubファイルの内容を記載するファイルを作成して、CentOS上のid_rsa.pubファイル内を全てコピーして貼り付ける(以下コマンド参照)
コマンド
root@solaris:/export/home/ユーザ名# touch id_rsa.pub
root@solaris:/export/home/ユーザ名# ls
id_rsa.pub
root@solaris:/export/home/ユーザ名# vim id_rsa.pub
~ここにCentOS上のid_rsa.pubファイル内を全てを張り付ける
~
~
~
~
~
~
以下省略
③.sshファイルを作成し、authorized_keysファイルにid_rsa.pubファイルの内容を反映させる(以下コマンド参照)
コマンド
root@solaris:/export/home/ユーザ名# mkdir .ssh
root@solaris:/export/home/ユーザ名# cat id_rsa.pub >> authorized_keys → authorized_keysに反映
root@solaris:/export/home/ユーザ名# find / -name authorized_keys
/export/home/ユーザ名/.ssh/authorized_keys → こうなっていればOK
root@solaris:/export/home/ユーザ名# cat /export/home/ユーザ名/.ssh/authorized_keys → これを入力して公開鍵の内容が出力されればOK
実際にboltコマンドを試してみる
ここまで来たら、boltコマンドが使える状態になったと思うのでCentOS上で以下コマンドを入力する
code
[yuta@localhost ~]$ find / -name bolt
省略
/usr/local/bin/bolt → このbinフォルダの階層に移動する
省略
[yuta@localhost ~]$ cd /usr/local/bin/
[root@localhost bin]$ ./bolt command run "echo hoge" --targets ユーザ名@IP
省略
Started on ユーザ名@IP
Finished on ユーザ名@IP
hoge → この表示がされていたらOK
Successful on 1 target: ユーザ名@IP
Ran on 1 target in 1.44 sec
最後に(主に躓いたこと)
- サーバ側に鍵を配置する時は、配置するディレクトリは 「ホームディレクトリ/.ssh/authorized_keys」になるようにする → これをしてなかったから、権限エラーになり、終わりの見えない戦いが始まった感じがしていた笑
- 知識がないため、注意する事か分からないが、サーバ側のパーミッションの設定で、.sshはdrwxr-xr-x、__authorized_keysは-rw-r--r--__にしたら、うまくboltコマンドが使えた
- boltコマンドを実行する時は、sudoしていない状態でやったほうが良いと思う。(めんどくさそうなエラーが出るため)
- boltコマンドで対象サーバから情報を取得する前に、一度SSH接続でクライアントからサーバ側にログインしておくとよい。
参考URL
https://qiita.com/gotohiro55/items/36a22516de2b381b3c6e
https://qiita.com/jinnai73/items/f1822f2e4d567847e215
https://qiita.com/shisama/items/5f4c4fa768642aad9e06
https://qiita.com/takuyanin/items/18590600d077df707923
https://puppet.com/docs/bolt/latest/running_bolt_commands.html