Ansible 2.1
Ansible 主机:Ubuntu 16.04
远程主机:CentOS 6.5
我对 Ansible 还很陌生。我有一个简单的 ansible 项目:
├── hosts
├── roles
│ └── setup
│ ├── defaults
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ └── templates
│ └── automation-agent.config.j2
└── site.yml
我用来运行剧本的命令:
ansible-playbook -i hosts site.yml --user admin --ask-pass
在远程主机上,我已设置admin
具有 root 权限的用户:
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
然而,其中一个剧本任务遇到了问题:
- name: Back up Automation Agent config file if exists
command: mv /etc/mongodb-mms/automation-agent.config /etc/mongodb-mms/automation-agent.config.bak
Ansible 报告:
TASK [setup : Back up Automation Agent config file if exists] ******************
fatal: [192.168.241.135]: FAILED! => {"changed": true, "cmd": ["mv", "/etc/mongodb-mms/automation-agent.config", "/etc/mongodb-mms/automation-agent.config.bak"], "delta": "0:00:00.002588", "end": "2016-06-01 22:57:55.577158", "failed": true, "rc": 1, "start": "2016-06-01 22:57:55.574570", "stderr": "mv: cannot move `/etc/mongodb-mms/automation-agent.config' to `/etc/mongodb-mms/automation-agent.config.bak': Permission denied", "stdout": "", "stdout_lines": [], "warnings": []}
注意到权限设置/etc/mongodb-mms/automation-agent.config
是0600
-rw-------. 1 mongod mongod 313 Jun 1 04:48 automation-agent.config
显然,需要有sudo
权限才能更改此文件。我尝试过 Ansible--become
和--become-user
,但没有成功。
ansible-playbook -i hosts site.yml --user admin --ask-pass --become --become-user admin
我应该在 Ansible 中做什么来获取sudo
并更改该文件?
答案1
您正在使用--become-user admin
,因此您本质上是在做sudo -u admin
,但您打算成为root
(sudo -u root
)。
不指定--become-user admin
或者使用--become-user root
,Ansible 默认会尝试成为root
。
如果您需要为成为指定密码root
,请使用--ask-become-pass
标志。
sudo
如果您不想在使用时提示输入密码sudo
,则sudoers
用户输入的内容admin
应如下:
admin ALL=(ALL) NOPASSWD:ALL