Я не уверен, что понимаю, как и почему пользователь postgres
не может войти в систему, чтобы проверить, существует ли база данных или нет, но следующий Playbook ...
---
- hosts: concourse_db
roles:
- role: geerlingguy.postgresql
tags:
- concourse_db
vars:
postgresql_restarted_state: "restarted"
postgresql_service_state: started
postgresql_service_enabled: true
postgresql_hba_entries:
- { type: local, database: all, user: postgres, auth_method: peer }
- { type: local, database: all, user: all, auth_method: peer }
- { type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5 }
- { type: host, database: all, user: all, address: '::1/128', auth_method: md5 }
postgresql_locales:
- 'en_US.UTF-8'
postgresql_databases:
- name: concourse
owner: concourse
login_user: postgres
state: present
postgresql_users:
- name: concourse
password: concoursepassword
encrypted: true
db: concourse
login_user: postgres
state: present
...
Выдают следующие ошибки:
TASK [geerlingguy.postgresql : Ensure PostgreSQL is started and enabled on boot.] ***************************************************************************************************
ok: [10.144.0.137]
TASK [geerlingguy.postgresql : Ensure PostgreSQL databases are present.] ************************************************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ProgrammingError: role "concourse" does not exist
failed: [10.144.0.137] (item={'name': 'concourse', 'owner': 'concourse', 'login_user': 'postgres', 'state': 'present'}) => {"changed": false, "item": {"login_user": "postgres", "name": "concourse", "owner": "concourse", "state": "present"}, "msg": "Database query failed: role \"concourse\" does not exist\n"}
to retry, use: --limit @/Users/pd028300/Documents/development/Ansible/concourse_ci_playbook/playbook_2.retry
Я не уверен, должен ли он использовать postgres
user или пользователя, которого я создал, concourse
в этом случае.
Файл требований Ansible-Galaxy
---
# https://galaxy.ansible.com/geerlingguy/postgresql
- src: geerlingguy.postgresql
version: 1.4.5
...
Информация о целевой системе
[email protected]:~ ( concourse-ci-db.novalocal )
12:38:42 $ uname -a
Linux concourse-ci-db.novalocal 3.10.0-957.1.3.el7.x86_64 #1 SMP Mon Nov 26 17:43:08 PST 2018 x86_64 x86_64 x86_64 GNU/Linux
[email protected]:~ ( concourse-ci-db.novalocal )
12:38:44 $ cat /etc/oracle-release
Oracle Linux Server release 7.6
Версии Ansible и Ansible Playbook
$ ansible --version && ansible-playbook --version
ansible 2.7.6
config file = /Users/pd028300/Documents/development/Ansible/concourse_ci_playbook/ansible.cfg
configured module search path = ['/Users/pd028300/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /Users/pd028300/.pyenv/versions/3.7.2/lib/python3.7/site-packages/ansible
executable location = /Users/pd028300/.pyenv/versions/3.7.2/bin/ansible
python version = 3.7.2 (default, Jan 22 2019, 09:35:39) [Clang 9.0.0 (clang-900.0.39.2)]
ansible-playbook 2.7.6
config file = /Users/pd028300/Documents/development/Ansible/concourse_ci_playbook/ansible.cfg
configured module search path = ['/Users/pd028300/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /Users/pd028300/.pyenv/versions/3.7.2/lib/python3.7/site-packages/ansible
executable location = /Users/pd028300/.pyenv/versions/3.7.2/bin/ansible-playbook
python version = 3.7.2 (default, Jan 22 2019, 09:35:39) [Clang 9.0.0 (clang-900.0.39.2)]
Кажется, это связано с этим: PR https://github.com/geerlingguy/ansible-role-postgresql/pull/31
в этих строках:
При переключении файлов databases.yml и users.yml возникли новые ошибки.
TASK [geerlingguy.postgresql : Ensure PostgreSQL is started and enabled on boot.] ***************************************************************************************************
ok: [10.144.0.137]
TASK [geerlingguy.postgresql : Ensure PostgreSQL users are present.] ****************************************************************************************************************
failed: [10.144.0.137] (item=None) => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": false}
fatal: [10.144.0.137]: FAILED! => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": false}
@ predatorian3 Я только что проверил это на случай, если вам интересно:
Это происходит потому, что пользователи создаются раньше баз данных. Поэтому, когда вы создаете пользователя и ссылаетесь на базу данных - нет базы данных, на которую можно было бы ссылаться, и она выдает ошибки
А затем вы создаете базу данных для ссылки на пользователя - ну, пользователя нет. Вы должны сначала создать пользователя без ссылки на базу данных, а затем создать базу данных.
Эта проблема помечена как устаревшая из-за отсутствия активности в последнее время. Если больше не будет активности, вопрос будет закрыт еще через 30 дней. Спасибо Вам за Ваш вклад!
Прочтите это сообщение в блоге, чтобы узнать, почему я помечаю проблемы как устаревшие.
Была такая же проблема сегодня с доступной версией галактики
Эта проблема больше не помечена для закрытия.
Эта проблема помечена как устаревшая из-за отсутствия активности в последнее время. Если больше не будет активности, вопрос будет закрыт еще через 30 дней. Спасибо Вам за Ваш вклад!
Прочтите это сообщение в блоге, чтобы узнать, почему я помечаю проблемы как устаревшие.
Испытываю ту же проблему
Эта проблема больше не помечена для закрытия.
Эта проблема помечена как устаревшая из-за отсутствия активности в последнее время. Если больше не будет активности, вопрос будет закрыт еще через 30 дней. Спасибо Вам за Ваш вклад!
Прочтите это сообщение в блоге, чтобы узнать, почему я помечаю проблемы как устаревшие.
не устаревший
Эта проблема больше не помечена для закрытия.
Эта проблема помечена как устаревшая из-за отсутствия активности в последнее время. Если больше не будет активности, вопрос будет закрыт еще через 30 дней. Спасибо Вам за Ваш вклад!
Прочтите это сообщение в блоге, чтобы узнать, почему я помечаю проблемы как устаревшие.
не устаревший
Эта проблема больше не помечена для закрытия.
У меня была аналогичная проблема со следующей ошибкой
TASK [geerlingguy.postgresql : Ensure PostgreSQL users are present.] *****************************
failed: [production] (item=None) => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": false}
fatal: [production]: FAILED! => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result", "changed": false}
Я рекомендую вам попробовать установить postgres_users_no_log: false
в свой файл переменных и посмотреть, в чем ошибка. В моем случае это было связано с зависимостью psycopg2
(которую я уже устанавливал с помощью python3-psycopg2
, но отсутствовал ansible_python_interpreter: /usr/bin/python3
в моих переменных)
Эта проблема помечена как устаревшая из-за отсутствия активности в последнее время. Если больше не будет активности, вопрос будет закрыт еще через 30 дней. Спасибо Вам за Ваш вклад!
Прочтите это сообщение в блоге, чтобы узнать, почему я помечаю проблемы как устаревшие.
Этот вопрос был закрыт из-за бездействия. Если вы считаете, что это ошибка, повторно откройте проблему или отправьте новую проблему с соответствующими сведениями.
Самый полезный комментарий
Была такая же проблема сегодня с доступной версией галактики