Alexey
С виду упростить (но как бывает, по факту может и усложнить задачу)
Alexey
Ну и что бы понять и знать конечно ))
Alexey
Спасибо, приму на заметку, а так что бы знать для себя?
username
Смотря с каким инвентори запускаете, если там все хосты то на все и пойдёт,
Alexey
Понятно, значит вообще не пригодно.. Спасибо, буду читать про роли..
Maksim
Нужно в Meta прописать зависимость от роли, но с одним примечанием. Эта роль должна выполняться, если переменная в определенном значении. Как это можно сделать?
Div
добрый день, коллеги. я к вам с дурацким вопросом. как адаптировать регекс вида ((?:\w+-?)+)-\* для фильтра regex_findall ? в голом виде я получаю сообщение : - debug: msg: "{{ pkgs | regex_findall('((?:\w+-?)+)-\*')}}" ^ here
Max
какой тру способ управлять IP параметрами адресс маска гейт и т.д. ?
Div
У тебя тут фильтр даже не вызывался так-то
Можно пример с вызовом? Я вроде как все по доке делал...
Dmitry
А кто скажет что они хотели скзаать этим коментом # Example that prints two lines of messages, but only if there is an environment value set - debug: msg: - "Provisioning based on YOUR_KEY which is: {{ lookup('env', 'YOUR_KEY') }}" - "These servers were built using the password of '{{ password_used }}'. Please retain this for later use."
Dmitry
там в примерах
Timur
Если не задано - то в строке будет пустое место
Timur
Но сформулировано криво, согласен
Ivan
Закапайте
по две капли в каждый глаз?
Aleksey
Думаю тут минимум по 4
Aleksey
Выпилить всё из ядра
Aleksey
Нда
Lev
Выпилить всё из ядра
думаю они пошли по пути Ansible(посмотри тот же packer да и в целом hashicorp). выкинуть все из ядра и расширять плагинами. Меньше кода в ядре - меньше кодовая база - проще ревьюить итд. не тебе же это объяснять)
Alexey
Всем доброго дня, подскажите не могу найти как через Ansible добавить статический маршрут через интерфейс, что то типа такого: 239.192.0.0/16 dev bond0.800
Андрей
если хочешь совсем костыль, можно через shell:
Alexey
даа.. или файлом но это не совсем то чего бы хотелось...
Div
У тебя тут фильтр даже не вызывался так-то
нашел свой косяк. нужно было так '{{ pkgs.stderr_lines[0] | regex_findall("((?:\w+-?)+)-\*")}}'
Maksim
Подскажите, как мне в handlers занести 2 таска с одинаковыми названиями ( чтобы их из notify вызывать), но с разными условиями
Div
Ну можешь же, когда хочешь! 👍
я был мотивирован анальными карами сверху))
Maksim
- name: nginx-admin was configured service: name: nginx state: reloaded enabled: yes when: ssl.enabled - name: nginx-admin was configured service: name: openresty state: restarted enabled: yes when: not ssl.enabled Так не работает, делает проверку по первому таску, говорит что false и дальше нре идет
Div
а не проще убрать условия в хэндлерах и приклеить их к таскам?
Vladislav 👻
А расскажите, у кого какие практики по значению ansible_managed? Есть где-то список переменных, которые можно там использовать?
Vladislav 👻
Я так понимаю, только это... # Format of string {{ ansible_managed }} available within Jinja2 # templates indicates to users editing templates files will be replaced. # replacing {file}, {host} and {uid} and strftime codes with proper values. # #ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} # {file}, {host}, {uid}, and the timestamp can all interfere with idempotence # in some situations so the default is a static string: # #ansible_managed = Ansible managed
Stefan
господа, проясните такой момент ансибл умеет делать так? {% for alias in aliases.administrator, aliases.postmaster %} ALIASES: '{{ alias.name }}' {% endfor %} сами переменные выглядят так: aliases: administrator: - name: 'administrator:mtu_hd@domain.com;' postmaster: - name: 'postmaster:mtu_hd@domain.com;' а то ругается: "AnsibleUndefinedVariable: 'list object' has no attribute 'name'"}
Stefan
если одно что-то оставлю, то работает..
Stefan
куда копнуть можно?
Sergey
{% for alias in (aliases['administrator'] + aliases['postmaster']) %} не надо копать, достаточно просто сделать то, что я выше написал
[IPT] Dmitry
а как-то можно более сразу выводить всегда stdout из shell вместо дополнительного task с debug msg?
[IPT] Dmitry
можно пример? я имею ввиду, что-то типа - name: some shell shell: "echo some_stdout" stdout: true вместо - name: some shell shell: "echo some_stdout" register: shell_result - name: print shell stdout debug: msg: "{{ shell_result.stdout }}"
[IPT] Dmitry
в общем, хотелось бы любой более элегантный вариант
Vladislav 👻
ansible -m shell -a?
Vladislav 👻
или вам надо 100500 в stdout? o_0
[IPT] Dmitry
все наверно уже пьяны 😁 блин, вопрос вроде явный и понятный 🤔
Vladislav 👻
ну просто в таске это избыток, есть -v, есть дебаг, более того, есть тег под дебаг
[IPT] Dmitry
кому избыток, а кому норм. у меня там вложенная идемпотентность, хочу всегда знать что там
Sergey
ansible 2.9 может в loop через списки, в которых есть списки хешей?
inqfen
каких хешей?
Sergey
в доке вот смотрю https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#iterating-over-a-simple-list - это список https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#iterating-over-a-list-of-hashes - список с хешами я хочу вложить второе в первое, но луп не хочет брать)
inqfen
А, список словарей
inqfen
Ты пальцем лучше код покажи
Sergey
- name: Deploy file_sd rules template: src: "{{ item.src }}" dest: "{{ item.dest }}" loop: - "{{ file_sd_configs }}" - "{{ prometheus_rules }}" - "{{ grafana_configs }}" с with_items это работало, я просто на loop перевожу
Sergey
сам словарь задан через инклюд ямла с переменными
Sergey
а получаю "The task includes an option with an undefined variable. The error was: 'list object' has no attribute 'dest'
Vladislav 👻
точно можно через инклуд, но я все равно не понял, зачем так сложно
inqfen
dict2items
inqfen
Типа "{{ file_sd_configs | dict2items }}"
Sergey
точно можно через инклуд, но я все равно не понял, зачем так сложно
изначальная цель - скрыть 50 строк в словаре вида src dest в переменную и не срать в майн ямле с тасками им
Sergey
- name: Deploy file_sd rules template: src: "{{ item.src }}" dest: "{{ item.dest }}" loop: - "{{ file_sd_configs }}" - "{{ prometheus_rules }}" - "{{ grafana_configs }}" с with_items это работало, я просто на loop перевожу
ну проще же можно: - name: Deploy file_sd rules template: src: "{{ item['src'] }}" dest: "{{ item['dest'] }}" loop: "{{ file_sd_configs + prometheus_rules + grafana_configs}}" Если там внутри три списка лежит.
Alexey
А можете помочь новичку пожалуйста.. чисто косметический вопрос, есть переменная: nginx_http_log_format: | '$remote_addr - $remote_user [$time_local] "$request"' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"' Выводится вот так: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; А хотелось бы что бы было так: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
Alexey
Переменная
Alexey
Её результат
Alexey
То чего бы хотелось
Sergey
То чего бы хотелось
https://yaml.org/spec/1.2/spec.html#id2760395
Alexey
Спасибо покурю)
Tadeusz
правильно ли я понимаю что модуль git не умеет commit/push? только костылить через shell ?
Отделение Bereke Bank
А зачем? 🤔
Tadeusz
ну вот есть такой кейс )
Tadeusz
да, костыльно-каличный, но надо
Tadeusz
а можно пример?
Timur
а можно пример?
Пример чего конкретно?