Ansibleはセットアップ先のサーバーにChefみたいにエージェントを入れなくていいので楽ですね。
セットアップ先にSSHで接続できて、Python2.4以上が入っていればOK(大体のLINUXは入っています)という気軽さがいいです。
今回は、
セットアップ先にSSHで接続できて
この部分の接続ユーザーをどう指定するか疑問があったので調べてみました。
方法は3つあります。
1. 実行時の引数で指定
-u オプションで指定します。
shell
newgyu@NewGyuMachine:~$ ansible-playbook -h
Usage: ansible-playbook playbook.yml
:
-u REMOTE_USER, --user=REMOTE_USER
connect as this user (default=newgyu)
newgyu@NewGyuMachine:~$ ansible-playbook -i dev_hosts -u ec2_user playbook.yml
- 一台だけならいいけど複数台あるとサーバーの役割ごとにSSH接続すべきユーザーが異なるケースもあるよね
- いちいち実行時に指定するのも面倒
ということであまり使わない気がする。(ansible-playではなく、ansibleコマンドで一発こっきりの時は使うかも)
2. インベントリファイルで指定
production.ini
[webservers]
hoge.local ansible_ssh_user=hoge_user
fuga.local
piyo.local
[webservers:vars]
ansible_ssh_user=webuser
これが一番使い勝手がいい気がします。
基本はグループ単位に大体同じだと思うので、group variablesに指定して、ホスト単位に違う場合はHost Variablesという使い方ができます。
3. playbook.ymlの中で指定
remote_userに指定します。
playbook.yml
- hosts: all
remote_user: webuser
tasks:
- name: test connection
ping: