用sudo运行ansible playbook

时间:2014-12-12 13:00:10

标签: ansible ansible-playbook

我有一本剧本,我想用sudo运行它。这是我的ansible剧本:

site.yml

---
- name: Server
  hosts: node1
  sudo: yes
  roles:
    - dbserver

当我运行它时,我得到了这个:

ansible-playbook -i hosts site.yml

PLAY [Server] ***************************************************************** 

GATHERING FACTS *************************************************************** 
fatal: [node1] => Missing sudo password

TASK: [dbserver | installing server] ****************************************** 
FATAL: no hosts matched or all hosts have already failed -- aborting


PLAY RECAP ******************************************************************** 
           to retry, use: --limit @/home/robe/site.retry

node1                      : ok=0    changed=0    unreachable=1    failed=0

然后我在site.yml上添加了ansible sudo传递:

---
- name: Server
  hosts: node1
  sudo_pass: ubuntu
  roles:
    - dbserver

我收到此错误:

ERROR: sudo_pass is not a legal parameter at this level in an Ansible Playbook

然后我的问题是:

  • 我是否在每个任务中添加了ansible sudo_pass属性?
  • 有没有办法在剧本中说sudo和sudo_pass?

1 个答案:

答案 0 :(得分:8)

sudo_pass不是Ansible知道的。如果您需要在node1上输入sudo密码,那么您将sudo: yes保留在剧本中,并且在运行您的剧本时,您必须在命令行上为Ansible提供sudo密码:

ansible-playbook -i hosts site.yml -K

请注意-K参数。然后它会在剧本开始之前询问你的sudo密码。

(长版本是--ask-sudo-pass顺便说一句。我不得不查看它)