4

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    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 . Я попробовал --become и --become-user , но безуспешно.

ansible-playbook -i hosts site.yml --user admin --ask-pass --become --become-user admin

Что мне делать в Ansible, чтобы получить sudo и внести изменения в этот файл?

1 ответ1

2

Вы используете --become-user admin , поэтому вы, по сути, делаете sudo -u admin , но намереваетесь стать пользователем root (sudo -u root).

Не указывайте --become-user admin или не используйте --become-user root , и Ansible по умолчанию попытается стать пользователем root .

Если вам нужно указать пароль для получения root , используйте --ask-become-pass .

Если вы не хотите, чтобы при использовании sudo sudo пароль sudo , ваша запись sudoers для admin должна выглядеть следующим образом:

admin   ALL=(ALL)       NOPASSWD:ALL

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .