Vagrant で作った CentOS 7.x VM の中で、ansible の復習をしています。
CentOS 7.x のデフォルトでは ansible の 1.9 系が入りますが、epel リポジトリを入れれば 2.1 系が入ります。1.9 系で作った *.yml を 2.1 系で動かすと、概ね動きますが、以下の設定により様々な depricated 警告を出してくれるので、せっせと 2.1 用に直している最中です。
vagrant@localhost:/etc/ansible$ grep _warnings ansible.cfg
#system_warnings = True
#deprecation_warnings = True
command_warnings = True
さて、Vagrant で VM を作ると、VM 側には authorized_keys(*1) という公開鍵が、ホスト側には
.vagrant\machines\default\virtualbox\private_key という秘密鍵が生成されます。- (*1)…Vagrant-1.8.5 では公開鍵のパーミッションが誤っているため、修正しないと接続できません。
ansible では制御される側にはエージェントが不要で sshd だけ動いていればよいのですが、VM 内でもデフォルトでは ssh 接続を使うので、今までは自分自身を制御するためだけに private_key を VM 側にコピーしていました。
その後マニュアルを読み返していたら、ansible-playbook コマンドに "-c local" オプションを見つけました。これを使えば ssh キーがなくても ansible-playbook を流せるようになりました。
ただ、どうしてもオプションを付けるのを忘れてしまいがちで、そのたびに
The authenticity of host 'localhost (::1)' can't be established.
とか言われてしまいます。localhost だからデフォルトで local 接続にしてくれればいいのに、と思ったら、ちゃんと設定がありました。
http://docs.ansible.com/ansible/intro_inventory.html#non-ssh-connection-types
単に、/etc/ansible/hosts に
localhost ansible_connection=local
と書いてやるだけでした。これで幸せになれました。