Dmitry
Aleksey
172.28.128.27 node1
0.0.0.0 node1
0.0.0.0 node1
172.28.128.27 node1
Aleksey
вот так
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
смысл в том что строка каждый раз подходящая находится
Dmitry
Aleksey
но толку от такой строки не много
Aleksey
ибо hosts он таки сткрутурированный
Dmitry
insertafter: true можно попробовать
Aleksey
предполоагая что там есть что ?
Dmitry
Aleksey
как спасет от дублирования?
Dmitry
ну поидее ансибл это должен делать повторяемо
Aleksey
lineinfile?
Aleksey
ну...
Dmitry
ща порпобую затестить
Aleksey
ага пасиб
Aleksey
Aleksey
можно считать что там вообще другой ансибл
Pavel
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
:) я писал это в разделе про безопасно :)
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 }}"
Aleksey
Dmitry
а чем это поможет ?
управляешь им на 100% сам, создаешь записи, локально обращаешься к нему
Dmitry
кеширует dns еще вдобавок
Pavel
да. только своими записями
не пробовал сначала удалить "свои" записи, а потом "правильные" добавть? немного через опу, но как крайний выход
Aleksey
Aleksey
Aleksey
я знаю что у dnsmasq можно сказать читай вот этот файл а не /etc/hosts и так он может вполне работать
Pavel
Aleksey
но тогда я при этом должен буду исправить resolv.conf а это вообще полный мрак
Dmitry
Тот кто запретил править hosts полностью заслуживает медали
Dmitry
Вот идея.
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
прямо в доке.