Ansible сообщает "Отказано в доступе" при выдаче команды на удаленном хосте
Ansible 2.1
Ansible host: Ubuntu 16.04
Удаленный хост: CentOS 6.5
Я совсем новичок в Ansible. У меня простой простой проект:
├── hosts
├── roles
│ └── setup
│ ├── defaults
│ │ └── main.yml
│ ├── tasks
│ │ └── main.yml
│ └── templates
│ └── automation-agent.config.j2
└── site.yml
Команда, которую я использовал для запуска playbook:
ansible-playbook -i hosts site.yml --user admin --ask-pass
На удаленном хосте я настроил пользователя admin
с правами root:
root ALL=(ALL) ALL
admin ALL=(ALL) ALL
Однако, одна из задач playbook столкнулась с проблемой:
- 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's --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