Назад | Перейти на главную страницу

Ansible: найти и заменить удаленным IP

Я использую Ansible для автоматической конфигурации apache, в которой у меня есть собственный app.conf. Теперь у меня есть app.conf на недоступном сервере, и я хочу, чтобы он заменил существующий IP-адрес удаленным IP-адресом. мой app.conf выглядит так.

<VirtualHost \
10.10.10.10:80 \
10.10.10.10:80 \
>
DocumentRoot /var/www/application/httpdocs
ServerName lists
ServerAlias lists.*
UseCanonicalName Off
ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
Alias /icons/ /var/www/icons/
Alias /pipermail/ /var/lib/mailman/archives/public/
<Directory /var/lib/mailman/archives/>
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>

Теперь я хочу, чтобы 10.10.10.10 был заменен удаленным IP-адресом. можем ли мы сделать это с помощью модуля lineinfile.

lineinfile:
  path: /etc/hosts
  regexp: '^10\.10\.10\.10'
  line: ''
  owner: root
  group: root
  mode: 0644

Технически это должно быть возможно, но вы столкнетесь с проблемами, потому что:

шаблон для замены, если он найден; будет заменена только последняя найденная строка

документация по модулю lineinfile

Итак, если вы хотите изменить /etc/hosts это должно быть хорошо. Если вы хотите изменить файл конфигурации с многократным повторением шаблона rexex, вы столкнетесь с проблемами. (Из вопроса неуверенно, что вы хотите изменить / etc / hosts или app.conf)

Если вы хотите управлять файлом конфигурации apache, вам лучше использовать модуль шаблона