ansible - 以 db2 用户身份运行“命令 db2 使用 svcename db2c_db2inst1 更新数据库管理器配置”

ansible - 以 db2 用户身份运行“命令 db2 使用 svcename db2c_db2inst1 更新数据库管理器配置”

我正在设置 ansible 以在 Linux 服务器上安装 DB2。除了最后一步我需要运行之外,一切正常:

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

但我收到以下错误:

任务 [设置 svcename db2c_db2inst1] ******************************************** 致命:[db2ansible]:失败! => {“changed”: true,“cmd”: “db2 使用 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: 未找到”,“stdout”: “”,“stdout_lines”: [],“warnings”: []}

有什么建议么?

谢谢。

沃伦。

答案1

像这样修改你的上一个任务:

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

这实际上将db2使用 db2inst1 用户执行该命令,该命令db2包含可执行文件$PATH

答案2

提供二进制文件的完整路径db2

答案3

您必须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

$INSTANCEPATHdb2 实例的路径主目录是什么时候(例如/home/db2inst1

相关内容