如何定义登录用户并成为playbook中的root用户

sha*_*mim 12 ansible

我的loginuser是user1,我想用root执行playbook.我怎样才能做到这一点.如果我在cmdline中使用它不会像这样工作

ansible-playbook main.yaml -i hosts --user=git -k --become-user=root --ask-become-pass --become-method=su
Run Code Online (Sandbox Code Playgroud)

请告诉我如何实现这一点.

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
Run Code Online (Sandbox Code Playgroud)

Rau*_*ugo 23

我用 :

deploy.yml

- name: Todo something
  hosts: all
  become: yes
  become_user: root
  become_method: su
Run Code Online (Sandbox Code Playgroud)

当您执行playbook时,将密码作为额外的var传递.

 --extra-vars='ansible_become_pass=password'
Run Code Online (Sandbox Code Playgroud)

  • 你最好使用`--ask-become-pass`标志,而不是通过`--extra-vars`传递密码,因为传递它通过`--extra-vars`会将你的密码保存在你的历史(即bash中的`〜/ .bash_history`). (14认同)
  • 您可以将密码存储在保管库中以确保安全 (2认同)

Dav*_*nic 5

来自Ansible 文档

  • 您可以将剧本中的那些设置为@Raul-Hugo,使用become_userbecome_user
  • 或者,它也可以在清单中完成,允许按主机或组进行设置。但是随后变量获得“ansible_”前缀:ansible_become_useransible_become_user等。这就是为什么您在问题中给出的剧本不起作用:它使用了清单中使用的变量名称。