Postgresql Ansible失败,运行用户:未找到命令
我正在尝试使用角色设置PostgreSQL server。使用Vagrant boxPostgresql Ansible失败,运行用户:未找到命令,postgresql,path,ansible,Postgresql,Path,Ansible,我正在尝试使用角色设置PostgreSQL server。使用Vagrant boxgeneric/centos7此角色失败并显示消息 TASK [galaxyproject.postgresql : Initialize database (RedHat >= 7)] ************ fatal: [postgresql]: FAILED! => {"changed": true, "cmd": ["/usr/pgsql-9.6/bin/postgresql96-setu
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
因此,问题似乎是当Ansible在目标节点上运行时,/sbin
不在路径上
如何使runuser
命令可供Ansible使用?当然,我不想更改外部角色galaxyproject.postgresql
当我使用Ansible debug输出PATH
时,它显示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"
]
}
}
如果您需要在路径中添加一些内容,可以尝试为此模块设置环境。我没有在postgres模块中尝试过这个,但它应该可以工作:
- postgres_user: # or other module name you are using
user: foo # and other normal arguments
environment:
PATH: '$PATH:/sbin'
另请参见:如果在目标主机上使用与playbook相同的用户手动运行命令,会发生什么情况?