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