George
Павел П.
Timur
Timur
Просто работайте с сервисом через него - он сам будет вызывать нужные низкоуровневые команды
Павел П.
Павел П.
я о том и пишу
Timur
А, понял
Timur
Момент
Timur
Супервизор, вроде, не входит в список встроенных init systems
Timur
Или я не прав?
Timur
Т.е. через факты его просто так не получится задетектить
Timur
Или у вас сервис менеджер задается отдельно специальным параметром?
John
Вы ждали от меня идиотизма? а я его при(в)нёс :D
local_action: command ansible-galaxy install {{ item }} --roles-path ./roles
become: no
with_items:
- "{{ ansible_roles_list }}"
-
local_action: command ansible-playbook --inventory ./inventory/testinv.yml prometheus.yml --limit test-prom0
become: no
И в консоле тишина) там наверняка ставится прометеус выкаченный только что предыдущей задачей)))
Timur
Павел П.
он не задается - он есть)
На самом деле сам не знаю почти ничего про СИ. знаю только что есть старые системы с инит.д и поновее с супервизором.
Timur
Супервизор - это отдельная приблуда
John
Timur
Это не встроенный сервис
Timur
Т.е. сначала надо решить задачу - как корректно определять - каким сервис-менеджером пользоваться
Павел П.
парсить вывод ls -l /proc/1/exe можно...
John
Timur
Timur
Тонкий троллинг
Timur
Павел П.
проедемте.
John
Тонкий троллинг
я долго бился) и наконец полностью автоматизировал)))
А потом посмотрел на то что получилось и подумал "Ну ты и мудак" (обращаясь к себе естественно :D
цитата из к/ф "о чем говорят мужчины"))
Timur
А не супервизор
Timur
Даже если он стоит
Павел П.
да, так
Павел П.
Timur
Более того - супервизор обычно сам через systemd запускается :)
George
George
supervisord нахрен не нужен в системах с systemd
George
Это не означает, что systemd идеален, нет. Но тащить лишние компоненты - это мощь. А осилить нужно всего лишь юнитонаписание
George
George
Timur
Без повышения привилегий
George
Timur
Такой вариант хорош только, если вариантов не более двух
Timur
Иначе получается малочитабельная многоуровневая портянка
Timur
Timur
Например, варианты выбора определяются одним параметром, который может принимать несколько разных значений, задаваемых в inventory или других местах
Timur
Можно сделать инклуд по условию с вызовом файла с именем, равным соответствующему значению параметра.
Павел П.
конкретно это скрипт собирающий инвентори не обрабатывает
Павел П.
но можно будет заморочиться, да)
Спасибо
Timur
Как вариант для выбора тасков, специфичных для конктретной версии OS:
- name: "Choose platform based task "
include_tasks: "{{ platform }}"
with_first_found:
- "setup-{{ ansible_os_family }}.yml"
- "not-supported.yml"
loop_control:
loop_var: platform
Timur
Работает даже, если запускать на нескольких разных дистрибутивах Linux и Windows
Павел П.
куль. в закладки унес
Timur
При этом, разумеется, в роли должны быть таски, соответствующие нужным значениям ansible_os_family, которые поддерживает роль
Timur
В случае, если такой файл не найден, вызывается дефолтный файл с тасками not-supported.yml
Timur
Этот же подход работает и с любым другим параметром, который может принимать несколько различных значений
Александр
Господа, есть каталог, внутри плейбук и vars, в плейбуке include ./vars/file но vars в gitinore. Как бы подставить внешний путь к vars через параметры при вызове ansible-playbook?
Timur
Timur
Я нифига не понял, кто на ком стоял
Timur
И при чем тут вообще gitignore
Александр
И при чем тут вообще gitignore
Есть проект в git для деплоя. На моей локальной машине есть каталог vars, который исключен с главного репозитария на центральном сервере с помощью gitignore. Есть сборочный конвейер, который стягивает репу с центрального сервера, очищая предварительно рабочий каталог. И запускает плейбуки.
Александр
Проблема в том, что если я создам на сборочной машине vars, то со следующим обновлением репозитария vars будет удалён.
Александр
Поэтому надо указать размещение vars_files в плейбуке или передать его.
Aleksey
Александр
Иначе vars не был бы vars`ом
Aleksey
Александр
Отдельный VAULT сервис поднимать?
Timur
Timur
Что мешает-то?
Aleksey
Timur
Aleksey