У меня есть два файла, в которых эти файлы содержат server names
и server IP's
, я хочу изменить / заменить некоторые спецификации c server names
и IP addressees
в обоих файлах в зависимости от требований.
Это связано с This Post <- </a>, поскольку было предложено открыть новое сообщение.
Мой сценарий:
В файлах примеров ниже (file & file2
) мне нужно сделать следующее ..
1 - В file1 и fil2 мне нужно заменить fostrain01.example.com
на dbfostrain01.example.com
.
2 - Где в другой строке мне нужно заменить 171.20.20.18
с 172.20.20.18
в обоих файлах.
# cat /etc/file1
fostrain01.example.com
fostrain02.example.com
ServerIPS 171.20.20.16 171.20.20.17 171.20.20.18 171.20.20.19 171.20.20.20
# cat /etc/fil2
fostrain01.example.com
fostrain02.example.com
ServerIPS 171.20.20.16 171.20.20.17 171.20.20.18 171.20.20.19 171.20.20.20
My Playbook:
---
- name: Replace file contents
hosts: all
gather_facts: false
vars:
files:
- /etc/file1
- /etc/file2
from_str: "fostrain01.example.com"
to_str: "dbfoxtrain01.example.com"
from_ip: "^(.*)171\\.20\\.20\\.18(.*)$"
to_ip: "\\g<1>172.20.20.18\\g<2>"
tasks:
- name: Replace elements in file
replace:
path: "{{ item.path }}"
regexp: "{{ item.From }}"
replace: "{{ item.To }}"
backup: yes
loop:
# Replace the desired string
- { path: "{{ item }}", From: "{{ from_str }}", To: "{{ to_str }}" }
# Replace the desired ip
- { path: "{{ item }}", From: "{{ from_ip }}", To: "{{ to_ip }}" }
В приведенном выше сборнике воспроизведения я определил переменные для каждого раздела, как вы можете см.
Что мне не хватает и что я хотел бы знать:
Мне не хватает информации о How i can use or reference files variable
в разделе path
модуля замены в моем playbook
выше, в то время как используя loop
.
Чтобы прояснить, я говорю о нижнем ..
files:
- /etc/file1
- /etc/file2
Я ищу, чтобы это соответствовало подходу, описанному выше laybook, я знаю другой способ сделать это.
Прошу прощения, если я не смог объяснить это более ясно.