У меня есть плейбук Ansible, где мне нужно изменить Server Name
в одной строке и Specific IP address
в другой, так как в этой строке есть набор IP-адресов, разделенных запятой.
У меня есть игра ниже, которая работает абсолютно нормально, если мне нужно изменить всю строку IP-адреса с определенным набором IP-адресов, но я ищу конкретный c IP-адрес, т.е. 191.168.1.4
, чтобы посмотреть после, и если он найден, просто замените только его и оставьте остальной IP как есть.
---
- name: Playbook to replace line in zabbix_agentd.conf
hosts: all
#remote_user: root
gather_facts: False
tasks:
- name: Changing the zabbix-agent configuration on the client
lineinfile:
path: /tmp/zabbix_agentd.conf
### line to be searched & matched
regexp: '{{ item.From }}'
### new line to be replaced with the old matched one
line: '{{ item.To }}'
state: present
backup: yes
backrefs: yes
with_items:
- { From: '#ServerActive=myzabbix1.example.com', To: 'ServerActive=myzabbix2.example.com'}
- { From: 'Server=192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5', To: 'Server=192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.10,192.168.1.5'}
# Actions will be triggered at the end of each block of task and notifies a handler.
notify: restart_zabbix_service
handlers:
- name: restart_zabbix_service
# referenced by a globally unique name and are notified by notifiers.
service:
name: zabbix-agentd
state: restarted