Ansible使い始めて詰まったポイントを色々書こうと思っていたんですが、詰まったのがFreeBSDのパッケージ管理がいまいちなことが原因の再現性のないものばかりでいざ記事を書こうと思ってもう一度やってみると、全部何も問題なくうまくいってしまいました。
とは言ってもアドベントカレンダー登録してしまったので、一言だけ書きます。
Ansibleはホスト側でPythonを/usr/bin/にしかチェックしにいかないので、FreeBSDではシンボリックリンクを貼ろう!
2015/09/29 追記
インベントリファイルに以下のように書くそうです。コメントで教えていただきました。
参考:How do I handle python pathing not having a Python 2.X in /usr/bin/python on a remote machine?
freebsd_host ansible_python_interpreter=/usr/local/bin/python
以上です。以下に少しだけ詳しく状況を書きました。
環境
Vagrant上で
CentOS 6.5から
FreeBSD 9.2を操作
(MacでAnsibleが動かなくなった時のファーストアクションと同じくMacで動かせなかったため、仕方なく2つVMをたてています、、、なんとかしたい、、、)
あるはずのpythonがない
CentOSでAnsibleのインストールなどもろもろして、pingを確認してみると、
FreeBSD側で/usr/bin/pythonが見つからないと怒られます。
$ ansible -i hosts 192.168.33.10 -m ping
192.168.33.10 | FAILED >> {
"failed": true,
"msg": "/usr/bin/python: not found\n",
"parsed": false
}
確認してみるとFreeBSDでデフォルトでインストールされているPythonは、/usr/local/bin/下にあり、/usr/bin/下にはたしかにありません。
仕方ないので、シンボリックリンクをば。あまり良い解決策ではないのかも。
$ sudo ln -s /usr/local/bin/python2.7 /usr/bin/python
無事pingが通りました。
$ ansible -i hosts 192.168.33.10 -m ping
192.168.33.10 | success >> {
"changed": false,
"ping": "pong"
}