Я пытаюсь подготовить сервер PostgreSQL, используя роль galaxyproject.postgresql . При использовании Vagrant box generic/centos7
эта роль завершается ошибкой с сообщением
TASK [galaxyproject.postgresql : Initialize database (RedHat >= 7)] ************
fatal: [postgresql]: FAILED! => {"changed": true, "cmd": ["/usr/pgsql-9.6/bin/postgresql96-setup", "initdb"], "delta": "0:00:00.181409", "end": "2019-10-16 01:45:59.495713", "msg": "non-zero return code", "rc": 1, "start": "2019-10-16 01:45:59.314304", "stderr": "", "stderr_lines": [], "stdout": "Initializing database ... failed, see /var/lib/pgsql/9.6/initdb.log", "stdout_lines": ["Initializing database ... failed, see /var/lib/pgsql/9.6/initdb.log"]}
В файле /var/lib/pgsql/9.6/initdb.log
есть следующее сообщение
/usr/pgsql-9.6/bin/postgresql96-setup: line 143: runuser: command not found
На целевом узле runuser
доступно
[root@postgresql ~]# which runuser
/sbin/runuser
Таким образом, проблема заключается в том, что /sbin
не на PATH
, когда Ansible работает на целевых узлах.
Как сделать команду runuser
доступной для Ansible? Конечно, я не хочу менять внешнюю роль galaxyproject.postgresql
.
Когда я вывожу PATH
с помощью отладки Ansible, это показывает, что PATH
не включает sbin.
TASK [galaxyproject.postgresql : debug] ****************************************
ok: [postgresql] => {
"PATH": {
"changed": true,
"cmd": "echo $PATH",
"delta": "0:00:00.010478",
"end": "2019-10-16 02:12:14.882341",
"failed": false,
"rc": 0,
"start": "2019-10-16 02:12:14.871863",
"stderr": "",
"stderr_lines": [],
"stdout": "/usr/local/bin:/usr/bin",
"stdout_lines": [
"/usr/local/bin:/usr/bin"
]
}
}