Alf 🙀
+1
на двушечку я сегодня уже насобирал, спасибо
Sergey
😃
Alex
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
O
@tnt4brain а если не трудно - ткни носом плиз, если завалялось хистори
Sergey
на доку чтоль?
Sergey
http://docs.ansible.com/ansible/latest/include_role_module.html
O
на ссыль в доке... я пытался когда то искать новые фичи по релизам... так и не в курил... приходилось заново по кругу читать маны
O
спасибо
Sergey
пожалуйста
Gleb
Sergey
У меян таких задач не стояло, а теоретически можешь передать заранее оговорённую с собой же переменную 😊
Nklya
Ещё нет
Dmitrii
Dmitrii
Астанавитесь
Aleksey
про костыли надо знать.
Womchik
Вдруг упал, а нужно бежать
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
Нет, тут как я понимаю имеется в виду раскатывание кода (образов) по хостам
Alf 🙀
Alf 🙀
У вас ансибл в той же репке что и продукт?
Alf 🙀
Или вы передаете артефакт между репками/пайплайнами?
G3rhard
G3rhard
Alf 🙀
Karey
https://www.bevuta.com/en/blog/continuous-delivery-with-gitlab-ci-and-ansible-part-1/
Karey
Видел эту статью?
Karey
Там много полезного можно подчерпнуть
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?
Sergey
maniac
и я.
Dmitry
это я сам себе предложил
Dmitrii
Кароч это херовая затея, ИМХО
Dmitrii
Я убежал на Terraform
Dmitry
да мне надо очень маленькие задачи решать
Dmitry
у меня кластер кубернетис раскатывается чере kube-aws
Dmitry
и надо иногда докидывать мелочишку на ноду
Dmitry
бинари там, агенты
Dmitry
и всякое
Dmitrii
Так тебе авсом рулить или в ноду докидывать всякое говно?
Dmitrii
Ты уж определись )
Dmitry
kube-aws раскатывает ноды с кубернетисом+апи+етцд
Dmitry
и на эти ноды я хотет доставлять бинари и системд
Dmitry
ну вот ансиблом мне кажется просто, но я упираюсь что в отсутсвие питона