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.
racke
(Stefan Hornburg)
2
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.