Я настраиваю ansible для установки DB2 на сервере Linux. Все работает, кроме последнего шага, который мне нужно запустить:
db2 update database manager configuration using svcename db2c_db2inst1
Однако я не могу запустить это как непривилегированный пользователь (я могу запустить его как пользователь db2isnt1 из строки cmd, и он работает). Задача, которую я использую, выглядит так:
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: not found ", "stdout": "", "stdout_lines": [], "warnings": []}
Какие-либо предложения?
Спасибо.
Уоррен.
Измените последнюю задачу следующим образом:
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
Дайте полный путь своему db2
двоичный.
Вы должны загрузить "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
)