Я попытался использовать функцию эскалации 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
Я не знаю, чего мне не хватает; пожалуйста, помогите мне.
Заранее спасибо!