Alf 🙀
+1
на двушечку я сегодня уже насобирал, спасибо
Sergey
😃
Sergey
Всем привет. Скорее всего, я побуду капитаном Очевидность, но недавно вычитал в доках по ансиблу крутую штуку. В общем, начиная с версии 2.2, можно вызывать роли как обычные таски. При этом роль полностью загружает все свои параметры - локальные, глобальные. из окружения и пр. Пример использования: одна из ролей вызывает часть другой (примерно как функцию!), а результат - использует. Ещё один шаг к уменьшению количества глобальных переменных. Крутотень просто!
Aleksey
интересно
Aleksey
продолжай
Sergey
Вот как это выглядит с конкретными буквами:
Sergey
- name: Pull другаяроль information include_role: name: другаяроль tasks_from: facts.yml vars_from: main.yml - name: Add imported values set_fact: другаяроль: '{{ другаяроль | combine({ item.key: item.value }) }}' with_dict: "{{ fact_result }}"
Sergey
а тем временем в другаяроль/tasks/facts.yml: - name: Pass this package's path to another role set_fact: fact_result: deploy_path: "{{ deploy_path }}" ver_maj_min: "{{ ver_maj_min }}"
Sergey
ну и всё, теперь исходная вызывающая роль знает нужные параметры от "другаяроль".
Sergey
===== 8X ======== 8X =====
O
@tnt4brain а если не трудно - ткни носом плиз, если завалялось хистори
Sergey
на доку чтоль?
Sergey
http://docs.ansible.com/ansible/latest/include_role_module.html
O
на ссыль в доке... я пытался когда то искать новые фичи по релизам... так и не в курил... приходилось заново по кругу читать маны
O
спасибо
Sergey
пожалуйста
Sergey
У меян таких задач не стояло, а теоретически можешь передать заранее оговорённую с собой же переменную 😊
Nklya
Ещё нет
Dmitrii
Астанавитесь
Aleksey
про костыли надо знать.
Womchik
Вдруг упал, а нужно бежать
Pavel
про костыли надо знать.
костыли должны быть резиновыми, чтобы решение - гибким
Roman
подскажите пожалуйста, кто сталкивался - хочу прикрутить lock к рсинку, который я запускаю по крону внутри скрипта с "shell:". Правильнее накостылить отдельные таски под 'записать лок' и 'удалить лок', или есть более крутой вариант? 'allow_duplicates: false', похоже, не мой случай
Roman
when: stat_result.stat.exists == False вроде простой вариант, но если выполнение обломится и файл останется, то и дальнейшие запуски будут бесполезными
Alf 🙀
вы ансибл из крона дергаете?
Roman
да. рсинковый модуль не используется (предсказуемый следующий вопрос)
Alf 🙀
да, не, какие уж тут вопросы
Константин
контекст не понятен, но можно еще через chpst -L lockfile rsync запускать
Roman
ну да, flock и прочие можно завернуть, только нечитаемый треш получается
Vitaly
А зачем Лок то?) Много кронов запускает одинаковые ансиблы?
Константин
если задача выполняется например раз в 10 минут и за эти 10 минут по какой-то причине не успела выполнится, чтобы не запустилась вторая копия
Vitaly
Можно же в посте удалить лок-файл, независимо от результата выполнения
Vitaly
post_tasks:
Roman
спасибо
G3rhard
Народ, интересует ваше видение best practices использования gitlab'a в связке с ansible, думаю насчет запуска плейбуков после тестов (через ansible-lint в .gitlab-ci.yml) - а как лучше всего дальше запускать их?
Vitaly
@g3rhard а какая цель / что хочешь получить от связки? gitlab хорошо разворачивается через ansible, да :) и зачем запускать плейбуки после их теста? тут хитрый CI-процесс с воркерами?
Karey
Нет, тут как я понимаю имеется в виду раскатывание кода (образов) по хостам
G3rhard
Нет, тут как я понимаю имеется в виду раскатывание кода (образов) по хостам
Да, извиняюсь что не дописал Цель проста - запускать плейбуки после удачного прохождения тестов - а гитлаб как средство ревизии кода, и что бы видеть кто и какие правки вносил в конфигурации
Alf 🙀
У вас ансибл в той же репке что и продукт?
Alf 🙀
Или вы передаете артефакт между репками/пайплайнами?
G3rhard
У вас ансибл в той же репке что и продукт?
ansible и gitlab на разных хостах висят
Alf 🙀
а есть разница?
Да, продуктовые тесты не привязаны к ансиблу, обычно
Karey
https://www.bevuta.com/en/blog/continuous-delivery-with-gitlab-ci-and-ansible-part-1/
Karey
Видел эту статью?
Karey
Там много полезного можно подчерпнуть
G3rhard
https://www.bevuta.com/en/blog/continuous-delivery-with-gitlab-ci-and-ansible-part-1/
спасибо, не видел кажется переводы видел на хабре, или просто статью по мотивам - но именно этой нет )
G3rhard
все, вопросов пока не имею, всем спасибо
G3rhard
ansible и gitlab на разных хостах висят
просто я думал (как нуб в этой теме) - что гитлаб - один сервер - и мало ли какие на нем проверки крутятся - а для запуска плейбуков и ролей нужен другой сервер - собственно с которого сейчас ручками все правится и запускается
Karey
Нет, отдельный сервер не нужен, нужен лишь runner
Karey
Хотя он может быть где угодно
Dmitry
а кто рулил авсом с помощью анса?
Dmitry
https://coreos.com/blog/managing-coreos-with-ansible.html
Dmitry
вот тут пиздеж
Dmitry
у меня не взлетело
Dmitry
find . -name python тоже нихуя не нашел
Nklya
авсом или coreos?
maniac
и я.
Dmitrii
а кто рулил авсом с помощью анса?
Это полный пиздец, лучше беги сразу от тех кто тебе такое предлагает
Dmitry
это я сам себе предложил
Dmitrii
Кароч это херовая затея, ИМХО
Dmitrii
Я убежал на Terraform
Evgeniy
это я сам себе предложил
я рулил, могу поделиться опытом
Dmitry
да мне надо очень маленькие задачи решать
Dmitry
у меня кластер кубернетис раскатывается чере kube-aws
Dmitry
и надо иногда докидывать мелочишку на ноду
Dmitry
бинари там, агенты
Dmitry
и всякое
Dmitrii
Так тебе авсом рулить или в ноду докидывать всякое говно?
Dmitrii
Ты уж определись )
Dmitry
kube-aws раскатывает ноды с кубернетисом+апи+етцд
Dmitry
и на эти ноды я хотет доставлять бинари и системд
Dmitry
ну вот ансиблом мне кажется просто, но я упираюсь что в отсутсвие питона