Ansible设置完整播放密码

时间:2015-12-27 07:12:33

标签: passwords ansible ansible-playbook privileges

我正在使用Ansible来定义许多需要sudo权限的任务(用户运行任务是一个非root用户,他是sudo组的成员)。为此,我每次定义becomebecome_methodbecome_pass时都会使用以下代码。

# This is a sample task which needs sudo privileges
- name: copy the dnsmasq file
  template: src="templates/dnsmasq.conf" dest="/etc/dnsmasq.conf" owner="{{ROOT_USER}}" mode="0644" group="{{ROOT_USER}}"
  become: yes
  become_method: sudo
  become_pass: "{{ remote_user_password }}"
  notify: Restart dnsmasq 

我想在游戏级别becomebecome_methodbecome_pass设置以下属性。我可以设置成为,成为_method,但我得到ERROR: become_pass is not a legal parameter of an Ansible Play这当然有意义,但那么什么是在游戏级别定义密码的属性?

我还在ansible_hosts文件(我们定义主机)中使用ansible_become=yes ansible_become_method=sudo ansible_become_user=MY_NON_ROOT_USER ansible_become_pass=My_PASSWD尝试了权限提升,但它仍然不允许任务在没有sudo的情况下运行并且拒绝权限。

有没有办法为剧本定义一次性密码以非交互方式运行,这样我就不必为每项任务定义成为属性。

1 个答案:

答案 0 :(得分:1)

我用:

<强> deploy.yml

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

执行playbook时,会传递密码,如额外的var。

 --extra-vars='ansible_become_pass=password'