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

时间:2015-12-28 10:52:20

标签: ansible

我的loginuser是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

3 个答案:

答案 0 :(得分:23)

我用:

<强> deploy.yml

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

执行playbook时,将密码作为额外的var。

传递
 --extra-vars='ansible_become_pass=password'

答案 1 :(得分:4)

来自Ansible docs

  • 您可以将这些内容设置为@ Raul-Hugo,并使用become_userbecome_user;
  • 或者,它也可以在库存中完成,它允许按主机或组进行设置。但随后变量得到了#ans; ansible _&#34;前缀:ansible_become_useransible_become_user等。这就是您在问题中提供的剧本不起作用的原因:它使用了广告资源中使用的变量名称。

答案 2 :(得分:0)

您可以像下面这样成为root并安装软件包

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