我正在设置 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
$INSTANCEPATH
db2 实例的路径主目录是什么时候(例如/home/db2inst1
)