2016-03-01 9 views
0

У меня есть 4 виртуальных машины, у которых есть разные пользователи ssh.Ansible - supply multiple ansible_become_pass = MYROOTPASSWORD

Для того, чтобы использовать анзибль манипулировать 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 папки:

Используя этот вызов ansible-playbook -v my-playbook.yml --extra-vars='ansible_become_pass=xxx-my-secret-root-password-for-someserver1' Я могу стать root на одной из моих машин, но не на всех.

Как можно поставить somepass2, somepass3 и somepass4?

+0

Почему бы не просто положить 'ansible_become_pass' в строку в инвентаре, как вы уже сделали с паролем SSH? Или, если они действительно являются одним и тем же паролем, установите блок «all: vars», чтобы иметь «ansible_become_pass = ansible_ssh_pass» – ydaetskcoR

+0

Не могли бы вы привести примеры для обоих? (Например, как писать x в 'hosts' и вызывать' y' из bash?) – kiltek

ответ

1

Почему бы не просто определить 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 }}' 

либо файл all group_vars или в входах line group vars в файле инвентаризации следующим образом:

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