inqfen
И общие переменные все туда
inqfen
И 2 инвентори
inqfen
all и env
Timur
Главное, чтобы вы понимали, что делаете
inqfen
По очереди применяются сначала общий, потом енв специфик
inqfen
Главное, чтобы вы понимали, что делаете
К такому построению пришёл за 2 года экспериментов и подводных камней
Max
еще есть вариант динамического инвентаря.
Max
но не всегда полезен.
Timur
еще есть вариант динамического инвентаря.
Это не нужно, если энв у вас статичный
inqfen
Пока в коде
inqfen
Все инфраструктурное уйдёт в динамик инвентори
Max
если энвы рожает терраформ, тэгает хосты правильно.
inqfen
Все кодоспецифичное там и останется
Max
тогда их мона тянуть динамически.....
inqfen
если энвы рожает терраформ, тэгает хосты правильно.
Это тоже ансиблом, терраформ по некоторым причинам неприменим
Timur
тогда их мона тянуть динамически.....
Это не решает проблему неправильной группировки
Warrax
Я всегда группу all завожу
в смысле? это же предопределенная группа?
Max
Это не решает проблему неправильной группировки
не решит. но revisit может помочь понять лучше.
inqfen
в смысле? это же предопределенная группа?
Да, но с ней есть какие-то косяки если явно не задать, уже не помню что не так
inqfen
Это не решает проблему неправильной группировки
Проблему неправильной группировки голова решать должна
Timur
Группы нужно правильно готовить просто
Warrax
[gname] a b c [gname:vars] x='X'
👍 через переменную заработало, так даже проще оказалось - не нужно за очередностью групп следить, тем более что с принципом очередности групп в списке непонятно
Asgoret
коллеги, добрый день. как средствами ансибла можно распарсить текст (ключ: значение), чтобы получить эти переменные отдельно с последующей возможностью вставить их в шаблон? Пример: key: value Шаблон1(indent 15): - name: key value: value Шаблон2(indent 5): - name: key value: value UPD: само собой там будет несколько пар и связность не должна потеряться
Asgoret
Asgoret
https://t.me/pro_ansible/73855 оно?
да, оно) спасибо) осталось понять как его заюзать))
Timur
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#items2dict-filter
Timur
Есть обратный фильтр - dict2items
Timur
{{ dict | dict2items }} Which turns: tags: Application: payment Environment: dev into: - key: Application value: payment - key: Environment value: dev
Asgoret
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#items2dict-filter
ага, пытаюсь его тоже побежить теперь) проблема в том, что данные на которые необходимо наложить фильтр сначала надо прочитать из файла и я получаю: dict2items requires a dictionary
Timur
Покажите код и сам файл, если можно
Asgoret
Покажите код и сам файл, если можно
- hosts: localhost tasks: - name: Find all config files find: paths: "/Users/user/Documents/GitLab/deploy/roles/test/configs/server" patterns: '*.env' register: env - name: Create output vars: contents: "{{ lookup('file', item.path ) }}" debug: msg: "{{ tags | dict2items, contents }}" loop: "{{ env.files }}"
Asgoret
Покажите код и сам файл, если можно
а в файле просто: test_key: test_value
Timur
Зачем лукапом? Почему не просто vars_files?
Max
yaml|json грузятся на ура еще с 1.6
nett00n
Чат, кто-нибудь уже пользовался https://github.com/jnv/ansible-role-unattended-upgrades плюсы, минусы, подводные камни?
Asgoret
Зачем лукапом? Почему не просто vars_files?
потому что список динамический, а все примеры на статических файлах. и я не нашел способа заставить ансибл читать множество файлов без лупа
Asgoret
или вытаскивать их них данные
Asgoret
Зачем лукапом? Почему не просто vars_files?
в любом случае, это тонкости. проблема как раз в модуле tags и попытке обработать содержимое найденных файлов
Max
Чат, кто-нибудь уже пользовался https://github.com/jnv/ansible-role-unattended-upgrades плюсы, минусы, подводные камни?
сегодня по-хорошему ты жаришь образа, тестишь, и закручиваешь их, всё это unattended. не понял целевую группу проекта: люди из 90х, которые проснулись из спячки после комы ?
Timur
Max
(я и сам оттуда, но свезло, и в коме не был пока)
Asgoret
- name: Include all .env files from directory include_vars: dir: /Users/user/Documents/GitLab/deploy/roles/test/configs/server extensions: - env Так не пойдет?
возможно, это можно потом потестить) лучше подскажи, как заставить оттуда контент обработаться tags?
nett00n
сегодня по-хорошему ты жаришь образа, тестишь, и закручиваешь их, всё это unattended. не понял целевую группу проекта: люди из 90х, которые проснулись из спячки после комы ?
по-хорошему всё говно неплохо было бы перенести в кубер с образами на альпайне, но на деле имеем овердофига легаси, многое из которого может работать тольког бареметал
nett00n
а образа можно тестировать и с pxe...
У меня задача поддержать сесурити обновленными ос на множестве хостов.
Asgoret
А конкретнее можно? В чем проблема с tags?
fatal: [localhost]: FAILED! => {"msg": "dict2items requires a dictionary, got <class 'jinja2.runtime.StrictUndefined'> instead."}
Timur
Чат, кто-нибудь уже пользовался https://github.com/jnv/ansible-role-unattended-upgrades плюсы, минусы, подводные камни?
В чем вопрос-то? По ансибл роли или по самому пакету, который он ставит
Timur
Сама роль простая как валенок - по сути просто устанавливает один пакет из apt с нужными параметрами
Timur
Хотя бы примерно
Asgoret
там одна строчка) вот эта) все)
Timur
А откуда вы tags тогда взять хотите?
nett00n
В чем вопрос-то? По ансибл роли или по самому пакету, который он ставит
Больше по роли. Сам еще не смотрел, может кто уже решал подобную задачу и "не, говно, потому что n"
Timur
Больше по роли. Сам еще не смотрел, может кто уже решал подобную задачу и "не, говно, потому что n"
В чем вопрос по роли? В роли 6 тасков по сути. Из них 2 - выставление переменных и еще 2 - закидывание этих переменных в конфиги apt через темплейты.
Timur
Один таск - установка пакета unattended, и еще один - ребут
Timur
Все
Asgoret
А откуда вы tags тогда взять хотите?
а как тогда разложить это по name: test_ket value: test_value?
Timur
а как тогда разложить это по name: test_ket value: test_value?
Конструкция вида {{ tags | dict2items }} подразумевает, что в переменной tags у вас есть какой-то словарь. Какой и откуда он берется?
Timur
Я как-то непонятно спрашиваю, что ли :)
Timur
Выше был код плейбуки. Там вызывалась переменная tags, но где она задается и какое у нее значение - непонятно. Можно прояснить этот момент?
Asgoret
Выше был код плейбуки. Там вызывалась переменная tags, но где она задается и какое у нее значение - непонятно. Можно прояснить этот момент?
нет этой переменной, там просто файл с ключ:значение. обычный енв файл, который надо разложить на name: key value: value
Timur
Разумеется в таком случае будет ошибка
Timur
Или вы в переменную tags хотите загнать результат dict2items?
Asgoret
Или вы в переменную tags хотите загнать результат dict2items?
нет. Просто трансформировать key:value -> name: key value: value
Timur
нет. Просто трансформировать key:value -> name: key value: value
Откуда трансформировать-то? Выше конструкция {{ tags | dict2items }} - это значит, что нужно взять словарь из переменной tags и обработать его фильтрм dict2items
Timur
Т.е. в переменной tags должен быть какой-то словарь