honzamach.postgresql

役割 postgresql

  • Ansible Galaxy ページ <https://galaxy.ansible.com/honzamach/postgresql>__
  • GitHub リポジトリ <https://github.com/honzamach/ansible-role-postgresql>__
  • Travis CI ページ <https://travis-ci.org/honzamach/ansible-role-postgresql>__

この役割は、PostgreSQL <https://www.postgresql.org/>__ データベースを便利にインストールするための Ansible ロールです。

このロールは、できるだけシンプルに保つことを目的としており、PostgreSQL サービスの基本的なインストールと設定のみを行います。高度な設定調整は手動で行う必要があります。このロールは最新のバージョン12をインストールし、オプションで以前の10.xおよび11.xバージョンを削除します。ただし、実際の移行は非常に複雑なプロセスであり、手動で行う必要があります。

目次:

  • :ref:section-role-postgresql-installation
  • :ref:section-role-postgresql-dependencies
  • :ref:section-role-postgresql-usage
  • :ref:section-role-postgresql-variables
  • :ref:section-role-postgresql-files
  • :ref:section-role-postgresql-author

このロールは、MSMS <https://github.com/honzamach/msms>__ パッケージの一部です。 共通機能のいくつかは、その :ref:マニュアル <section-manual> に記載されています。

.. _section-role-postgresql-installation:

インストール

Ansible Galaxy <https://galaxy.ansible.com/>__ から honzamach.postgresql <https://galaxy.ansible.com/honzamach/postgresql>__ という役割をインストールするには、以下のコマンドを使用してください::

ansible-galaxy install honzamach.postgresql

GitHub <https://github.com>__ から直接この役割をインストールするには、ansible-role-postgresql <https://github.com/honzamach/ansible-role-postgresql>__ リポジトリをクローンして、以下のコマンドを使用してください::

git clone https://github.com/honzamach/ansible-role-postgresql.git honzamach.postgresql

現在、直接 Git クローンを使用する利点は、新しいバージョンがリリースされたときに簡単に役割を更新できることです。

.. _section-role-postgresql-dependencies:

依存関係

このロールは他のロールに依存していません。

以下のロールがこのロールに直接依存しています:

  • :ref:griffin <section-role-griffin>
  • :ref:mentat <section-role-mentat>
  • :ref:mentat_dev <section-role-mentat-dev>

.. _section-role-postgresql-usage:

使用法

インベントリファイル inventory の例::

[servers_postgresql]
your-server

役割プレイブックファイル role_playbook.yml の例::

- hosts: servers_postgresql
  remote_user: root
  roles:
    - role: honzamach.postgresql
  tags:
    - role-postgresql

使用例::

# 全てを実行する:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml

# パッケージをインストールする前にパッケージキャッシュを更新する:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml --extra-vars '{"hm_pgsql__apt_force_update":"yes"}'

これらの設定の原則に従うことをお勧めします。

  • inventory/group_vars/all/vars.yml ファイルを作成/編集し、管理されている全てのサーバーに対していくつかの妥当なデフォルト設定を定義します。例::

      hm_pgsql__monitoring_password: "{{ vault_hm_pgsql__monitoring_password }}"
    
  • :ref:vault <section-overview-vault> 暗号化ファイル inventory/group_vars/all/vault.yml を作成/編集し、バックアップ暗号化パスワードを保存します。::

      vault_hm_pgsql__monitoring_password: something-so-secret-no1-is-gonna-guess
    
  • 特定のサーバー向けの設定をカスタマイズするために inventory/host_vars/[your-server]/vars.yml ファイルを使用します。すべての利用可能なオプションについては、:ref:section-role-postgresql-variables を参照してください。

.. _section-role-postgresql-variables:

設定変数

内部ロール変数


.. envvar:: hm_pgsql__apt_key_url

    PostgreSQL パッケージの署名用の GPG 鍵への URL。

    * *タイプ:* ``string``
    * *デフォルト:* ``"https://www.postgresql.org/media/keys/ACCC4CF8.asc"``

.. envvar:: hm_pgsql__apt_key_id

    署名鍵の識別子。

    * *タイプ:* ``string``
    * *デフォルト:* ``"ACCC4CF8"``

.. envvar:: hm_pgsql__apt_repository

    PostgreSQL リポジトリの場所。

    * *タイプ:* ``string``
    * *デフォルト:* ``"deb http://apt.postgresql.org/pub/repos/apt/[ansible_lsb['codename']]-pgdg main"``

.. envvar:: hm_pgsql__major_version

    この役割がターゲットホストにインストールする主要バージョン。

    * *タイプ:* ``string``
    * *デフォルト:* ``"12"``

.. envvar:: hm_pgsql__remove_packages

    各 Linux ディストリビューションとパッケージマネージャー向けに別々に定義されたパッケージのリストで、ターゲットシステムには存在しない必要があります。このリストに含まれるパッケージはターゲットホストから削除されます。このロールは現在、``debian````apt`` のみを認識します。

    * *データ型:* ``dict``
    * *デフォルト:* (YAML ファイル ``defaults/main.yml`` を参照)
    * *例:*

    .. code-block:: yaml

        hm_logged__remove_packages:
          debian:
            apt:
              - syslog-ng
              - ...

.. envvar:: hm_pgsql__remove_previous

    PostgreSQL データベースの以前のバージョンを削除 (true/false)。

    * *タイプ:* ``bool``
    * *デフォルト:* ``false``

.. envvar:: hm_pgsql__install_packages

    各 Linux ディストリビューションとパッケージマネージャー向けに別々に定義されたパッケージのリストで、ターゲットシステムに存在する必要があります。このリストに含まれるパッケージはターゲットホストにインストールされます。このロールは現在、``debian````apt`` のみを認識します。

    * *データ型:* ``dict``
    * *デフォルト:* (YAML ファイル ``defaults/main.yml`` を参照)
    * *例:*

    .. code-block:: yaml

        hm_logged__install_packages:
          debian:
            apt:
              - syslog-ng
              - ...

