カテゴリー
Linux

【Ansible】【Vagrant】CentOS 7 での PostgreSQL 9.6、phpPgAdmin 環境構築メモ

を作るにあたって、情報源や、勉強になったことなどをノートしていきます♪

PostgreSQL 9.6 リポジトリ

PostgreSQL 9.6 リポジトリの配布元リスト。CentOS 7 用の リポジトリを探す参考になった。

PostgreSQL の initdb

PostgreSQL の initdb の冪等性担保の参考になった。

PostgreSQL の initdb の参考になった。

ファイルの存在をチェックし、その結果を後で使う方法の参考になった。

具体的には、initdb を行ったかどうかを判定するのに、後のタスクで when オプションを使って initdb 実行後に生成されるファイルの存在チェックを行うのに使用した。

---
- name: Get status whethere db cluster is exist or not
  stat: 
    path: /var/lib/pgsql/9.6/data/PG_VERSION
  register: dbcluster

- name: Create a new PostgreSQL database cluster
  shell: /usr/pgsql-9.6/bin/initdb -D /var/lib/pgsql/9.6/data --no-locale
  become: yes
  become_user: postgres
  when: not dbcluster.stat.exists

... 略 ...

設定ファイル

設定ファイルで変数を使用しない場合は、template モジュールではなく copy モジュールを使う、と決定するのに役に立った。

PostgreSQL ユーザのパスワード

パスワード無しのユーザにパスワードを設定する場合は、冪等性を保つために、ログインパスワードがあたかもあるかのように設定する。

状況としては、postgresql_user モジュールを使って、postgres ユーザにパスワードを設定したい。

インストール直後の状態では、postgres ユーザにはパスワードが設定されていないため、password オプションにパスワードを設定すれば良い。

ただし、2回目以降になると既にパスワードが設定されているため、パスワード未入力のエラーとなる。

そこで login_password オプションにパスワードを設定すればログインが可能になりエラーとならなくなる。

これで冪等性が保たれると思ったのだが、login_password オプションに予め値を設定しておくことで、逆に、パスワードが設定されていない 1 回目に問題が発生しないか心配になる。

試してみたところ、パスワードの設定されていないユーザに対して、login_password オプションを設定して postgresql_user モジュールを使用しても問題なかった。

以下は、その成果のコード。

---
... 略 ...

- name: Set password to database superuser
  postgresql_user:
    user: postgres
    password: "{{ postgres_su_pass }}"
    login_password: "{{ postgres_su_pass }}"
  notify: Restart postgresql-9.6

おわりに

ではシェルで環境構築をしておりました。

現在、

にて Ansible での環境構築を勉強しております。

コードを完成していく中で苦労したことや役に立ったことを、今後もメモできれば存じますの♪

以上です。

コメントを残す