如何使用--ask-become-pass with ansible 1.9.4

时间:2015-10-27 14:40:03

标签: ansible ansible-playbook

我是ansible的新用户。我正在尝试使用权限提升功能将一行添加到root拥有的文件中。

以下文档告诉我,我可以使用--ask-become-pass和become_user提示输入become_user密码,但我不知道如何使用它。

http://docs.ansible.com/ansible/become.html

我目前使用的代码如下:

- name: Add deploy to sudoers
        remote_user: me
        become: yes
        become_method: su
        ask_become_pass: true
        lineinfile:
          dest=/etc/somefile
          line=sometext
          regexp="^sometext"
          owner=root
          state=present
          insertafter=EOF
          create=True

这给了我错误: 错误:ask_become_pass不是Ansible任务或处理程序中的合法参数

有谁能让我知道我在这里做错了什么?

提前致谢。

2 个答案:

答案 0 :(得分:8)

文档说ask_become_pass是命令行参数。这意味着你必须在执行剧本时使用它:

ansible-playbook *playbook-name* --ask-become-pass
在这种情况下,ansible将要求输入密码。

另一个选项ansible_become_pass可以在清单中使用,也可以作为extra_var使用。在那里你可以在执行剧本时设置密码。

答案 1 :(得分:0)

@ Capri90 展示了如何使用

<强> BUT

当使用--ask-become-pass时,用户需要每次都手动输入密码,所以要避免遵循以下步骤

而是使用以下配置

  

<强> playbook.yml

---
- hosts: yo_my_ips
  become: yes
  become_user: root
  tasks: 
  - name: Install latest version of "npm" 
    apt:
      name: npm
      state: latest
  

<强> ansible.cfg

[defaults]
inventory = yo_ansible_inventory.txt
  

<强> yo_ansible_inventory.txt

注意ansible_become_pass被触发时将使用sudo apt-get install npm

[all:vars]
ansible_connection=ssh
ansible_user=tom    
ansible_become_pass=jerrypassword

[yo_my_ips]
192.168.1.105