2

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

何が欠けているのかわかりません。助けてください。

前もって感謝します!

4

1 に答える 1