怎么在Linux利用Ansible-Assemble将分散的配置片段自动化汇聚为完整的生产文件

千明酱_2097

千明酱_2097

2026-06-10

429人浏览

原创

assemble模块用于在控制节点将本地多个文本片段按字母顺序拼接成单个配置文件并推送至目标主机,适用于仅支持单一配置文件、不兼容conf.d结构的服务,不支持变量渲染。

怎么在linux利用ansible-assemble将分散的配置片段自动化汇聚为完整的生产文件

用 Ansible 的 assemble 模块,可以把本地多个小配置片段按顺序拼成一个完整配置文件,再推到目标主机。它适合那些只认单个配置文件、不支持 conf.d 目录结构的服务(比如某些老旧的 daemon 或定制化脚本)。

确认 assemble 的适用场景

assemble 不是用于远程拉取或模板渲染,而是在控制节点上把本地目录里的多个文本文件串起来,生成一个目标文件,再传过去。关键点:

  • 源文件必须在 Ansible 控制机本地(remote_src=False,默认行为)
  • 文件按字母顺序拼接(如 01-base.conf → 10-override.conf → 99-final.conf)
  • 不执行变量替换或 Jinja2 渲染——那是 template 模块的事
  • 适合静态内容聚合,比如 Nginx 的 server 块拆分、SSH 的 sshd_config 片段、自定义日志轮转规则等

准备片段目录与命名规范

在 playbook 所在目录下建一个子目录(例如 files/nginx-conf.d/),把所有片段放进去,并用前缀数字+短横线确保排序正确:

  • 01-http.conf
  • 10-vhost-example.com.conf
  • 99-security.conf

避免以 . 开头的隐藏文件(默认被忽略,可设 ignore_hidden: no 覆盖);若需空行或分隔线,用 delimiter 参数指定,比如 delimiter: "# --- END OF {{ item }} ---"。

Linux Distros
Linux Distros

Linux发行版游乐场,适用于需要临时Linux沙箱、基于浏览器的Linux虚拟机、一次性终端环境、桌面Linux会话等场景

下载

在 playbook 中调用 assemble 模块

示例任务写法(YAML):

- name: Assemble nginx main config from fragments
  assemble:
    src: files/nginx-conf.d/
    dest: /etc/nginx/nginx.conf
    mode: '0644'
    owner: root
    group: root
    backup: yes
    delimiter: "# === GENERATED FROM FRAGMENTS ==="

说明:

  • src 是控制机上的相对路径(相对于 playbook 目录)
  • dest 是目标主机上的绝对路径
  • backup: yes 会在覆盖前保存带时间戳的备份(如 nginx.conf.2026-05-01@14:02:15~)
  • 权限和属主直接通过 mode/owner/group 设置,无需额外 file 模块

验证与调试技巧

执行前建议先本地预览拼接结果:

  • 手动运行:cat files/nginx-conf.d/* | sort(模拟 assemble 排序逻辑)
  • 加 check_mode: yes 运行 playbook,看是否报错但不实际写入
  • 启用 -v 或 --debug 查看 assemble 实际读取了哪些文件
  • 若片段中含敏感信息(如密钥),确保它们不进 Git;可用 ansible-vault 加密整个 src 目录(需设 decrypt: yes)

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3950

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3393

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2553

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6150

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5802

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3393

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2885

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3119

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习