Aleksey
172.28.128.27 node1 0.0.0.0 node1 0.0.0.0 node1 172.28.128.27 node1
Aleksey
вот так
Pavel
linefile имхо. А как дублируются? какой regex? бери всю строку и реплейсь просто
как я понимаю, если 2й раз прогнать, потом эта строка уже не уже удовлетворяет регекспу и еще один экземпляр добивится в конце
Aleksey
- name: Setup /etc/hosts lineinfile: dest: "{{env}}/hosts" line: "{{ hostvars[item].ansible_host }} {{ item }}" regexp: ".*{{ hostvars[item].ansible_host }} {{ item }}$" create: no with_items: "{{groups['all']}}"
Aleksey
смысл в том что строка каждый раз подходящая находится
Aleksey
но толку от такой строки не много
Aleksey
ибо hosts он таки сткрутурированный
Dmitry
но толку от такой строки не много
Почему не много? ты просто добавляешь что надо тебе.
Dmitry
insertafter: true можно попробовать
Aleksey
предполоагая что там есть что ?
Dmitry
предполоагая что там есть что ?
можешь EOF использовать
Aleksey
как спасет от дублирования?
Dmitry
ну поидее ансибл это должен делать повторяемо
Aleksey
lineinfile?
Aleksey
ну...
Dmitry
ща порпобую затестить
Aleksey
ага пасиб
Aleksey
Aleksey
можно считать что там вообще другой ансибл
simplemice.eth
некоторые основы там есть
simplemice.eth
новичкам пойдет
Dmitry
ага пасиб
lineinfile: dest: "/etc/hosts" line: "{{ hostvars[ item ]['ansible_host']}} {{ item }}" with_items: " {{ groups['all'] }}" ну у меня все повторяемо. кладется один раз
Aleksey
пробовал менять ойпи ?
Dmitry
хм, неа.
Aleksey
дак в этом и соль
Aleksey
оно мина замедденного действия
Dmitry
Нигде про такое ты не писал))
Dmitry
ок, да оно не найдет старый ip
Aleksey
:) я писал это в разделе про безопасно :)
Dmitry
ну само собой совет про DNS не прокатит
Dmitry
тут ;)
ладно, ну да, типа того)
Aleksey
конешна. не прокатит
Aleksey
я контролирую только часть инфраструктуры и хотелось бы как можно меньшую.
Dmitry
кроме твоей темы в hosts еще много изменяемых параметров
Dmitry
?
Aleksey
не понимаю вопрос
Dmitry
ну, что мешает просто лупить 100% свой hosts? через template. видимо чужие записи
Aleksey
то что я не знаю текущий.
Aleksey
а там могут быть чужие записи да
Dmitry
ок. тогда так. 1. читаем текущий hosts. 2. крафтим свой хостс, 3. склеиваем 4. запиываем
Aleksey
:)
Aleksey
5. повторяем.
Aleksey
это был вариант про assemble
Dmitry
балин да
Dmitry
погоди, выходит что ты можешь управлять только частью hosts?
Aleksey
да. только своими записями
Dmitry
это печальный подход. как насчет поставить dnsmasq локально?
Aleksey
думаешь можно искать по регулярке regexp: ".+{{ item }}"
Dmitry
а чем это поможет ?
управляешь им на 100% сам, создаешь записи, локально обращаешься к нему
Dmitry
кеширует dns еще вдобавок
Pavel
да. только своими записями
не пробовал сначала удалить "свои" записи, а потом "правильные" добавть? немного через опу, но как крайний выход
Aleksey
я знаю что у dnsmasq можно сказать читай вот этот файл а не /etc/hosts и так он может вполне работать
Pavel
плейбук который никогда не падает не в нужный момент ?
не вижу тут проблемы при таком сценарии....
Aleksey
но тогда я при этом должен буду исправить resolv.conf а это вообще полный мрак
Dmitry
Тот кто запретил править hosts полностью заслуживает медали
Aleksey
не вижу тут проблемы при таком сценарии....
сервер остается без части записей. до момента пока плейбук снова не придет в это место. значит резолв работать будет не праивльно или плохо.
Dmitry
Вот идея.
Aleksey
Тот кто запретил править hosts полностью заслуживает медали
я же сам и запретил... ибо мне этот файл не подконтролен :) ансибл просто инсталятор ага.
Dmitry
Делать запись целым блоком
Dmitry
И проверку тоже на целый блок. Если что то поменялось в исходных ip - блок перезаписывать
Aleksey
эт как ?
Dmitry
Ну линия не один домен - ip а все через \n
Aleksey
херачить отдельный # === MYDATA # === MYDATAEND
Aleksey
хм. вариант.
Dmitry
Я ушёл.
Pavel
хм. вариант.
или каждый хост в отдельном blockinfile но при большом количестве таких блоков - файл будет нечитаемый
Pavel
хотя я так делаю, но у меня 3-5 таких записей
Aleksey
вот да я пошел смотреть на blockinfile
Aleksey
чот эта мысль мне в голову не шла
Aleksey
и блин.
Aleksey
http://docs.ansible.com/ansible/latest/blockinfile_module.html
Aleksey
- name: Add mappings to /etc/hosts blockinfile: path: /etc/hosts block: | {{ item.ip }} {{ item.name }} marker: "# {mark} ANSIBLE MANAGED BLOCK {{ item.name }}" with_items: - { name: host1, ip: 10.10.1.10 } - { name: host2, ip: 10.10.1.11 } - { name: host3, ip: 10.10.1.12 }
Aleksey
прямо в доке.