[Ansible][PostgreSQL]Ansible에서 PostgreSQL의 Create DB 오류

개요



이전 프로젝트에서 잘 움직인 Postgresql의 Create DB 부분을
새로운 안건에도 사용하게 되었습니다.

이전 프로젝트보다 OS도 PostgreSQL도 버전이 오르기 때문에,
굉장히 보고 설정 내용이 바뀌었는지 확인해 본 결과,
같은 OS와 PostgreSQL의 버전을 이용하고 있는 분의 설정 내용은 자신의 통일했습니다.
그러나 다음과 같은 오류가 발생했습니다.
그래서, 에러 메시지(2개)를 봐 왔을 것인 여러분에게 안내 드립니다."systemd could not find the requested service \"'avahi-daemon'\""unable to connect to database: FATAL: Peer authentication failed for user \"postgres\"\n"
그리고, 이하의 대응으로 잘 해결할 수 있었으므로, 기사를 투고합니다.


서버 사양



· CentOS 7.2

· PostgreSQL 9.4

and etc

해결 방법



🌟 우선 "the python psycopg2 module is required" 오류입니다.
오류 메시지와 같이 python psycopg2 모듈이 필수이므로,
모듈을 설치하는 과정을 postgresql을 설치할 때 함께합시다.

main.yml
# postgresql94のインストール
- name: install postgresql94
  yum: name={{ item }} enablerepo=pgdg94 state=present
  with_items:
  - postgresql94-server
  - postgresql94-contrib
  - python-psycopg2

🌟다음은 여기 "unable to connect to database: FATAL: Peer authentication failed for user \"postgres\"\n" 오류입니다.
이쪽은, Ansible의 쓰는 방법이 바뀐 것 같습니다.
다음과 같이 대응합시다.

main.yml
# データベース追加
- name: Create the RLetters PostgreSQL database
  become: yes
  become_user: postgres
  postgresql_db: db={{ dbname }}
  tags: postgresql

🌟 아마 원인은, OS가 업되어 제공하고 있는 패키지가 바뀌었기 때문일까라고 생각하고 있습니다.
(🔺 만약 원인이 잘못되면, 코멘트 부탁드립니다!!!!!!👏)

요약



어쨌든, 상단의 대응으로 잘 움직입니다.
그러나 의문이 하나 있습니다.

다음 내용은 🔗 Ansible 문서
🔗 "postgresql_db - Add or remove PostgreSQL databases from a remote host." 의 내용 일부입니다.

Examples

examples.yml
# Create a new database with name "acme"
- postgresql_db: name=acme
# Create a new database with name "acme" and specific encoding and locale
# settings. If a template different from "template0" is specified, encoding
# and locale settings must match those of the template.
- postgresql_db: name=acme
                 encoding='UTF-8'
                 lc_collate='de_DE.UTF-8'
                 lc_ctype='de_DE.UTF-8'
                 template='template0'

그리고

Note

This module uses psycopg2, a Python PostgreSQL database adapter. You must ensure that psycopg2 is installed on the host before using this module. If the remote host is the PostgreSQL server (which is the default case), then PostgreSQL must also be installed on the remote host. For Ubuntu-based systems, install the postgresql, libpq-dev, and python-psycopg2 packages on the remote host before using this module.

우선, Ubuntu 베이스는 아니지만, 필요하게 된 것이므로, 이하의 내용은 갱신할 필요가 있으면 ...

Ubuntu-based systems, install the postgresql, libpq-dev, and python-psycopg2 packages on the remote host before using this module

그리고 위의 예의 내용으로는 할 수 없다!

어쨌든 두 가지 내용 모두 잘못되었습니다.
CentOS나 PostgreSQL의 버전이 오르기 때문에 그럴까・・・

이상입니다! 👏

좋은 웹페이지 즐겨찾기