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