
最近、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