Ansible терпит неудачу с runuser: команда не найдена - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь подготовить сервер 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"
        ]
    }
}

1 Ответ

0 голосов
/ 16 октября 2019

Если вам нужно что-то добавить в PATH, вы можете попытаться установить среду для этого модуля. Я не пробовал это для модуля postgres, но он должен работать:

- postgres_user: # or other module name you are using
     user: foo # and other normal arguments
  environment:
     PATH: '$PATH:/sbin'

См. Также: https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html

...