Sergey
подскажите, плиз, есть инвентрарь: [one] host1 [one:vars] bla bla [two] host2 host3 [two:vars] bla bla [three:children] one two в цикле {% for host in groups['three'] %} же будут доступны группе three переменные из групп one и two?
Нет, не будут. Переменные - как вода в душе с верхней лейкой: с вершины (all) "растекаются" вниз по иерархии групп/хостов, но не вверх.
Oleg
тч вот такая задача в общем то [one] host1 var=false [two] host2 var=true host3 var=false [three:children] one two сработает ли такой цикл и выдаст ли мне host2? {% for host in groups['three] %} {% if variable is var true %}
Sergey
а если [three:children] в самом начале списка инвентаря поставить?
Отношения иерархии в инвентори описываются как раз как раз с помощью с помощью параметра "children".
Oleg
Отношения иерархии в инвентори описываются как раз как раз с помощью с помощью параметра "children".
я взял пример с офф сайта , а там так: [atlanta] host1 host2 [raleigh] host2 host3 [southeast:children] atlanta raleigh
Sergey
а, тьфу.
Sergey
У тебя тут группы. Извини, туплю с утра 🤦🏻🤦🏻🤦🏻🤦🏻🤦🏻, и занимаюсь написанием дичи.
Sergey
Поправил, перечитай.
Sergey
да ничего страшного)
Пойду просыпаться.
Oleg
Вроде да, только проверка переменой какая то абстрактная, по другому вроде надо
хммм....вот так лучше if variable is defined или что имеется ввиду?
Vladislav 👻
if var вроде достаточно
Vladislav 👻
А вот если не объявлено может быть, то тогда надо по другому думать
Oleg
if var вроде достаточно
типо так {% if var == true %}?
Oleg
ааа...вот так имхо тогда надо {% if var is sameas true %}
Oleg
а не if variable is var true
Lamobot
тч вот такая задача в общем то [one] host1 var=false [two] host2 var=true host3 var=false [three:children] one two сработает ли такой цикл и выдаст ли мне host2? {% for host in groups['three] %} {% if variable is var true %}
По-моему, проще выполнить это таким образом: {% for host in groups['three] if hostvars[host]["var"] | bool %} https://jinja.palletsprojects.com/en/2.11.x/templates/#for
Dennis
Коллеги добрый день Не подскажите как в данном примере заменить все шаблоны одной переменной
Dennis
module: zabbix_host server_url: login_user: root login_password: "{{ zabbix_password }}" host_name: "{{ inventory_hostname }}" host_groups: "{{ zabbix_group_names }}" link_templates: - RELEX App Apache - Template App FreeIPA Client - RELEX App Table Sizes - RELEX blk - RELEX Server Defaults - Template App FTP Service Disabled - Template App Dnsmasq - Template App Fail2ban Service status: enabled
Vladislav 👻
вы про "вынести список в отдельную переменную"?
Dennis
да
Sergey
link_templates: "{{ your_list_var }}"
Sergey
ничего нового
Dennis
link_templates: "{{ your_list_var }}"
А сама перменную в данном случае как правильно объявить
Lamobot
А сама перменную в данном случае как правильно объявить
your_list_var: - "RELEX App Apache" - "Template App FreeIPA Client"
Dennis
Спасибо понятно теперь
Alex
Всем привет Копирую файл на сервер. tmp.j2 в файл хочу писать перменную: Os family: "{{ ansible_os_family }}" в итоге пишет текст, а не значение переменной
Boris 🦍
привет, хочу распарсить подобные строки в файле - "ee2796da8d9657c8bb81febec667b825" использую регулярку msg: "{{ deploy_info['content'] | b64decode | regex_findall('[a-z0-9]+') }}" все норм, все парсится, но как только добавляю в регулярку уточнение в виде количества 32 символов msg: "{{ deploy_info['content'] | b64decode | regex_findall('[a-z0-9]{32}+') }}" ошибку "msg": "Unexpected failure during module execution." вербоус больше ясности не дал. может кто знает как парвильно оформить регулярку с ограницением количества символов? что делаею не так?
Boris 🦍
сам спросил, сам овтетил - плюсик надо убрать, я ж ограничился количеством символов, значит он уже не нужен во втором выражении
Lev
Привет всем. Кто-нибудь делал разворачивание агента Zabbix через Ansible на Windows? Понимаю, что не совсем он подходит для этого, но вроде бы можно...
Lev
пробовал при помощи dj-wasabi, но видимо что-то не правильно делаю.
Lev
а конфиг можно будет указать? Я честно говоря пока только изучаю, думал будет проще через готовый инструмент dj-wasabi (первое, что гуглится), но он плохо задокументирован. Но по идее видимо будет проще, а то слишком много времени потратил уже. Спасибо за совет)
Aleksei
а конфиг можно будет указать? Я честно говоря пока только изучаю, думал будет проще через готовый инструмент dj-wasabi (первое, что гуглится), но он плохо задокументирован. Но по идее видимо будет проще, а то слишком много времени потратил уже. Спасибо за совет)
Заббикс агента не ставил, но делал много всего другого с Ansible на Windows. Обычно поступаю так. Смотрю официальную доку. Там внизу есть параметры для unattended установки https://www.zabbix.com/documentation/5.0/manual/installation/install_from_packages/win_msi Пробую поставить вручную с параметрами из доки, обычно взлетает не с первого раза. Когда добиваюсь успеха, переношу параметры в win_package https://docs.ansible.com/ansible/latest/collections/ansible/windows/win_package_module.html
Aleksei
Ну и опционально заварачиваю в роль потом, чтобы можно было переиспользовать в разных плейбуках
Dmitry
а день и правда отличный
Grek 🇺🇦
Коллеги, конфигурируем сервера, ставим пакеты, правим конфиги и тд. Лид проекта говорит что это не то и надо весь функционал по конфигурированию сервера вынести в деб пакет, чтоб прописал 1 репо, установил 1 пакет и он все настроил. Может я дурак и не понимаю этой мудрости...?
UglyKoyote
а зачем тогда ансибл..
Grek 🇺🇦
ну вот я написал роли и плейбуки. все деплоится на ура, и скейлится в кластерном варианте установки, удобно а хотят через деб все настраивать, я негодую
Sergey
Коллеги, конфигурируем сервера, ставим пакеты, правим конфиги и тд. Лид проекта говорит что это не то и надо весь функционал по конфигурированию сервера вынести в деб пакет, чтоб прописал 1 репо, установил 1 пакет и он все настроил. Может я дурак и не понимаю этой мудрости...?
Нет, это у дебиана, кхм, такая себе философия запихивания излишне "умных" скриптов в деб-пакеты. Предложи ему одним и тем же еб-пакетом что-либо кластерное, да ещё и с шареным стейтом "сконфигурировать" - кролик, редис, постгрес.
Sergey
Ну или проверить с помощью деб-пакета, что конфиги на, например, 20 тачках соответствуют тому, что в репе лежит.
Sergey
Гони его, насмехайся над ним.
Grek 🇺🇦
сори за офтоп, пригорело после митинга
Sergey
Ну ты знаешь, что делать. Будет сомневаться - приводи сюда, всем чатом объясним.
Sergey
Скрипты, даже и в деб-пакете - императивны. Идемпотентный баш писать устанет.
Denis 災 nobody
и в таком исполнении имеет смысл
Oleg
кто ниб создавал шаблоны для grafana через ansible?
UglyKoyote
nometa.xyz
Alex
почему не округляется( {{ (1837 * 0.8)/1000|round(1, 'floor') }} 1.4696 p.s. так норм) {{ ((1837 * 0.8)/1000)|round(1, 'floor') }}
Alex
еще вопрос в файл defaults/main.yml добавил такую переменную: my_var: {{ ((ansible_memtotal_mb * 0.8)/1000)|round(1, 'floor') }} пишет ошибку Syntax Error while loading YAML. did not find expected ',' or '}' в чем ошибка?
Grek 🇺🇦
кавыщки надо
Grek 🇺🇦
my_var: "{{ ((ansible_memtotal_mb * 0.8)/1000)|round(1, 'floor') }}"
Anatoliy
добрый вечер. кто-нибудь на это https://stackoverflow.com/questions/63941225/ansible-win-credentials-failing-asking-for-become-although-it-is-given наступал?
Alex
my_var: "{{ ((ansible_memtotal_mb * 0.8)/1000)|round(1, 'floor') }}"
пробовал но чет не работало) еще раз попробовал работает) спасибо а как быть с такии, кавычки не помогают tmp: "{{ ansible_eth0.ipv4.address.split(".")[2] }}"
Alex
не использовать магию вне Хогвардса) попробуйте внутри поставить одинарные кавычки
)) экранирование работает {{ ansible_eth0.ipv4.address.split(\".\")[2] }} спасибо)
Anatoliy
)) экранирование работает {{ ansible_eth0.ipv4.address.split(\".\")[2] }} спасибо)
tmp: "{{ ansible_eth0.ipv4.address.split('.')[2] }}" другой вариант
Sergey
Не изобретай велосипеды.
Jungo
я не так выразился - rm ls команды для примера всавил - в реале у меня там дамп баз последовательный на разные хосты идет - поэтому хотелось запустить последовательно, а список хостов и скриптов берется из списоков и комбинируется через nested
Oleg
товарищи! в defaults описана переменная таким видом logging: log_to_syslog: yes в цикле корректно я ее вызываю? {% if logging['log_to_syslog'] is defined %}
Oleg
С каких пор у нас переменные - это функции, которые надо вызывать?
ну не вызывать. всмысле jinja2 увидит значение переменной таким образом если описать в шаблоне?
Oleg
Вызываете корректно, но чего хотите при этом - непонятно :)
если переменная logging['log_to_syslog'] определена, то вставить кусок текста =)
Lamobot
Тогда норм