[IPT] Dmitry
Ты же, если правильно помню, фигачишь что-то для кошмарного сетапа на >3К сетевых дивайсов?
нет. но суть схожая. да и просто пытаюсь со структурами данных в yaml разобраться. моё слабое место
Full
Я в этих ваших ямлах вообще нихрена не понимаю, но я бы подумал про наследование или якоря. С якорями собираюсь поэкспериментировать. Это вносит некую путаницу, зато можно построить сложный граф. Теоретически. :)
Vladislav 👻
можно тут как-то избавится от повторения same_tag?
засунуть в отдельную переменную? 😬
[IPT] Dmitry
засунуть в отдельную переменную? 😬
это уже будет не структура тогда
[IPT] Dmitry
и вообще, как дела обстоят с мержем одинаковых списков на уровне ролей? допустим, у меня две роли с разным набором list_of_rules переменных по умолчанию, и логично их было бы как-то мержить...
Vladislav 👻
значения будут из последней по сортировке
[IPT] Dmitry
бооооооль
[IPT] Dmitry
Some users prefer that variables that are hashes (aka ‘dictionaries’ in Python terms) are merged. This setting is called ‘merge’. This is not the default behavior and it does not affect variables whose values are scalars (integers, strings) or arrays. We generally recommend not using this setting unless you think you have an absolute need for it, and playbooks in the official examples repos do not use this setting:
[IPT] Dmitry
но это конечно либо сразу так жить, либо нет
Vladislav 👻
лучше не стоит так жить
[IPT] Dmitry
ну хз хз. оба варианта не стоит так жить. хочется настраиваемого поведения. где-то мерж, где-то реплейс
Albert
Для этого филтер combine есть. Зато понятно что происходит.
[IPT] Dmitry
Для этого филтер combine есть. Зато понятно что происходит.
это два списка с одним именем, а не два разных
[IPT] Dmitry
тут придётся костылять, с каким-нибудь set fact: list_of_rules when: not defined, вместо того чтобы просто смержить списки из дефолтов
[IPT] Dmitry
да и такой себе, хреновый костыль
[IPT] Dmitry
сдаётся мне, из ansible нормально iptables не по управлять
Full
А это ты iptables крутишь... Я забросил попытки. Там и кроме ансибла причин хватает, конечно.
[IPT] Dmitry
блин, но ведь люди как-то это же всё и в awx красиво заворачивают, вместе с созданием vm и сервисов полноценных. - кто эти люди? - как они это делают?
Full
Я из awx разворачиваю vmки, и ставлю на них 1с, постре, апачи, вот это вот все. Это точно не красиво, но работает. Но к файрволу я его не пущу. Там 5к+ правил после оптимизации осталось. Я уж лучше руками.
M
А зачем 5к правил?
Full
В каком смысле "зачем"?
Full
Файрвол такой, насыщенный, за ним много сетей.
Pavel
Pavel
Да, им
Pavel
У нас связка ферм + айписет + ансибл
Pavel
Нормас
[IPT] Dmitry
Посмотри на farm, и рули им а не iptables
а что от этого изменится с ansible? мне хотелось правила по умолчанию для различных ролей описывать и мержить их. но тут видимо сам подход не очень
Pavel
Правил станет гараздо меньше
Full
ферм - по-сути шаблонизатор для iptables. Ну, типа того.
Pavel
(в ансибле)
[IPT] Dmitry
у меня их и так не много. проблема в другом. придётся видимо отдельную роль пилить iptables и за ней следить
Full
Вероятней всего это все равно придется делать. Идемпотентность, все дела. iptables тебе позволит сколько угодно одинаковых правил набросать. Ну или проверять отдельной таской перед применением каждого, что такое уже есть. Уж проще сбросить и переналить.
Full
Заодно и порядок правил соблюдешь.
Full
Вот, кстати, идея. Конфиг ferm'а умеет в инклюды. Можно генерить свой, отдельный файл правил для каждого сервиса. И дергать хэндлер, который будет релоадить правила, если сгенеренный файл правил changed. А ferm применяет правила одним атомарным действием.
Alexander
ну я так понимаю, придётся сделать как-то так? list_of_rules: - rule1: key1: value1 key2: value2 tag: same_tag - rule2: key1: value1 key2: value2 tag: same_tag
https://onlineyamltools.com/convert-yaml-to-json и то, что ты написал становится довольно очевидным { "list_of_rules": [ { "rule1": null, "key1": "value1", "key2": "value2", "tag": "same_tag" }, { "rule2": null, "key1": "value1", "key2": "value2", "tag": "same_tag" } ] }
Alexander
что бы это понять - минус создает новый массив, двоеточие - новый словарь. второй минус на том же уровне продолжает массив, двоеточие продолжает словарь.
[IPT] Dmitry
вопрос был, а как same_tag не повторять. ответ - никак
Alexander
вопрос был, а как same_tag не повторять. ответ - никак
Если не один same_tag, а кусок который надо бы повторять, то надо смотреть якоря. Только это неправильно. В данном случае это не копипаста. Может, можно в принципе, поменять структуру, чтобы там не вылезали теги, но это вопрос вышележащего слоя.
[IPT] Dmitry
про структуру тоже спрашивал изначально. я допускаю, что не правильно её представляюописываю
Nik
Привет, вопрос: Есть N хостов. на них есть локальные и внешние интерфейсы. Могу ли я сделать так, чтобы ансибл для одного хоста попробовал подключиться сначала по одному адресу, а в случае неудачи — по второму? я нагуглил ignore_unreachable, но тогда у меня нет условия недоступности первого интерфейса и в таком случае плейбук сработает два раза
Гайрат
wait_for, add_host?
Nik
wait_for, add_host?
а можно чуть подробнее?
Nik
перебрать список хостов, проверяя на доступность, а потом доступные добавить в этот же инвентори?
Nik
хотя, в принципе, даже если они друг друга будут перебивать — то плейбук просто два раза выполнится, наверное
Гайрат
перебрать список хостов, проверяя на доступность, а потом доступные добавить в этот же инвентори?
Добавить в динамическую группу, которую в следующем плее указать как целевую для выполнения ролей и тасков. Либо написать свой инвентори плагин.
UglyKoyote
Nik
А можно юзкейс узнать?
падает одна из локалок между хостами. Нужно снять tcpdump с нескольких хостовлибо по локальному интерфейсу либо по внешнему, смотря какой доступен
Nik
https://gist.github.com/btotr/22d9b239ab6b50b608be58285422cd24
Nik
хочу такое решение использовать
Nik
дампы требуется снять одновременно
Nik
поэтому strategy: free
Nik
решил сделать это с помощью ансибла
Fire
Ну это задача мониторинга
Fire
Оркестраторы не про это.
Nik
Оркестраторы не про это.
да, понимаю, но проблема разовая, а с заббиксом я знаком хуже чем с ансиблом
Fire
А вообще можно сделать вместо 1 хоста, 2 хоста в группе с локальным и внешним ip
Fire
И выполнять плей на эту группу.
Anonymous
подскажите плз, как ansible заставить прожевать % ? - lineinfile: path: /etc/sudoers state: present regexp: "^%admin ALL=(ALL) ALL" line: "%admin ALL=(ALL) ALL" validate: '/usr/sbin/visudo -cf %s' ?
Fire
А не вот это вот.
Div
модуль template + jinja2
Balagur
Добрый день! А как в переменную определить такое значение: {"10.10.10.1", "10.10.10.2", "10.10.10.3", "10.10.10.4"} сейчас поставил !unsafe, но может можно проще?
Ilya
Подскажите что можно сделать чтобы ansible при подключении по winrm Kerberos мог делать second hop? Тоесть чтобы на хосте для прохождения proxy использовались credentials, которые используются для подключения к машине. Есть параметр ansible_winrm_kerberos_delegeation но профита нету
Sergey
Это просто в таком виде надо вставить в шаблон
Ну возьми да вставь, что мешает?
tati_v_p
Подскажите, использую callback плагин yaml для форматирования stdout результатов выполнения плейбука. В процессе, в выводе теряются кириллические символы. Как полечить?
Art
всем привет. подскажите, как одним таском рекурсивно скопировать директорию?
Alex
Подскажите, использую callback плагин yaml для форматирования stdout результатов выполнения плейбука. В процессе, в выводе теряются кириллические символы. Как полечить?
что то делаешь не так TASK [Test cyrilic] *** changed: [localhost] => changed=true cmd: echo "Привет мир" delta: '0:00:00.005435' end: '2020-08-04 15:07:19.756001' rc: 0 start: '2020-08-04 15:07:19.750566' stderr: '' stderr_lines: <omitted> stdout: Привет мир stdout_lines: <omitted>
Alex
ansible 2.9.9, python 3.8