我们有如下任务:
- template:
src=templates/nginx/default
dest=/etc/nginx/sites-available/default
owner=root
group=root
当我像这样运行它时:
ansible-playbook -i inventory/amazon site.yml -u ubuntu --become --limit=web
它可以工作。但是become
会让用户以 root 身份运行,并且如果 nginx 更新只是部署过程的一部分 - 则become
标志很危险。
如果我们删除它-ansible会出现如下错误:
TASK [nginx : template] ********************************************************
fatal: [*****.eu-west-1.compute.amazonaws.com]: FAILED! => {"changed": true, "failed": true, "gid": 1000, "group": "ubuntu", "mode": "0777", "msg": "chown failed", "owner": "ubuntu", "path": "/etc/nginx/sites-available/default", "size": 275, "state": "file", "uid": 1000}
那么.. 使用 ansible 更新 nginx 配置的正确方法是什么? 不用 可以做到吗--become
?
答案1
become: yes
在需要 root 权限的任务上使用。请参阅http://docs.ansible.com/ansible/become.html供官方参考。