今更だがAnsibleを触り始めた。手始めにVagrantで作成した仮想マシンとの疎通確認(ping)までの手順。
Vagrant
仮想マシン作成
特筆すべき部分はないので詳細の記載は行わないがホストオンリーネットワークの設定だけした。
その際のIPは192.168.33.10を使用する。設定完了後仮想マシンの起動を行っておくこと。
Ansible
インストール
- 環境: Mac OS X 10.11.5
http://docs.ansible.com/ansible/intro_installation.html#latest-releases-on-mac-osx
公式ドキュメントに則りpipでのインストールを行ったが残念ながらうまく行かなかった(ansibleコマンド実行時にエラーが出た)。
その為、今回はHomebrewでのインストールを行った。
$ brew install ansible $ ansible --version ansible 2.1.0.0
設定ファイル類
Ansibleは主に2つのファイルを用いる。
1つは接続先ホストを管理するインベントリファイル。
Ansibleはインベントリファイルに記載されたホストにしかアクセスできない。
インベントリファイルを作成せずにAnsibleを実行した際に下記のようなWarningが表示されたので、デフォルトの配置場所は下記なのだろう。
この通りファイルを作成することにする。
[WARNING]: Host file not found: /usr/local/etc/ansible/hosts
なお、記載する際はグループ毎に記載する事もできるようだ。
今回は単にIPだけ記載しておいた。
$ cat /usr/local/etc/ansible/hosts 192.168.33.10
もう1つは設定ファイル。ansible.cfgというファイル名を使用している様子。
現状設定したい項目が特に無いので作成しない。作成しない場合はデフォルトの設定が適応される。
なお、読み込む優先順位の記載があったのでメモ。
ちなみに ansible.cfg は次の順で探します
1.カレントディレクトリ
Ansible チュートリアル | Ansible Tutorial in Japanese
2.環境変数の ANSIBLE_CONFIG or ~/ansible.cfg
3./etc/ansible/ansible.cfg
pingモジュールで疎通確認
これで準備とは整ったので疎通確認をしていきたい。
ansibleコマンドは-mオプションでモジュールを指定することができる。
-m MODULE_NAME, --module-name=MODULE_NAME
module name to execute (default=command)
コマンドを叩いてみるとsshに失敗と表示された。
$ ansible 192.168.33.10 -m ping 192.168.33.10 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true }
sshユーザ名もパスワードも秘密鍵も設定していないのでそうなることは理解できる。
パスワードでの認証方法と公開鍵認証での方法を記載する。
まず、どちらにしてもユーザ名の設定が必要になる。これは-uオプションで設定することができる。
-u REMOTE_USER, --user=REMOTE_USER
connect as this user (default=None)
パスワードでの認証方法は-kオプションを指定すれば可能。
-k, --ask-pass ask for connection password
$ ansible 192.168.33.10 -m ping -u vagrant -k SSH password: 192.168.33.10 | SUCCESS => { "changed": false, "ping": "pong" }
成功した。
次に、公開鍵認証について。vagrantで利用している秘密鍵はssh-configで確認できる。
$ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/arcright/Workspace/ansible/.vagrant/machines/default/virtualbox/private_key IdentitiesOnly yes LogLevel FATAL
秘密鍵は--private-keyオプションを指定すれば設定できる。
--private-key=PRIVATE_KEY_FILE, --key-file=PRIVATE_KEY_FILE
use this file to authenticate the connection
$ ansible 192.168.33.10 -m ping -u vagrant --private-key=/Users/arcright/Workspace/ansible/.vagrant/machines/default/virtualbox/private_key 192.168.33.10 | SUCCESS => { "changed": false, "ping": "pong" }
成功した。
次回は、Ansibleを用いたプロビジョニングについて書きたい。
なお、今回は疎通確認が目的だったのでコマンドラインのオプションにずらずら書いていたが本来はこういったオプションなどを設定ファイルなどに書くのが筋だろう。