2015-12-28 2 views
5

мой loginuser является user1, и я хочу выполнить playbook с помощью root. как я могу это сделать. если я использую в cmdline, это не работаеткак определить пользователя входа и стать root в playbook

ansible-playbook main.yaml -i hosts --user=git -k --become-user=root --ask-become-pass --become-method=su 

Пожалуйста, расскажите, как это реализовать.

name: Install and Configure IEM 
hosts: rhel 
ansible_become: yes 
ansible_become_method: su 
ansible_become_user: root 
ansible_become_pass: passw0rd 
tasks: 

- name: Creating masthead file path 
    file: path=/etc/opt/BESClient state=directory 

- name: Creating install directory 
+1

Добро пожаловать в СО, пожалуйста, будьте немного более конкретными, задавая вопрос: что вы пробовали, чего вы ожидаете и т. Д. См. [Как спросить] (http://stackoverflow.com/help/how- to-ask) – Nehal

ответ

16

Я использую:

deploy.yml

- name: Todo something 
    hosts: all 
    become: yes 
    become_user: root 
    become_method: su 

Когда вы выполняете Playbook передавать пароль в качестве дополнительного вар.

--extra-vars='ansible_become_pass=password' 
+9

Вы больше не используете флаг '--ask-get-pass', а не передаете пароль через' --extra-vars', поскольку передача его через '--extra-vars' будет сохраните свой пароль в своей истории (т.е. '~/.bash_history' в bash). – XtraSimplicity

+1

Вы можете сохранить свой пароль в хранилище для обеспечения безопасности –

2

От Ansible docs:

  • вы можете установить те в PlayBook, как @ Raul-Гюго, с become_user и become_user;
  • в качестве альтернативы, это также можно сделать в инвентаре, который позволяет устанавливать на хост или группу. Но тогда переменные получат префикс «ansible_»: ansible_become_user, ansible_become_user и т. Д. Вот почему игра, которую вы дали в своем вопросе, не сработала: она использовала имена переменных, которые используются в инвентаре.
Смежные вопросы