【问题标题】:Ansible - supply multiple ansible_become_pass=MYROOTPASSWORDAnsible - 提供多个 ansible_become_pass=MYROOTPASSWORD
【发布时间】:2016-03-01 07:26:17
【问题描述】:

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

如何提供somepass2somepass3somepass4

【问题讨论】:

  • 为什么不像您已经使用 SSH 密码那样将 ansible_become_pass 放入清单中?或者,如果它们确实是相同的密码,则将all:vars 块设置为具有ansible_become_pass=ansible_ssh_pass
  • 你能举两个例子吗? (例如将 x 写入 hosts 并从 bash 调用 y?)

标签: ansible root ansible-playbook administration ansible-2.x


【解决方案1】:

为什么不像您已经使用 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 文件或清单文件中的内联组 vars 块中,如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多