enix.postgresql_replication

enix.postgresql_replication

Unixホスト上でPostgreSQLのレプリケーションクラスターをデプロイし、設定するための役割です。Ansibleを使用します。

要件

サポートされるターゲット:

  • Debian 8 "Jessie"
  • Debian 9 "Stretch"

役割変数

この役割はほぼすべてのデフォルトがプリロードされています。各変数はホストまたはグループの変数、インベントリ、またはプレイの中で上書きできます。設定に関するヘルプはdefaults/main.ymlの注釈付きデフォルトを参照してください。提供されるすべての変数はpostgresql_replication__で始まります。

この役割は、複数のクラスターを同じインベントリで使用できるように、Ansibleグループを使用して異なるクラスターのホスト役割を独立させる形で動作します。インベントリには3つの異なるグループを定義する必要があります。

  • postgresql_replication__group - このクラスターのホストのメイングループ、デフォルト: postgresql
  • postgresql_replication__group_master - マスターグループ、ここには1台のホストのみを含める必要があります。デフォルト: postgresql_master
  • postgresql_replication__group_replicas - レプリカホストを含むグループ、デフォルト: postgresql_replicas インベントリは最終的に以下の形式である必要があります(yaml形式の例):
all:
  children:
    postgresql:
      children:
        postgresql_master:
          hosts:
            db-01:
              ansible_host: 185.145.251.12
        postgresql_replicas:
          hosts:
            db-02:
              ansible_host: 185.145.251.243
  • postgresql_replication__user - レプリケーションノードの認証に使用するユーザー名。デフォルト: replicate
  • postgresql_replication__password - postgresql_replication__userのパスワード。本番クラスターではデフォルトを変更することが重要です。デフォルト: replicate
  • postgresql_replication__waldir - マスターノードからレプリケーションノードに送信されるWALファイルを保存するためのディレクトリ。

送信サーバーの設定。詳細な値については、(https://www.postgresql.org/docs/11/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-SENDER)を参照してください。

  • postgresql_replication__walsenders - 有効にするWAL送信プロセスの数。デフォルト: 3

  • postgresql_replication__walsegments - 保持するWALセグメントの数(16MBごと)。デフォルト: 64

  • postgresql_replication__trigger_file - スレーブノードでマスター操作をトリガーするために使用されるファイル。デフォルト: /tmp/MasterNow

  • postgresql_replication__bootstrap - 非常に重要です。この変数を"yesiwant"に設定すると、postgresql_replication__group_replicasに定義されたホスト上のすべてのデータが削除され、マスターから新たにpg_basebackupが行われます。この設定を許可し、グループ内でホストを正しく設定しないと、完全にデータを破壊する可能性があるため注意が必要です。

依存関係

使用法

Ansible Galaxyのrequirements.ymlを使用します。

- src: enix.postgresql_replication

これをプレイの役割に追加します:

- hosts: postgresql
  roles:
    - role: enix.postgresql_replication
      postgresql__version: 11
      postgresql__global_config_options:
        - option: listen_addresses
          value: '*'
        - option: log_min_duration_statement
          value: 1000
      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: "0.0.0.0/0", auth_method: md5}
        - {type: hostssl, database: replication, user: "{{ postgresql_replication__user }}", address: "0.0.0.0/0" ,auth_method: md5}
      postgresql__users:
        - {name: "{{ postgresql_replication__user }}", password: "{{ postgresql_replication__password }}", role_attr_flags: "REPLICATION"}

この役割をプレイブックとして使用することもできます。どのホストをプロビジョニングするか質問され、--extra-varsを使用してプレイをさらに構成できます。

$ ansible-playbook -i inventory --extra-vars='{...}' main.yml

まだやること

  • 本格的なGitLab / Travis CIの追加
  • モレキュールを使ったテストの追加

変更履歴

1.1.0

グループ名をpostgresql_masterおよびpostgresql_replicasに更新しました。 Ansible 2.8以降のグループ名要件に準拠しています。

1.0.0

初版。

ライセンス

GPLv2

著者情報

ロラン・コルベ laurent.corbes@enix.fr - http://www.enix.io

プロジェクトについて

Ansible role to deploy postgresql software with replication

インストール
ansible-galaxy install enix.postgresql_replication
ライセンス
Unknown
ダウンロード
16.1k
所有者
Enix