Как выполнить определенную задачу в качестве непривилегированного пользователя из роли Ansible при подключении с правами root

Я попытался использовать функцию эскалации Ansible для запуска определенной задачи в рамках роли в качестве непривилегированного пользователя, но задача по-прежнему выполнялась пользователем root, с которым я запускаю свою пьесу, вызывающую роль. Моя проблема связана с созданием новой БАЗЫ ДАННЫХ в DB2 для LUW после установки и настройки продукта DB2 с использованием пользователя root с той же ролью. У меня есть сценарий оболочки, который создает новую БАЗУ ДАННЫХ, но его следует запускать как db2inst1 (не root). Я пробовал с be, be_user и be_method, как это было предложено в официальных документах Ansible и в некоторых потоках здесь, в stackoverflow.

Вот выдержка из моей роли Ansible:

 - name: Execution of the creation script
   become: yes
   become_method: su
   become_user: db2inst1
   shell: /home/CreateDb.sh TESTDB

OR:

 - name: Creation of a test DB
   script: CreateDb.sh TESTDB
   become: yes
   become_method: su
   become_user: db2inst1

Я также добавил эту строку в свой ansible.cfg :

allow_world_readable_tmpfiles=True

Я также обновил пакет Ansible с 2.0.1 до 2.1; но это не имеет никакого эффекта, и задача по-прежнему выполняется от имени пользователя root.

Я запускаю свою книгу следующим образом:

ansible-playbook playbooks/db2-test.yml -u root -k

Я не знаю, чего мне не хватает; пожалуйста, помогите мне.

Заранее спасибо!


person Agdmoun khalid    schedule 17.06.2016    source источник


Ответы (1)


Важно различать пользователя, который может подключаться к целевой машине, и пользователя, от имени которого выполняется задача (становится). Оба примера, которые вы вставили (модуль сценария и модуль оболочки), выглядят примерно правильно. Каковы признаки того, что эти задачи все еще выполняются с правами root? Я бы добавил -vvvv к вашему ansible-playbook запуску, чтобы более подробно увидеть, что делает ansible, включая информацию о пользователе.

person tphummel    schedule 19.06.2016
comment
Спасибо за ответ; синтаксис, который я использовал здесь, правильный. Проблема заключалась в том, что исполняемый скрипт CreateDb.sh был недостаточно корректен для удаленного запуска с помощью ansible. Мне пришлось внести некоторые изменения в скрипт, чтобы он заработал. - person Agdmoun khalid; 20.06.2016