LoginSignup
11
3

More than 5 years have passed since last update.

Ansible で PostgreSQL の initdb 処理

Posted at

検証用環境の構築作業で Ansible に手を出してみた。
まだ ansible歴3日目だ。

CentOS7環境に PostgreSQL 10 を入れようとした。
手順は PostgreSQL のダウンロードサイト
に従った。

あっちこっち参考にして、 yum でPostgreSQL のリポジトリの登録と

  • postgres
  • postgres-server
  • python-psycopg2

のインストールまで Ansible Playbook で行った。

で、次は initdb なのだが、ダウンロードサイトの手順に従うなら
/usr/pgsql-10/bin/postgresql-10-setup initdb
とするところである。

以下のようにしてみた。

---

- hosts: postgresql,zabbixproxy
  become: yes
  tasks:
  - name: "Setup Database Cluster"
    shell: "/usr/pgsql-10/bin/postgresql-10-setup initdb"
    args:
      creates: /var/lib/pgsql/10/data/postgresql.conf

コツは creates オプションを指定すること。これで冪等性を保証し、すでにインストールしてある場合はスキップされるようになる。
Ansible の Shell Module
※ なお、このオプションは Command Module にもある。

このオプションを見つける前は ignore-error して直後の fail の when条件を stdout が「Data directory is not empty!」でないとき・・・ってやってみたりした(^^;

なお、postgresql-10-setupスクリプトは直接 initdb コマンドを実行する場合と違い、postgresユーザーで実行する必要はなく、 root で実行できる。

次はサービス起動か・・・。

なお、この記事は Ansible 3日目の人間が書いたものなので、間違いがあれば鉞投げてください。

11
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3