mivek.postgresql

Ansibleの役割: PostgreSQL

CI

Debian/UbuntuサーバにPostgreSQLサーバをインストールして設定します。

要件

特別な要件はありません。この役割はrootアクセスを必要とするため、全体のbecome: trueを使ってプレイブックで実行するか、次のように役割を呼び出してください:

- hosts: database
  become: true
  roles:
    - role: mivek.postgresql

役割の変数

使用可能な変数は以下に示されています。デフォルト値もあります(defaults/main.ymlを参照):

postgresql_restarted_state: "restarted"

設定変更時のサービスの状態を設定します。推奨される値はrestartedまたはreloadedです。

postgresql_user: postgres
postgresql_group: postgres

PostgreSQLが実行されるユーザーとグループです。

postgresql_unix_socket_directories:
  - /var/run/postgresql

PostgreSQLのソケットが作成されるディレクトリ(通常は一つですが、複数可)。

postgresql_service_state: started
postgresql_service_enabled: true

PostgreSQLサービスの状態と、ブート時に起動するかどうかを制御します。

postgresql_auth_method: scram-sha-256

使用する認証方法。scram-sha-256またはmd5

postgresql_global_config_options:
  - option: unix_socket_directories
    value: '{{ postgresql_unix_socket_directories | join(",") }}'
  - option: log_directory
    value: 'log'
  - option: password_encryption
    value: "{{ postgresql_auth_method }}"

postgresql.confに設定するグローバル構成オプションです。PostgreSQLのバージョンが9.3より古い場合、少なくともこの変数を上書きし、optionunix_socket_directoryに設定する必要があります。option: log_directoryの値を別のパスに上書きすると、この役割がそのパスを作成します。

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: '127.0.0.1/32', auth_method: md5 }
  - { type: host, database: all, user: all, address: '::1/128', auth_method: md5 }
  - { type: host, database: all, user: all, addresses: ['10.0.0.1/32', '10.0.0.2/32'], auth_method: md5 }

pg_hba.confに設定されるホストベースの認証エントリを構成します。エントリには以下のオプションが含まれます:

  • type(必須)
  • database(必須)
  • user(必須)
  • addresses(アドレスのリスト)
  • address(これまたは次の二つのいずれかが必須)
  • ip_address
  • ip_mask
  • auth_method(必須)
  • auth_options(オプション)

上書きする場合、既存のエントリを保持するためにdefaults/main.ymlからすべてコピーしてください。

postgresql_locales:
  - 'en_US.UTF-8'

(Debian/Ubuntuのみ)PostgreSQLデータベースで使用されるロケールを生成するために使用します。

postgresql_databases:
  - name: exampledb # 必須; 残りはオプション
    lc_collate: # デフォルトは'en_US.UTF-8'
    lc_ctype: # デフォルトは'en_US.UTF-8'
    encoding: # デフォルトは'UTF-8'
    template: # デフォルトは'template0'
    login_host: # デフォルトは'localhost'
    login_password: # デフォルトは未設定
    login_user: # デフォルトは'postgresql_user'
    login_unix_socket: # デフォルトはpostgresql_unix_socket_directoriesの最初
    port: # デフォルトは未設定
    owner: # デフォルトはpostgresql_user
    state: # デフォルトは'present'

サーバ上に存在することを保証するデータベースのリストです。nameのみが必須で、他のすべてのプロパティはオプションです。

postgresql_users:
  - name: jdoe #必須; 残りはオプション
    password: # デフォルトは未設定
    encrypted: # デフォルトは未設定
    priv: # デフォルトは未設定
    role_attr_flags: # デフォルトは未設定
    db: # デフォルトは未設定
    login_host: # デフォルトは'localhost'
    login_password: # デフォルトは未設定
    login_user: # デフォルトは'{{ postgresql_user }}'
    login_unix_socket: # デフォルトはpostgresql_unix_socket_directoriesの最初
    port: # デフォルトは未設定
    state: # デフォルトは'present'

サーバ上に存在することを保証するユーザーのリストです。nameのみが必須です。

postgresql_privs:
  - database: "{{ item.database }}"
    login_host: "{{ item.login_host | default('localhost') }}"
    login_password: "{{ item.login_password | default(omit) }}"
    login_user: "{{ item.login_user | default(postgresql_user) }}"
    login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_directories[0]) }}"
    objs: "{{ item.objs | default(omit) }}"
    privs: "{{ item.privs | default(omit) }}"
    roles: "{{ item.roles }}"
    schema: "{{ item.schema | default(omit) }}"
    type: "{{ item.type | default(omit) }}"
    state: "{{ item.state | default('present') }}"

サーバ上に存在することを保証する権限のリストです。databaserolesのみが必須です。

postgresql_pgpass_users:
  - hostname: localhost
    port: 5432
    database: db1
    name: jdoe

pgpassに追加するユーザーのリストです。パスワードは必須ではなく、postgresql_users変数から取得されます。

postgresql_users_no_log: true

ユーザーデータ(パスワードなどの機密情報を含む可能性がある)の出力を管理する際に、情報を出力しないかどうか。

postgresql_privs_no_log: true

権限の出力を管理する際に、情報を出力しないかどうか。

postgresql_version: [OSに依存]
postgresql_data_dir: [OSに依存]
postgresql_bin_path: [OSに依存]
postgresql_config_path: [OSに依存]
postgresql_daemon: [OSに依存]
postgresql_packages: [OSに依存]

この役割のvarsディレクトリに含まれるファイルによって設定されるOSに特有の変数です。システムパッケージを使用していないPostgreSQLのバージョンを使用している場合を除いて、上書きしないでください。

依存関係

なし。

サンプルプレイブック

- hosts: database
  become: true
  roles:
    - mivek.postgresql

vars/main.ymlの中

postgresql_databases:
  - name: example_db
postgresql_users:
  - name: example_user
    password: supersecure

ライセンス

MIT / BSD

作成者情報

この役割は、Jeff Geerlingによって2016年に作成されました。彼はAnsible for DevOpsの著者です。

プロジェクトについて

PostgreSQL server for Linux.

インストール
ansible-galaxy install mivek.postgresql
ライセンス
mit
ダウンロード
331