【发布时间】: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,但不是全部。
如何提供somepass2、somepass3 和somepass4?
【问题讨论】:
-
为什么不像您已经使用 SSH 密码那样将
ansible_become_pass放入清单中?或者,如果它们确实是相同的密码,则将all:vars块设置为具有ansible_become_pass=ansible_ssh_pass -
你能举两个例子吗? (例如将 x 写入
hosts并从 bash 调用y?)
标签: ansible root ansible-playbook administration ansible-2.x