search
LoginSignup
10
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

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

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
10
Help us understand the problem. What are the problem?