错误 运行 postgresql96-setup initdb with Ansible

Error running postgresql96-setup initdb with Ansible

我正在尝试使用 Ansible 自动安装 PostgreSQL 数据库。

但是,下面的任务:

- name: Initialize Postgres
  command: /usr/pgsql-9.6/bin/postgresql96-setup initdb
  become: true

导致此错误:

fatal: [nexus-staging.chop.edu]: FAILED! => {
    "changed": true,
    "cmd": "/usr/pgsql-9.6/bin/postgresql96-setup initdb",
    "delta": "0:00:00.043311",
    "end": "2017-02-16 23:39:12.512727",
    "failed": true,
    "invocation": {
        "module_args": {
            "_raw_params": "/usr/pgsql-9.6/bin/postgresql96-setup initdb",
            "_uses_shell": true,
            "chdir": null,
            "creates": null,
            "executable": null,
            "removes": null,
            "warn": true
        },
        "module_name": "command"
    },
    "rc": 1,
    "start": "2017-02-16 23:39:12.469416",
    "stderr": "",
    "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"
    ],
    "warnings": []
}

/var/lib/pgsql/9.6/initdb.log中的错误是:

/usr/pgsql-9.6/bin/postgresql96-setup: line 140: runuser: command not found

有趣的是,如果我 运行 sudo /usr/pgsql-9.6/bin/postgresql96-setup initdb 在主机上,它 运行 成功...

如有任何帮助,我们将不胜感激。

尝试使用在任务中明确定义的 PATH 环境变量:

- name: Initialize Postgres
  command: /usr/pgsql-9.6/bin/postgresql96-setup initdb
  environment:
    PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  become: true

很可能路径值的设置对于交互式会话和 non-interactive shell 会话是不同的。


或者找到 runuser 可执行文件并在 运行 脚本之前添加路径:

command: PATH=/runuser/location:${PATH} /usr/pgsql-9.6/bin/postgresql96-setup initdb