Serge
спасибо:)
Serge
чо то у меня есть ощущение, что я на SO пойду сейчас про Salt спрашивать. докатились, блин.
Alf 🙀
Ну пипец
так может ближе к вопросу?
🏳️ Phil
Ивана кто-нидь забанит уже?
🏳️ Phil
https://t.me/Blockchain_Developers
Или давайте все к нему зайдем потрем про Salt vs Ansible
Serge
Ивана кто-нидь забанит уже?
я забанил два аккаунта в @spbpython
Serge
а что ты спросить то хочешь?
вот вопрос про Salt почему так не работает? Install my thing: cmd.run: - name: do thing after <file> exists - wait: - cmd.run: ls <file>
Serge
ну т.е. вообще как надо то?
Serge
предыдущая команда делает фигню, которую можно отследить по появлению файла
Serge
я хочу вот этот стейт с cmd.run накладывать не раньше появления файла
Alf 🙀
ок
Serge
ок
ну вот чего ок? оно выполняет do thing ... до появления файла
Dmitry
кровь из глаз
Dmitry
unless чтоли ему нужен
Serge
дальше следуют маты про 4 убитых часа, кровь из глаз и заберите меня отсюда
Dmitry
а не, ему нужен creates вроде
Alf 🙀
Serge
а не, ему нужен creates вроде
типа в первую команду creates и require на ту команду?
Dmitry
можно и трусы через голову надеть, безусловно
Alf 🙀
типа в первую команду creates и require на ту команду?
require в комманду которая зависит от вывода первой и туда уже от чего оно там зависит
Dmitry
там еще и onchanges пахнет
Dmitry
но через require проще :)
Dmitry
короче, кровь из глаз.
Dmitry
начиная с cmd.run прямо кровь из глаз
Serge
а что не так-то? ну надо запустить команду, не писать же модуль свой ради одного запуска одной инструкции
Serge
расширю контекст
Alf 🙀
там еще и onchanges пахнет
ему же как стейт нужен файл а не состояние файла, если я правльно понял
Dmitry
расширь лучше не контекст, а объясни, почему элементарного require не хватает ?
Dmitry
может мы поймем что-то, чего не видим
Serge
запускаю докер контейнер с помощью dockerng.running маунчу volume надо запустить docker exec, чтобы запустить команду в этом контейнере, но не раньше чем контейнер поднимется, потому что иначе, очевидно, запускать нечего.
Serge
у вас есть комманда в контейнере которая не запускается при старте контейнера? так?
ну типа, это просто сервисный бинарь, который лежит там в /usr/lib
Serge
это типа cli к основному процессу в контейнере
Serge
в шеле на хосте всё работает;)
Alf 🙀
ну типа, это просто сервисный бинарь, который лежит там в /usr/lib
я никого не хочу учить жить но это плохая практика так делать
Serge
я никого не хочу учить жить но это плохая практика так делать
типа плодить отдельный compose с отдельной секцией c require?
Serge
но так не пойдет. мне нужен exec в этой контейнере, чтобы по localhost я мог достучаться до процесса
Serge
я никого не хочу учить жить но это плохая практика так делать
это пока единственный путь, которым я смог командой в консоли поставить плагин в Jenkins :)
Alf 🙀
типа плодить отдельный compose с отдельной секцией c require?
я бы если честно написал бы поверху вашего процесса определенный враппер который бы работал как стартер.сш и запускал бы все в правильном порядке и лежал бы он в энтрипоинте
Alf 🙀
но я опять же не хочу никого учить жить
Serge
я бы если честно написал бы поверху вашего процесса определенный враппер который бы работал как стартер.сш и запускал бы все в правильном порядке и лежал бы он в энтрипоинте
мне не надо чтобы оно вместе работало. мне надо запустить cli, сказать ему "поставь плагин" и всё. разовый запуск команды.
Serge
я бы если честно написал бы поверху вашего процесса определенный враппер который бы работал как стартер.сш и запускал бы все в правильном порядке и лежал бы он в энтрипоинте
и чтобы положить в контейнер .sh, мне надо сделать свой контейнер на базе родного jenkins, который придется поддерживать еще
Serge
и как там внутри стартиться jenkins я не очень хочу знать
Serge
+ и завернуть это всё в юнит systemd
вы офонарели? ради запуска одного скрипта, гонять в контейнере разухабистый зоопарк system.d?
Konstantin
Я правильно понял что изначально задача стоит запускать настроенный дженкинс с нужными плагинами?
Serge
щас будет предложено собрать контейнер с уже установленными плагинами:)
Serge
давайте решим, что я так сделаю когда-нибудь. а сейчас в рамках изучения сраного солта, я хочу запустить команду в шеле, после появления файлика:)
Dmitry
щито значит "после"
Dmitry
давай так, запускаешь, если файлик существует
Serge
ну, т.е. вот очевидно, что солт в dockerng.running воспринимает runnning не как стейт, которого надо добиться, а просто дает команду запустить контейнер и не дожидаясь успеха идет дальше
Dmitry
это делает creates
Serge
давай так, запускаешь, если файлик существует
я хочу дождаться, когда он появится
Konstantin
Коли уже написал, то отправлю :) У дженкинса есть механизм конфигурирования через groovy-скрипты, он у нас так и настраивается. При старте устанавливаются нужные плагины и конфигурируются из этого же скрипта.
Dmitry
бля, почему как только в уравнении появляется слово "докер", так сразу на свет вываливается мутное говно, от которого немедленно хочется блевануть :)
Serge
Коли уже написал, то отправлю :) У дженкинса есть механизм конфигурирования через groovy-скрипты, он у нас так и настраивается. При старте устанавливаются нужные плагины и конфигурируются из этого же скрипта.
о! да. я их "нежно люблю";) потрахался с настройкой юзера и получением ключа апи. но. это, скорее всего, путь. а ты можешь кинуть кусок, который плагин по имени ставит?
hackru
плюсую за плагин по имени
hackru
а теперь заверните в плейбук
Serge
бля, почему как только в уравнении появляется слово "докер", так сразу на свет вываливается мутное говно, от которого немедленно хочется блевануть :)
а при чем тут докер. если state == running, то надо бы ждать этого, а не надеяться, что так будет. просто как только школота, которая пишет ansible и salt, добирается до чего-то чуть сложнее установки пакета в систему, типа aws или docker, то сразу становится ясна цена этой школоте
Serge
http://espinosa.io/blog/2014-10-17-jenkins-plugin-management-in-groovy.html
так, спасибо большое! я пошел пилить "the other way around":) забавно, что там ровно про первый же нужный мне плагин пример:)
hackru
я вообще не понимаю, почему это плагином идёт
hackru
точнее, почему этот плагин не идёт из коробки
Serge
точнее, почему этот плагин не идёт из коробки
потому что это плагин. а вдруг напишут лучше;) а вдруг вам надо только svn
Serge
потому что это плагин. а вдруг напишут лучше;) а вдруг вам надо только svn
и да, я смотрел на календарь. на счет авторов jenkins не уверен
hackru
сколько ты знаешь инсталляций дженкинса без гит плагина?
Serge
сколько ты знаешь инсталляций дженкинса без гит плагина?
я всего знаю две. из них первую поднимал не я, а вторая пока без гит плагина;)
Serge
в общем, спасибо @kostya_keeper
Serge
http://espinosa.io/blog/2014-10-17-jenkins-plugin-management-in-groovy.html
в итоге сделал вот так #!groovy import jenkins.model.Jenkins def instance = Jenkins.getInstance() def updateCenter = instance.getUpdateCenter() updateCenter.updateAllSites() def deploy = updateCenter.getPlugin("git").deploy() deploy.get() if (updateCenter.isRestartRequiredForCompletion()) { def lifecycle = instance.getLifecycle() lifecycle.restart() } теперь пытаюсь нагуглить как ключи гита туда прогрузить;) SO лежит:)
Serge
меня бомбит. https://docs.google.com/document/d/1LEYX7Az08Y4YG86ZMstAQM8ad9SZdsgCVXK5McIZ-fA/edit?usp=sharing