Growman
@Growman
Wannabe Linux Admin

Как работает lineinfile модуль Ansible?

Приветствую.

Пытаюсь с помощью Ansible добавить строчку в конфиг сетевого интерфейса.

Версия Ansible: 2.7.2

Конфиг:
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.22.33.123
NETMASK=255.255.255.0
DEVICE=eth1
PEERDNS=no
#VAGRANT-END


Таск:
- name: Configure Internal zone interface
  lineinfile:
    path: /etc/sysconfig/network-scripts/ifcfg-{{ interface }}
    regexp: '^ZONE'
    line: 'ZONE="internal"'
  notify: "restart network"
  become: true


Т.е., судя по описанию модуля, если у меня отсутствует строчка ^ZONE= – должна подставляться строчка из line.
При этом при некоторых прогонах на свежей машине он подставляет не ZONE="internal" а просто ZONE=. При некоторых работает.

Уже пробовал:
  • оставить internal без кавычек
  • менять кавычки вокруг line
  • делать прогоны без перезапуска сети
  • добавлять в начало файла через insertbefore: BOF
  • менять интерфейсы - редактировал и файлы кастомных интерфейсов вагранта и дефолтный


Записывает на 2-3 раз полную строку (line replaced), при некоторых прогонах - при первом же (line added).
Магия :С
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Growman
@Growman Автор вопроса
Wannabe Linux Admin
Проблема оказалась вообще не со стороны Ansible.
Зону трёт то-ли файрвол, то-ли NetworkManager, после перезапуска сети, причём полурандомно

Вариантов решения не нашёл, кроме как убирать NM из системы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@noob1
Anykey
При использовании lineinfile - ansinble ищет заданную строку в файле . Если строки нет то записывает , если строка есть - изменяет . Повторное добавление строки может быть связано с не правильным значением regexp . Строку такую не нашло вот и добавило ещё раз .
Ответ написан
opium
@opium
Просто люблю качественно работать
Ну так включите отладку через минус три в и минус дифф зачем гадать на кофейной гуще
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы