Ansible: ホストごとに異なる sudo ユーザーを使用する

Ansible: ホストごとに異なる sudo ユーザーを使用する

最近、Ansible を使い始めました。アプリケーションが異なるユーザーで設定されているサーバーがあります。たとえば、サーバー xyz.com では、Unix ユーザーは xyz_user などです。

つまりxyz.comの場合、

ansible xyz.com -a 'command' -u xyz_user -K

サーバーに定義された特定のユーザーに自動的に sudo を実行するように、Ansible 構成で sudo ユーザーを設定するにはどうすればよいでしょうか?

答え1

こうした種類のものには、Ansible プレイブックを活用できます。

例えば

--- 
- hosts: host1:host2 
  user: user1 
  sudo: yes
  tasks: 
  - name: update package list 
    action: command /usr/bin/apt-get update 
  - name: upgrade packages 
    action: command /usr/bin/apt-get -u -y dist-upgrade 
- hosts: host3 
  user: ubuntu
  sudo: yes 
  tasks: 
  - name: update package list 
    action: command /usr/bin/apt-get update 
  - name: upgrade packages 
    action: command /usr/bin/apt-get -u -y dist-upgrade

うまくいくといいですね :)

答え2

インベントリまたはグループ変数に基づいたホスト変数を使用することをお勧めします。これにより、ホストごとまたはホストのグループごとに ssh ユーザーを設定できます。このアプローチの利点は、プレイブックに対して透過的であることです。プレイブックでは、インストールのことだけを気にすればよく、アクセスについては気にしなくて済みます。

ホストとグループ別にユーザーを設定する方法の例:

[xyz]
www.xyz.com ansible_ssh_user=xyz_user

[abc]
www.abc.com

[abc:vars]
ansible_ssh_user=abc_user

そして、これが私よりもはるかにわかりやすく動作の仕組みを説明しているドキュメントがこちらです:http://docs.ansible.com/intro_inventory.html

関連情報