Например, есть какой-то конфиг, в нем есть строка с параметрами. Строка может содержать разные параметры, всю строка заменять нельзя.
Как средствами Ansible найти нужный текст, заменить если не совпадает и вставить если отсутствует в определённое место после определенной строки?
файл:
ServerConfig=" ip=10.0.0.0 dns=10.0.0.1 name=webserver"
Нужно заменить name=webserver на name=dbserver, если строки нет, то добавить.
Мои попытки:
---
- hosts: webserver
vars:
config:
- { param: name=, value: dbserver }
tasks:
- name: change param
become: yes
lineinfile:
backup: yes
backrefs: yes
path: /etc/file/config
regexp: '^ServerConfig=/"(?!.*\b{{ item.param }}{{ item.value }}\b).*)$'
line: '\1{{ item.param }}{{ item.value }}\2'
state: present
loop: "{{ config }}"