lineinfile using insertafter

Hey all,

Trying to insert a line to multiple instances in the same file.

I tried insertafter but that only put in one spot. Here’s the code:

  • name: add proxy to zabbix.repo if needed
    lineinfile:
    path: /etc/yum.repos.d/zabbix.repo
    state: present
    insertafter: ‘[zabbix*’
    line: ‘proxy=http://proxy:8080
    when:
  • ansible_default_ipv4.address is match(‘192.168.226.’) or
    ansible_default_ipv4.address is match(‘10.172.226.’)

Here’s the result:

[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://repo.zabbix.com/zabbix/4.4/rhel/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
proxy=http://proxy:8080
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://repo.zabbix.com/non-supported/rhel/8/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

I would have thought my insertafter regexp would match both of those [zabbix] and [zabbix-non-supported] but it doesn’t.

Hey all,

Trying to insert a line to multiple instances in the same file.

I tried insertafter but that only put in one spot. Here's the code:

\- name: add proxy to zabbix\.repo if needed
  lineinfile:
    path: /etc/yum\.repos\.d/zabbix\.repo
    state: present
    insertafter: '\\\[zabbix\*'
    line: 'proxy=http://proxy:8080'
  when:
    \- ansible\_default\_ipv4\.address is match\('192\\\.168\\\.226\\\.'\) or
      ansible\_default\_ipv4\.address is match\('10\\\.172\\\.226\\\.'\)

Here's the result:

[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://repo.zabbix.com/zabbix/4.4/rhel/8/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
*proxy=http://proxy:8080 *

name=Zabbix Official Repository non-supported - $basearch
baseurl=https://repo.zabbix.com/non-supported/rhel/8/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

I would have thought my insertafter regexp would match both of those [zabbix] and [zabbix-non-supported] but it doesn't.

No, lineinfile replaces one line. But why don't you set the proxy variable globally for yum / your system?

Regards
         Racke

It would be a lot easier to accomplish this with the ini_file module instead of lineinfile. For example:

  • ini_file:
    path: /etc/yum.repos.d/zabbix.repo
    section: zabbix-non-supported
    option: proxy
    value: http://proxy:8080

Because I’ve got checks that applies the proxy based of which subnet the playbook runs on.