web-dev-qa-db-ja.com

ansible-db2ユーザーとして「コマンドdb2update database manager configuration using svcenamedb2c_db2inst1」を実行します

LinuxサーバーにDB2をインストールするようにansibleをセットアップしています。実行する必要がある最後のステップを除いて、すべてが機能しています。

db2 update database manager configuration using svcename db2c_db2inst1

ただし、非特権ユーザーとして実行することはできません(cmd行からdb2isnt1ユーザーとして実行でき、機能します)。私が使用しているタスクは次のようになります。

  tasks:
    - name: setup svcename db2c_db2inst1
      remote_user: db2inst1
      Shell: db2 update database manager configuration using svcename db2c_db2inst1

しかし、次のエラーが発生します。

タスク[setupsvcename db2c_db2inst1] ********************************************致命的:[db2ansible]:失敗しました! => {"changed":true、 "cmd": "db2 update database manager configuration using svcename db2c_db2inst1"、 "delta": "0:00:00.003631"、 "end": "2017-02-13 16:39: 38.301753 "、" failed ":true、" rc ":127、" start ":" 2017-02-13 16:39:38.298122 "、" stderr ":"/bin/sh:1:db2:not found "、 "stdout": ""、 "stdout_lines":[]、 "警告":[]}

助言がありますか?

ありがとうございました。

ウォーレン。

1
warhansen

最後のタスクを次のように変更します。

tasks:
    - name: setup svcename db2c_db2inst1
      Shell: db2 update database manager configuration using svcename db2c_db2inst1
      become: yes
      become_user: db2inst1

これにより、db2inst1ユーザーでdb2コマンドが実際に実行されます。db2inst1ユーザーにはdb2実行可能ファイルが$PATHに含まれています。

2
13dimitar

db2バイナリへのフルパスを指定します。

1
EEAA

以前に「db2profile」をロードする必要があります。

tasks:
  - name: setup svcename db2c_db2inst1
    Shell: "$INSTANCEPATH/sqllib/db2profile; db2 update database manager configuration using svcename db2c_db2inst1"
    become: yes
    become_user: db2inst1

$INSTANCEPATHがdb2インスタンスのパスのホームである場合(例:/home/db2inst1

0
Tomy