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
Другие вопросы по тегам