Назад | Перейти на главную страницу

Ansible. Правильный способ скопировать конфиг nginx

У нас есть такие задачи:

- 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 для официальной справки.