Dmitriy
спасибо! помогло
не за что, но ошибка гуглится быстро :)
Ivan
не за что, но ошибка гуглится быстро :)
я догадываюсь. правила прочитал уже после того как спросил)
AlexShmel🐝
Подскажите по поводу написания тестов на ansible, какие бестпрактис и пути ? нужно проверить условно связность хостов, работоспособность фаервола и всякого по мелочи
AlexShmel🐝
вагрант для виртуалок ?
sbog
Угу. Если надо несколько нод и проверять связность, то только так, имхо
AlexShmel🐝
у меня и так всё в клаудах крутицо
AlexShmel🐝
но там конечно могут быть проблемы связности на уровне клауда
AlexShmel🐝
хотя такое редко бывает
sbog
Ну ты же не на проде будешь тестить, а на CI, условно
Руслан
здравствуйте. Скажите пожалуйста, есть возможность эти переменные прописать в основном инвентори файле для каждого хоста отдельно?
Руслан
и чтобы это было не в строчку, а в красивом структурированном виде
Руслан
точнее, он у меня называется иначе
Руслан
я передаю название инвентори файла плейбуку при запуске
Руслан
в зависимости от того, с какой площадкой нужно иметь дело, меняется название инвентори файла, которое передаю
Lamobot
да
У инвентаря есть формат yaml, можно там. Или же писать в host_vars/<ansible_hostname> файл для каждого хоста
Руслан
здравствуйте. Скажите пожалуйста, есть возможность эти переменные прописать в основном инвентори файле для каждого хоста отдельно?
юзал групповые переменные в файле group_vars.bk/groupvariables.yml , но у меня эти названия могут отличаться на разных стендах
Lamobot
юзал групповые переменные в файле group_vars.bk/groupvariables.yml , но у меня эти названия могут отличаться на разных стендах
в host_vars/ можно так же прописать переменные, только для отдельных хостов, а не групп
Руслан
в host_vars/ можно так же прописать переменные, только для отдельных хостов, а не групп
у меня задача сделать так, чтобы файл, описывающий всю площадку, был один
Руслан
yaml - выход?
Lamobot
Если много хостов, то он будет неудобочитаемым. https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#assigning-a-variable-to-one-machine-host-variables
Lamobot
Тогда просто делайте инвентарь в yaml формате вместо ini
Руслан
попробую, спасибо большое
Vitaly
Немного не теме но горячая новость: https://twitter.com/AntNesterov/status/1205086129504104460
Tadeusz
да бля, во всех чатах это уже...
Logan
да бля, во всех чатах это уже...
потому как касается всех
Tadeusz
все во всех чатах
Ivan
Принт на футболку.
Vitaly
Принт на футболку.
Скорее N и поверху решетка тюремная :)
Max
Вообще нихрена не весело конечно
Руслан
господа, а yaml инвентори файлам можно передавать значения в виде переменных? Я не смог сформулировать запрос для гугла
Руслан
так, я сделал, спасибо)
Гайрат
Пришёл, запостил, решил
Отделение Bereke Bank
Подскажите. Пытаюсь исполнить следующее https://privatebin.net/?1ea3e61f0b6e5480#Bf1eLYL7ATwVTb1Krex5HcVPT9Qs6ctuj2QcyiWe99L3 Получаю FAILED! => {"msg": "An unhandled exception occurred while templating '{u'content': u'groups:\\n - name: system\\n rules:\\n - alert: InstanceDown\\n expr: up == 0\\n for: 5m\\n labels:\\n severity: high\\n annotations:\\n summary: \"Instance {{ $labels.instance }} down\"\\n description: \"{{ $labels.instance }} of job {{ $labels.job }} is down for more than 5 minutes.\" \\n', u'name': u'system_rules'}'. Error was a <class 'ansible.errors.AnsibleError'>, original message: template error while templating string: unexpected char u'$' at 182. String: groups:\n - name: system\n rules:\n - alert: InstanceDown\n expr: up == 0\n for: 5m\n labels:\n severity: high\n annotations:\n summary: \"Instance {{ $labels.instance }} down\"\n description: \"{{ $labels.instance }} of job {{ $labels.job }} is down for more than 5 minutes.\" \n"} Но. Если вставлять этот же текст без loop-а и item.content - все работает. Что я делаю не так?
Отделение Bereke Bank
И да. #странное
Никита
такое ощущение, ему $label не нравится
Отделение Bereke Bank
Так в content не строка у вас, а сложный словарь какой-то
у меня есть похожая таска, но там нет golang template синтаксиса. то есть blockinfile такой item.content вроде должен хавать
Отделение Bereke Bank
Попробуйте !unsafe как вариант
его перед | вставить?)
Отделение Bereke Bank
Попробуйте !unsafe как вариант
воткнул в одном месте - заработало даже там, где не ставил. странное поведение
Отделение Bereke Bank
Попробуйте !unsafe как вариант
В общем добавил !unsafe, убрал {{ '{{' }} и {{ '}}' }} - теперь все работает как надо. Спасибо 👍🏽
Отделение Bereke Bank
А вот AWX при синхронизации инвентори игнорит unsafe 😊
Lev
Подскажите по поводу написания тестов на ansible, какие бестпрактис и пути ? нужно проверить условно связность хостов, работоспособность фаервола и всякого по мелочи
Тут ниже по трэду советовали molecule + vagrant. В целом это один из возможных путей. Надо каким то образом создать инстансы(смотрим поддерживаеиые варианты) и потом их провижиним. В некоторых случаях можно обойтись докер контейнерами. Это может быстрее будет. Условно есть роль для провижининга бд и апп[1-3]. Роль с бд проверяем отдельно, апп каждое проверяем отдельно(для каждого апп подымаем бд из стандартного контейнера и конектим наше апп). И только после этого интеграционное на виртуалочках
Lev
Подскажите по поводу написания тестов на ansible, какие бестпрактис и пути ? нужно проверить условно связность хостов, работоспособность фаервола и всякого по мелочи
есть тут у меня подборочка что есть по теме тестирования IaC почитать\посмотреть: 2019 что я узнал протестировав 200 000 строк инфраструктурного кода 2019 Automated Testing for Terraform, Docker, Packer, Kubernetes, and More 2019 Infrastructure as Code for Software Engineers 2019 Practical Ansible testing with molecule 2019 Code together: mob-programming 2019 Better Ansible Network Automation with Roles and Custom Modules 2018 5 Lessons Learned From Writing Over 300,000 Lines of Infrastructure Code 2018 Integrating Infrastructure as Code into a Continuous Delivery Pipeline 2018 Эффективная разработка и сопровождение Ansible-ролей 2018 Ansible — это вам не bash! 2018 Test me if you can. Do YML developers Dream of testing ansible? 2018 Everything as Code 2018 Ansible идемпотентный 2018 Integrating Infrastructure as Code into a Continuous Delivery Pipeline 2018 How to Be an Ansible Contributor 2017 Ansible modules examples 2017 How-to test your own OS distribution 2015 Тестируем инфраструктуру как код
Valeriy
Господа , не пойму в чем дело. Есть плейбук который успешно выполняется с connection: local , host: localhost (делает provisioning vm в ovirt) и выполняет свою функцию при запуске с пустым inventory. При этом , как сборка пакета так и его исполнение происходит в venv (в который установлены ovirt-sdk) .Выхлоп ansible: <127.0.0.1> EXEC /bin/sh -c '/home/val/venv/bin/python3 /home/val/.ansible/tmp/ansible-tmp-1576225749.0324295-64548786816593/AnsiballZ_ovirt_auth.py && sleep 0' Но как только я пытаюсь вынести неокторые переменные в inventory ,а точнее после того как в invetory появляется localhost вижу следуюущую картину : 1. Сборка пакета происходит в venv (ок) 2. Для исполнения же пакета , ansible почему то наичнает искать общесистемный интерператор python 3. Находит и запускает его 4. Пакет падает (потому что ovirt-sdk установлен только в вирутальном оркужении) Выхлоп когда неуспешно: <localhost> EXEC /bin/sh -c '/usr/bin/python3 /home/val/.ansible/tmp/ansible-tmp-1576225692.6326375-272329681534606/AnsiballZ_ovirt_auth.py && sleep 0' Если localhost указать в качестве aansible ansible_python_interpreter: "/home/val/venv/bin/python3" то запуск проходит успешно. Но хотелось бы понять, с чем связано такое поведение. Может у когото есть идеи ?
Valeriy
Оказывается грабли известные, мне помогло это http://willthames.github.io/2018/07/01/connection-local-vs-delegate_to-localhost.html
Valeriy
Есть нюансы с предидущим решением , если у вас есть delegate to можете нарваться вот на такой баг https://github.com/ansible/ansible/issues/63180 шагаем по граблям дальше
Отделение Bereke Bank
Подскажите. Пытаюсь исполнить следующее https://privatebin.net/?1ea3e61f0b6e5480#Bf1eLYL7ATwVTb1Krex5HcVPT9Qs6ctuj2QcyiWe99L3 Получаю FAILED! => {"msg": "An unhandled exception occurred while templating '{u'content': u'groups:\\n - name: system\\n rules:\\n - alert: InstanceDown\\n expr: up == 0\\n for: 5m\\n labels:\\n severity: high\\n annotations:\\n summary: \"Instance {{ $labels.instance }} down\"\\n description: \"{{ $labels.instance }} of job {{ $labels.job }} is down for more than 5 minutes.\" \\n', u'name': u'system_rules'}'. Error was a <class 'ansible.errors.AnsibleError'>, original message: template error while templating string: unexpected char u'$' at 182. String: groups:\n - name: system\n rules:\n - alert: InstanceDown\n expr: up == 0\n for: 5m\n labels:\n severity: high\n annotations:\n summary: \"Instance {{ $labels.instance }} down\"\n description: \"{{ $labels.instance }} of job {{ $labels.job }} is down for more than 5 minutes.\" \n"} Но. Если вставлять этот же текст без loop-а и item.content - все работает. Что я делаю не так?
В общем странная ситуация с loop-ом , в котором есть такой вырвиглазный текст. Даже в debug-е https://privatebin.net/?fbba608c519ef658#GjFZUM1PWnMV4iYGYbPoeZXq5nG1PzjEwJxdmQhUVrK
Nikita
Добрый день, кто-нибудь использует galaxy self hosted?
Timur
Добрый день, кто-нибудь использует galaxy self hosted?
у меня в планах, но пока дальше поднятия на локалхосте дело не заходило
Nikita
Вопрос такой, он работает с гитлабом?
Timur
ну я полагаю, что в пайплайн интегрировать можно
Timur
коммит делаешь - он тебе роль пушит в galaxy
Timur
а у вас уже поднято? Поделитесь подводными камнями
Nikita
Не, композом на ноуте поднял, с джангой надо разобраться. Я просто хотел понять принцип. То есть он сам к себя код хранит ?
Nikita
А версионость есть как в гите?
Nikita
Чтобы биндится на конкретные версии
Timur
из документации: "Galaxy imports content from repositories on GitHub, and as part of the import process, it scans the repository’s git tags, looking for any that match the Semantic Version format. Tags that match the format are considered to be versions and imported, and those that don’t are skipped."
Nikita
Хм...все таки интересно больше с гитлабом. Ладно, буду разбираться
Andor
а подскажите, как мне передать в lookup hashi_vault параметр с пробелом?
Andor
там для парсинга параметров используется тупое .split()
Andor
https://github.com/ansible/ansible/blob/devel/lib/ansible/plugins/lookup/hashi_vault.py#L280
Andor
конкретнее - я хочу туда передать публичный ssh-ключ
Andor
https://www.vaultproject.io/api/secret/ssh/index.html#sample-payload-7 API ожидает прямо контент с пробелами и всем остальным
@andreyus
написать свой скрипт для взаимодействия с vault, как вариант.
Andor
ну я могу и внешнюю команду vault подёргать, это не отвечает на мой вопрос
Andor
не ююкать а именно base64?
Timur
заююкай мне нетмылом на бекбон
Timur
вьетнамские флэшбеки :)