本文为云贝教育 刘老师 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。
在Ansible中,你可以使用 template 模块来修改PostgreSQL的配置文件,并在配置文件发生变化时触发PostgreSQL服务的重启。以下是一个示例Playbook,展示了如何实现这一操作。
一. 创建模板文件
首先,创建一个Jinja2模板文件,用于生成PostgreSQL的配置文件。假设你有一个名为 postgresql.conf.j2 的模板文件,内容如下:
# postgresql.conf.j2
listen_addresses = '*'
port = 5432
max_connections = {{ max_connections }}
shared_buffers = {{ shared_buffers }}
复制
将这个模板文件放在你的Ansible项目的 templates 目录下。
# DB Version: 16
# OS Type: linux
# DB Type: web
# Total Memory (RAM): 16 GB
# CPUs num: 32
# Connections num: 1000
# Data Storage: ssd
listen_addresses = '*'
port = 5432
max_connections = 1000
shared_buffers = 4GB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 1048kB
huge_pages = off
min_wal_size = 1GB
max_wal_size = 4GB
max_worker_processes = 32
max_parallel_workers_per_gather = 4
max_parallel_workers = 32
max_parallel_maintenance_workers = 4
log_min_duration_statement=0
logging_collector = on
log_filename = 'postgresql-%Y-%m-%d.log'
log_rotation_age = '1d'
log_directory = 'pg_log'
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
复制
二. 创建Ansible Playbook
接下来,创建一个Ansible Playbook,使用 template 模块来应用配置文件,并在配置文件发生变化时触发PostgreSQL服务的重启。
---
- name: Configure and Restart PostgreSQL
hosts: dbservers
become_method: su
become_user: postgres
become: yes
vars:
max_connections: 1000
shared_buffers: '512MB'
tasks:
- name: Copy PostgreSQL configuration file
template:
src: postgresql.conf.j2
dest: /data/pgdata/data/postgresql.conf
owner: postgres
group: postgres
mode: '0644'
notify: Restart PostgreSQL
handlers:
- name: Restart PostgreSQL
command: /usr/local/postgres/bin/pg_ctl restart -D /data/pgdata/data
复制
三. 解释Playbook
- hosts: all:指定要运行该Playbook的目标主机。
- become: yes:使用特权提升(例如 sudo)来执行任务。
- vars:定义变量,这些变量将在模板中使用。
- tasks:
Ensure PostgreSQL is installed:确保PostgreSQL已安装。
Copy PostgreSQL configuration file:使用 template 模块将模板文件复制到目标主机上的配置文件位置。如果配置文件发生变化,将触发处理程序 Restart PostgreSQL。
Ensure PostgreSQL service is enabled and started:确保PostgreSQL服务已启用并正在运行。
- handlers:
Restart PostgreSQL:如果配置文件发生变化,将重启PostgreSQL服务。
四. 运行Playbook
保存Playbook文件(例如 configure_postgresql.yml),然后运行它:
ansible-playbook -i inventory_file configure_postgresql.yml
复制
其中 inventory_file 是你的主机清单文件,例如 hosts 或 inventory.ini。
五. 注意事项
- 版本和路径:根据你的PostgreSQL版本和操作系统,配置文件的路径可能会有所不同。请确保路径正确。
- 权限:确保配置文件的权限设置正确,以避免权限问题。
- 测试:在生产环境中应用之前,建议先在测试环境中进行测试,以确保配置文件更改和重启操作按预期工作。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
外国CTO也感兴趣的开源数据库项目——openHalo
小满未满、
614次阅读
2025-04-21 16:58:09
9.9 分高危漏洞,尽快升级到 pgAdmin 4 v9.2 进行修复
严少安
359次阅读
2025-04-11 10:43:23
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
344次阅读
2025-04-15 14:48:05
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
317次阅读
2025-04-07 12:14:29
转发有奖 | PostgreSQL 16 PGCM高级认证课程直播班招生中!
墨天轮小教习
155次阅读
2025-04-14 15:58:34
墨天轮PostgreSQL认证证书快递已发(2025年3月批)
墨天轮小教习
134次阅读
2025-04-03 11:43:25
SQL 优化之 OR 子句改写
xiongcc
100次阅读
2025-04-21 00:08:06
融合Redis缓存的PostgreSQL高可用架构
梧桐
91次阅读
2025-04-08 06:35:40
PostgreSQL拓展PGQ实现解析
chirpyli
89次阅读
2025-04-07 11:23:17
Mysql/Oracle/Postgresql快速批量生成百万级测试数据sql
hongg
78次阅读
2025-04-07 15:32:54
TA的专栏
PostgreSQL 2023最新题库解析
收录13篇内容
Oracle 19c OCP 1Z0-082 题库解析
收录10篇内容
目录