Ansible - 提供多个 ansible_become_pass=MYROOTPASSWORD

Ansible - supply multiple ansible_become_pass=MYROOTPASSWORD

我有 4 个虚拟机,它们都有不同的 ssh 用户。

为了使用 Ansible 操作 Vms,我将我的文件 /etc/ansible/hosts 设置为:

someserver1 ansible_ssh_host=123.123.123.121 ansible_ssh_port=222 ansible_ssh_user=someuser1 ansible_ssh_pass=somepass1
someserver2 ansible_ssh_host=123.123.123.122 ansible_ssh_port=22 ansible_ssh_user=someuser2 ansible_ssh_pass=somepass2
someserver3 ansible_ssh_host=123.123.123.123 ansible_ssh_port=222 ansible_ssh_user=someuser3 ansible_ssh_pass=somepass3
someserver4 ansible_ssh_host=123.123.123.124 ansible_ssh_port=222 ansible_ssh_user=someuser4 ansible_ssh_pass=somepass4

假设我有这个剧本,它只在 /root 文件夹中执行 ls

- name: root access test
  hosts: all
  tasks:
   - name: ls the root folder on my Vms
     become: yes
     become_user: root
     become_method: su
     command: chdir=/root ls -all

使用此调用 ansible-playbook -v my-playbook.yml --extra-vars='ansible_become_pass=xxx-my-secret-root-password-for-someserver1' 我可以在我的一台机器上成为 root,但不能在所有机器上成为 root。

如何提供somepass2somepass3somepass4

为什么不像您已经对 SSH 密码所做的那样,将 ansible_become_pass 定义为清单中的内联主机变量?所以你的库存现在看起来像这样:

someserver1 ansible_ssh_host=123.123.123.121 ansible_ssh_port=222 ansible_ssh_user=someuser1 ansible_ssh_pass=somepass1 ansible_become_pass=somesudopass1
someserver2 ansible_ssh_host=123.123.123.122 ansible_ssh_port=22 ansible_ssh_user=someuser2 ansible_ssh_pass=somepass2 ansible_become_pass=somesudopass2
someserver3 ansible_ssh_host=123.123.123.123 ansible_ssh_port=222 ansible_ssh_user=someuser3 ansible_ssh_pass=somepass3 ansible_become_pass=somesudopass3
someserver4 ansible_ssh_host=123.123.123.124 ansible_ssh_port=222 ansible_ssh_user=someuser4 ansible_ssh_pass=somepass4 ansible_become_pass=somesudopass4

或者,如果您的登录密码和 sudo 密码相同,则只需添加:

ansible_become_pass='{{ ansible_ssh_pass }}'

要么到 all group_vars 文件,要么在清单文件中的内联组变量块中,如下所示:

[all:vars]
ansible_become_pass='{{ ansible_ssh_pass }}'