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。
如何提供somepass2
、somepass3
和somepass4
?
为什么不像您已经对 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 }}'
我有 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。
如何提供somepass2
、somepass3
和somepass4
?
为什么不像您已经对 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 }}'