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

Ansible 如何定义登录用户并成为playbook中的root用户,ansible,Ansible,我的登录用户是user1,我想用root执行playbook。我怎样才能做到这一点。如果我在cmdline中使用它,它不会像这样工作 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

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

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
我使用:

部署.yml

- name: Todo something
  hosts: all
  become: yes
  become_user: root
  become_method: su
执行playbook时,将密码作为额外变量传递

 --extra-vars='ansible_become_pass=password'
发件人:

  • 您可以在剧本中将这些设置为@Raul Hugo,使用
    been_user
    been_user
  • 或者,也可以在资源清册中完成,这允许按主机或组进行设置。但是变量得到了“ansible_”前缀:
    ansible_been_user
    ansible_been_user
    ,等等。这就是你在问题中给出的剧本不起作用的原因:它使用了清单中使用的变量名
您可以像下面那样成为root用户并安装软件包
欢迎来到SO,当问问题时请更具体一点:您尝试了什么,您期望什么,等等。请看,您最好使用
--ask been pass
标志,而不是通过
--extra vars
传递密码,因为通过
--extra vars
将密码存储在您的历史记录中(即bash中的
~/.bash\u history
)。为了安全起见,您可以将密码存储在vault中。由于变量
ansible\u ssh\u private\u key\u file
tasks:
    - name: install apache package
      become: yes
      become_user: root
      yum:
        name: httpd
        state: present

    - name: ensure apache is running
      become: yes
      become_user: root
      service:
        name: httpd
        state: started