Mac
OpenSSH
Ansible
sshpass

Macでansible-playbookを実行する時に~/.ssh/configの設定が参照されずUNREACHABLEとなる場合の対処法

More than 1 year has passed since last update.

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が実行できました!