Ansible如何通过Jinja2模板仅修改INI配置文件的指定行
INI配置文件部分模板化的实现方案
要实现仅修改指定行、其余配置和格式完全保留,有两种成熟方案可选:
方案1:直接编写Jinja2模板
这是最贴合需求的方案,只需要把原有INI配置原封不动复制到configuration.ini.j2文件中,仅替换需要修改的两行的取值即可。Jinja2渲染时会完整保留所有未使用模板标记的内容,不会改动原有格式、注释、空格缩进。
模板内容示例:
[configuration] config1 = this_is_fine config2 = {{ assigned_value }} config3 = {{ assigned_value }} config_4 = this_is_fine
你只需要在Ansible playbook中正常调用template模块渲染该模板到目标路径即可:
- name: 渲染配置文件模板 ansible.builtin.template: src: configuration.ini.j2 dest: /etc/你的配置路径/configuration.ini mode: '0644'
方案2:使用ini_file模块直接修改(无需维护模板)
如果你不想维护完整的模板文件,或者配置文件可能会被其他流程修改、需要保留已有修改仅更新指定配置项,可以直接用Ansible自带的community.general.ini_file模块实现,完全不会触碰未指定的配置内容:
- name: 更新INI配置指定项 hosts: 你的目标主机分组 tasks: - name: 修改config2和config3的取值 community.general.ini_file: path: /etc/你的配置路径/configuration.ini section: configuration option: "{{ item }}" value: "{{ assigned_value }}" mode: '0644' loop: - config2 - config3
内容的提问来源于stack exchange,提问作者gosaultech
相关产品推荐
相关产品推荐

