検証用環境の構築作業で 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日目の人間が書いたものなので、間違いがあれば鉞投げてください。