Help us understand the problem. What is going on with this article?

ansibleで自分自身(localhost)を制御する場合はlocalで

More than 3 years have passed since last update.

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 という秘密鍵が生成されます。

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

と書いてやるだけでした。これで幸せになれました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away