Ansible:對不同主機使用不同的 sudo 用戶

Ansible:對不同主機使用不同的 sudo 用戶

最近開始使用ansible。我們有一些伺服器,應用程式設定在不同的使用者下,例如在伺服器 xyz.com 中,unix 用戶是 xyz_user 等等。

所以對於 xyz.com 來說,

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

我們如何在 ansible 配置中設定 sudo 用戶,以便自動 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

相關內容