.. envvar:: hm_pgsql__apt_force_update

    パッケージをインストールする前に APT キャッシュの更新を強制する ('yes','no')。

    * *データ型:* ``string``
    * *デフォルト:* ``"no"``

.. envvar:: hm_pgsql__user

    PostgreSQL データベースの UNIX システムユーザー名。

    * *タイプ:* ``string``
    * *デフォルト:* ``"postgres"``

.. envvar:: hm_pgsql__group

    PostgreSQL データベースの UNIX システムグループ名。

    * *タイプ:* ``string``
    * *デフォルト:* ``"postgres"``

.. envvar:: hm_pgsql__monitoring_user

    PostgreSQL データベースの監視用の制限されたユーザーアカウント名。

    * *タイプ:* ``string``
    * *デフォルト:* ``"watchdog"``

.. envvar:: hm_pgsql__monitoring_password

    PostgreSQL データベースの監視用の制限されたユーザーアカウントのパスワードです。
    このパスワードはバルトで暗号化するべきです。

    * *タイプ:* ``string``
    * *デフォルト:* ``"watchdog"``

.. envvar:: hm_pgsql__databases

    ターゲットシステムに存在する必要のある全ての PostgreSQL データベースのリスト。

    * *タイプ:* ``list of strings``
    * *デフォルト:* ``[]`` (空のリスト)

.. envvar:: hm_pgsql__logdir

    ログディレクトリへのパス。

    * *タイプ:* ``string``
    * *デフォルト:* ``"/var/log/postgresql"``

.. envvar:: hm_pgsql__logfile

    ログファイルへのパス。

    * *タイプ:* ``string``
    * *デフォルト:* ``"{{ hm_pgsql__logdir }}/postgresql-{{ hm_pgsql__major_version }}-main.log"``

.. envvar:: hm_pgsql__logrotate

    ログローテーションスイッチ (true/false)。

    * *タイプ:* ``bool``
    * *デフォルト:* ``true``

.. envvar:: hm_pgsql__logrotate_options

    ログローテーションオプション。

    * *タイプ:* ``list of strings``
    * *デフォルト:* (YAML ファイル ``defaults/main.yml`` を参照)

.. envvar:: hm_pgsql__procs_mincnt

    健康監視のための最小限の PostgreSQL プロセス数。

    * *タイプ:* ``int``
    * *デフォルト:* ``1``

.. envvar:: hm_pgsql__procs_maxcnt

    健康監視のための最大限の PostgreSQL プロセス数。

    * *タイプ:* ``int``
    * *デフォルト:* ``100``

.. envvar:: hm_pgsql__checks

    様々な Nagios チェックの警告と重大な閾値の設定。

    * *タイプ:* ``dict``
    * *デフォルト:* (YAML ファイル ``defaults/main.yml`` を参照)
    * *例:*

    .. code-block:: yaml

        hm_pgsql__checks:
          check_postgres_query_time:
            w: 5 minutes
            c: 10 minutes
          ...


外部変数
--------------------------------------------------------------------------------

このロールは、他のロールで定義された以下の外部変数を使用しています:

:envvar:`hm_accounts__users`

    特定のユーザーをこの PostgreSQL データベースの管理者としてフラグ付けすることができ、データベースにスーパーユーザーアカウントが作成され、``peer`` レベルの認証アクセスが設定されます。アカウントのプロパティとしてフラグ ``is_admin_postgresql: true`` を使用してください。

    * *例:*

    .. code-block:: yaml

        hm_accounts__users:
          user:
            is_admin_postgresql: true
          ...


:envvar:`hm_monitored__service_name`

    サーバーが **servers_monitored** グループに属し、プレイブックが Mentat システムの監視を自動設定している場合の NRPE サービスの名前です。


組み込みの Ansible 変数

:envvar:group_names

現在のホストが所属しているグループの名前のリスト。この変数は、:ref:`ソフトロール依存関係 <section-overview-role-soft-dependencies>` を解決するために使用されます。

:envvar:ansible_lsb['codename']

Linux ディストリビューションのコードネーム。正しい APT リポジトリ URL を生成し、:ref:`テンプレートカスタマイゼーション <section-overview-role-customize-templates>` のために使用されます。

グループメンバーシップ

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • servers_monitored

    ターゲットサーバーがこのグループに所属している場合、PostgreSQL データベースの Nagios 監視が自動的に設定されます。

  • servers_commonenv

    ターゲットサーバーがこのグループに所属している場合、PostgreSQL データベースのシステムステータススクリプトが自動的に設定されます。

.. _section-role-postgresql-files:

管理ファイル

.. note::

このロールは、:ref:`テンプレートカスタマイゼーション <section-overview-role-customize-templates>` 機能をサポートしています。

このロールは、ターゲットシステム上で以下のファイルの内容を管理します:

  • /etc/logrotate.d/postgresql-common [テンプレート]
  • /etc/nagios/nrpe.d/postgresql.cfg [テンプレート]
  • /opt/system-status/system-status.d/20-postgresql [テンプレート]

.. _section-role-postgresql-author:

著者とライセンス

| 著作権: (C) 2019年以降 Honza Mach honza.mach.ml@gmail.com | 著者: Honza Mach honza.mach.ml@gmail.com | このロールの使用は MIT ライセンスに従います。 LICENSE ファイルを参照してください。 |

プロジェクトについて

Ansible role for convenient installation of the PostgreSQL database.

インストール
ansible-galaxy install honzamach.postgresql
ライセンス
mit
ダウンロード
143
所有者