3

我有 4 个 VM,它们都有不同的 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

可以说我有这个剧本,它只ls/root文件夹内执行:

- 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,但不是全部。

怎么可能供应somepass2,somepass3somepass4?

4

1 回答 1

2

为什么ansible_become_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

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

ansible_become_pass='{{ ansible_ssh_pass }}'

allgroup_vars 文件或清单文件中的内联组 vars 块中,如下所示:

[all:vars]
ansible_become_pass='{{ ansible_ssh_pass }}'
于 2016-03-01T11:24:13.517 回答