Ansible のエスカレーション機能を使用して、権限のないユーザーとしてロール内の特定のタスクを実行しようとしましたが、ロールを呼び出して Playbook を実行するルート ユーザーによってタスクが実行されます。私の問題は、同じロールの root ユーザーを使用して DB2 製品をインストールおよび構成した後、DB2 for LUW に新しいデータベースを作成することに関連しています。新しいデータベースを作成するシェル スクリプトがありますが、(root ではなく) db2inst1 として実行する必要があります。公式のAnsibleドキュメントとstackoverflowのいくつかのスレッドで提案されているように、become、become_user、become_methodを試しました。
これが私の Ansible ロールの抜粋です。
- name: Execution of the creation script
become: yes
become_method: su
become_user: db2inst1
shell: /home/CreateDb.sh TESTDB
また:
- name: Creation of a test DB
script: CreateDb.sh TESTDB
become: yes
become_method: su
become_user: db2inst1
この行も my に追加しましたansible.cfg
:
allow_world_readable_tmpfiles=True
また、Ansible パッケージを 2.0.1 から 2.1 にアップグレードしました。しかし、これは効果がなく、タスクは引き続き root として実行されます。
次のようにプレイブックを実行します。
ansible-playbook playbooks/db2-test.yml -u root -k
何が欠けているのかわかりません。助けてください。
前もって感謝します!