Ansible:为不同的主机使用不同的 sudo 用户

nit*_*ins 5 remote-access configuration-management ansible

最近开始使用ansible。我们有在不同用户下设置应用程序的服务器,例如在服务器 xyz.com 中,unix 用户是 xyz_user 等等。

所以在 xyz.com 的情况下,

ansible xyz.com -a 'command' -u xyz_user -K
Run Code Online (Sandbox Code Playgroud)

我们如何在 ansible 配置中设置 sudo 用户,以便自动 sudo 到为服务器定义的特定用户?

zim*_*atm 14

我建议使用基于库存或组变量的主机变量。这允许您为每个主机或每个主机组设置 ssh 用户。这种方法的优点是它对您的剧本是透明的。在剧本中,你只需要担心安装东西而不是访问。

关于如何按主机和组设置用户的示例:

[xyz]
www.xyz.com ansible_ssh_user=xyz_user

[abc]
www.abc.com

[abc:vars]
ansible_ssh_user=abc_user
Run Code Online (Sandbox Code Playgroud)

这是解释它如何比我更好地工作的文档:http : //docs.ansible.com/intro_inventory.html


kaj*_*aji 7

你可以利用 ansible playbook 来处理这些事情。

例如

--- 
- 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
Run Code Online (Sandbox Code Playgroud)

希望这对你有用 :)