У нас есть такие задачи:
- 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}
Итак .. Как правильно обновить конфигурацию nginx, используя ansible? Можно ли обойтись без --become
?
Использовать become: yes
по задаче, требующей root. Видеть http://docs.ansible.com/ansible/become.html для официальной справки.