Ansible ini_file 附加一个选项而不是替换

问题描述 投票:0回答:1

这是参考https://github.com/ansible-collections/community.zabbix/issues/1294。 基本要求是由于版本冲突而禁用 epel.repo 中的 zabbix 二进制文件。 我的问题是如何在 epel.repo 文件的 epel 部分中添加 zabbix,并且仍然保留任何现有的排除项。

我可以先读取文件,然后使用一系列其他命令来查看那里是否已经存在现有行,然后提取值,以便我可以将它们附加到 ini_file 命令中,但这确实很复杂和令人费解。 希望有任何建议。

ansible
1个回答
0
投票

如何在

zabbix
文件的
epel
部分添加
epel.repo
,同时仍保留任何现有的排除项?

基于 使用 Ansible 读取远程节点上的 INI 文件中的选项的正确方法是什么?,一个最小的示例剧本

---
- hosts: localhost
  become: false
  gather_facts: true

  tasks:

  - debug:
      var: ansible_local

  - name: Make sure key value is in INI file
    ini_file:
      path: example.repo
      section: epel
      option: "excludepkgs"
      value: "{% if ansible_local.custom_soft.epel.excludepkgs is defined %}{{ ansible_local.custom_soft.epel.excludepkgs }},{% endif %}zabbix*"

将产生

的输出
TASK [debug] ***********************************************************************
ok: [localhost] =>
  ansible_local:
    custom_soft:
      epel:
        enabled: '1'
        excludepkgs: example
        failovermethod: priority
        gpgcheck: '1'
        gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
        mirrorlist: http://mirrors.example.org/mirrorlist?repo=epel-9&arch=$basearch
        name: Extra Packages for Enterprise Linux 9 - $basearch

TASK [Make sure key value is in INI file] ******************************************
changed: [localhost]

文件内容为

[epel]
name=Extra Packages for Enterprise Linux 9 - $basearch
#baseurl=http://download.example.org/pub/epel/9/$basearch
mirrorlist=http://mirrors.example.org/mirrorlist?repo=epel-9&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
excludepkgs = example,zabbix*

请注意,要使任务完全幂等,您需要实现更多逻辑以避免多次添加值

zabbix

© www.soinside.com 2019 - 2024. All rights reserved.