Ansible-提供多个Ansible\u been\u pass=MYROOTPASSWORD

Ansible-提供多个Ansible\u been\u pass=MYROOTPASSWORD,ansible,root,ansible-playbook,administration,ansible-2.x,Ansible,Root,Ansible Playbook,Administration,Ansible 2.x,我有4个VM,它们都有不同的ssh用户 为了使用Ansible操作虚拟机,我将我的文件/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

我有4个VM,它们都有不同的ssh用户

为了使用Ansible操作虚拟机,我将我的文件
/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'u been\u pass=xxx-my-secret-root-password-for-someserver1'
我可以在我的一台机器上成为root用户,但不能在所有机器上


如何提供
somepass2
somepass3
somepass4

为什么不在清单中定义
ansible\u been\u pass
作为一个内嵌主机变量,就像您已经使用SSH密码一样?因此,您的库存将如下所示:

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
[all:vars]
ansible_become_pass='{{ ansible_ssh_pass }}'
或者,如果您的登录密码和sudo密码相同,只需添加:

ansible_become_pass='{{ ansible_ssh_pass }}'
可以是到
all
group\u vars文件,也可以是在清单文件中的串联group vars块中,如下所示:

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
[all:vars]
ansible_become_pass='{{ ansible_ssh_pass }}'

为什么不像使用SSH密码一样,在清单中列出
ansible\u been\u pass
?或者,如果它们确实是相同的密码,则设置一个
all:vars
块,使其具有
ansible\u been\u pass=ansible\u ssh\u pass
您能给出这两个密码的示例吗?(例如将x写入
hosts
并从bash调用
y