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 }}"
    
  • 创建/编辑加密文件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发行版及其包管理器定义的包列表,目标系统中**不得**存在这些包。该角色目前仅识别``apt``用于``debian```。

    * *数据类型:* ``dict``
    * *默认值:* (请参见YAML文件``defaults/main.yml``)
    * *示例:*

    .. code-block:: yaml

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

.. envvar:: hm_pgsql__remove_previous

    移除之前的PostgreSQL版本(真/假)。

    * *类型:* ``bool``
    * *默认值:* ``false``

.. envvar:: hm_pgsql__install_packages

    单独为每个Linux发行版及其包管理器定义的包列表,目标系统中**必须**存在这些包。此列表中的任何软件包将在目标主机上安装。该角色目前仅识别``apt``用于``debian```。

    * *数据类型:* ``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数据库的受限用户账户的密码。
    您应使用vault加密此密码。

    * *类型:* ``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

    日志轮换开关(真/假)。

    * *类型:* ``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:

作者及许可证

| 版权: 自2019年起(C) 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
拥有者