MacでAnsibleを使うときに
$ ansible-playbook -i development site.yml --ask-pass
のようにパスワード認証のssh接続でplaybookを実行しようとすると、~/.ssh/config
に設定を書いているホストへの接続が上手く行かず、以下のようなエラーが出たので対策を調べました。
fatal: [dev-test-server]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh.", "unreachable": true}
環境
ansible: 2.2.0
OS: OSX Yosemite
設定ファイル例
playbook実行ディレクトリ/development
[test-server]
dev-test-server
[development:children]
test-server
~/.ssh/config
Host dev-test-server
HostName xxx.xxx.xxx.xxx
Port 22
User root
対処法
Macではopenssh
を使ってssh接続することになるので、-c ssh
オプションを使って接続するようです。さらに、パスワードを使う場合はsshpass
を入れておく必要があるようです。
ただ、brew install sshpass
でインストールしようとすると、セキュリティの問題でやめとけと言われるので、以下のコマンドでインストールします。
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
上記コマンドでsshpass
が入ったら、以下のようにplaybookを実行します。
$ ansible-playbook -i development site.yml -c ssh --ask-pass
これで~/.ssh/config
の設定を反映してパスワード認証でplaybookが実行できました!