Full
А. По-умолчанию там tty7. Это только при установке с mini. Со стандартного образа - все ок. Потом после установки смотришь на экран - а приглашения нету. Я минут через 5 только понял, что tty не тот.
GithubReleases
ansible/ansible tagged: v2.9.11 Link: https://github.com/ansible/ansible/releases/tag/v2.9.11 Release notes: New release v2.9.11
Denis
Всем привет. Есть сервер приложений на WildFly Full 15, необходимые модули накатываются через wf_configurations.yml вида: main-4: core_modules: True modules: - { name: 'cs-mmt-client', version: '2.1.0' } - { name: 'cci-mmt-impl-ear', version: '1.0.7.hf1' } необходимо при изменениии версии или дополнении модулей произвести переустановку (установку). Список установленных модулей можно запросить через jboss-cli на сервере. Хотелось сделать максимально простое решение, но количество серверов меняется в большую сторону и это накладывает определенные ограничения. Может кто сталкивался с подобными задачами и имеет "продуманное" решение.
Александр
Доброго всем! Вопрос по работе "Ansible + Gitlab-CI". На данный момент сервер ансибла и сервер гитлаба это две разные ноды, не связанные никак друг с другом. Ансибл сейчас не задействован в процессе CI/CD, и используется в основном для конфигурации инфраструктуры. Сейчас плейбуки ансибла лежат на самом ансибле-мастере и выполняются оттуда вручную. Возникла необходимость часть плейбуков закинуть в гитлаб в отдельный репозиторий, чтобы разработчики могли сами какими-то определёнными действиями в гитлабе (коммит в ветку с плейбуком или ещё как) запускать некоторые плейбуки ансибла. Как я понял из статей и документаций, вариантов несколько может быть. Основные вижу такие пока: 1) На мастер-ноде ансибла настроить Gitlab-Runner (shell), и прописать его на ветки с плейбуками, ну и указывать в Gitlab-ci выполнение плейбуков через него; 2) Сделать отдельный Gitlab-Runner (shell), с которого будет доступ на мастер-ноду ансибла, и указывать в Gitlab-ci выполнение плейбуков через этот отдельный раннер; 3) В Gitlab-ci в ямл-файле напрямую прописывать выполнение плейбуков удалённо по ssh на мастер-ноде ансибла (но потребуется прямой доступ по ssh с гитлаб-сервера на мастер-ноду ансибла); 4) На сервере гитлаба развернуть ещё один ансибл-мастер, чтобы плейбуки там и выполнялись локальным ансиблом; 5) Использовать что-то типа AWX и т.п. Как будет лучше и безопаснее сделать?
NM
Как это ? :-) расскажите ?
NM
Я так и знал :-)
NM
Я про другое имел в виду, замержился код в Гите и тут же идет сборочка, вот что интересно в awx а не кнопочка update git in projects
citius
Доброго всем! Вопрос по работе "Ansible + Gitlab-CI". На данный момент сервер ансибла и сервер гитлаба это две разные ноды, не связанные никак друг с другом. Ансибл сейчас не задействован в процессе CI/CD, и используется в основном для конфигурации инфраструктуры. Сейчас плейбуки ансибла лежат на самом ансибле-мастере и выполняются оттуда вручную. Возникла необходимость часть плейбуков закинуть в гитлаб в отдельный репозиторий, чтобы разработчики могли сами какими-то определёнными действиями в гитлабе (коммит в ветку с плейбуком или ещё как) запускать некоторые плейбуки ансибла. Как я понял из статей и документаций, вариантов несколько может быть. Основные вижу такие пока: 1) На мастер-ноде ансибла настроить Gitlab-Runner (shell), и прописать его на ветки с плейбуками, ну и указывать в Gitlab-ci выполнение плейбуков через него; 2) Сделать отдельный Gitlab-Runner (shell), с которого будет доступ на мастер-ноду ансибла, и указывать в Gitlab-ci выполнение плейбуков через этот отдельный раннер; 3) В Gitlab-ci в ямл-файле напрямую прописывать выполнение плейбуков удалённо по ssh на мастер-ноде ансибла (но потребуется прямой доступ по ssh с гитлаб-сервера на мастер-ноду ансибла); 4) На сервере гитлаба развернуть ещё один ансибл-мастер, чтобы плейбуки там и выполнялись локальным ансиблом; 5) Использовать что-то типа AWX и т.п. Как будет лучше и безопаснее сделать?
а что такое "сервер ансибла" в вашем контексте, если AWX у вас нет?
Александр
а что такое "сервер ансибла" в вашем контексте, если AWX у вас нет?
это просто отдельный хост, где развернут ансибл-мастер может непонятно изложил
citius
но у ансибла ведь нет мастера
Александр
но у ансибла ведь нет мастера
ну сервер управления по-другому если, в общем та машина, где установлен ансибл и выполняются плейбуки, с него же можно и просто адхок командами управлять и т.п. :)
citius
короче это просто аля бастион хост
citius
я спрашивал потому что по смыслу было так, как будто у вас там уже какая-то автоматизация есть
citius
в эксплуатации шелл раннера с ансиблом могут быть нюансы, т.к. могут быть пересечения по директориям (например /tmp будет один на всх), так имхо что лучше всего поднять докер-раннеры
citius
запечь образ с ансиблом и ключами, или доставлять ключи в пайплайне, и докер-раннерами и деплоить
citius
AWX тоже конечно варик, но он достаточно тяжелый, кмк, для такой простой задачи
NM
Его ещё и ставить надо rpm or deb пакет а не контейнер, чтобы не огрести проблем в будущем
Александр
я спрашивал потому что по смыслу было так, как будто у вас там уже какая-то автоматизация есть
автоматизация деплоя кой-какая есть, но к ансиблу в данный момент она не имеет отношения вообще сборка и деплой теста и прода реализован частично через Gitlab CI/CD пош-скриптами, т.к. значительная часть прода на .Net, другая часть - это бекэнды на Linux, но контейнеры не используются вообще сейчас ансибл же используется сейчас только для создания конфигураций тестовых и продовых окружений (тупо виртуалок с настройками) как на Linux так и на винде мой вопрос был именно как лучше сделать, чтобы уже готовые плейбуки ансибла по разворачиванию виртуалок могли бы запускать сами разрабы из гитлаба, не заходя при этом в сам ансибл
citius
у меня были в эксплуатации шел раннеры долго, потом как съехали на докер - это сняло много головной боли
Александр
ну ясное дело что раннером, но как именно применить раннеры - есть варианты
как я понял из советов, лучше всё-таки раннер отдельный делать, если не в контейнере, то хотя бы просто отдельную виртуалку, на ней шелл-раннер, прописанный в гитлаб, и с этого отдельного шелл-раннера уже доступ на машину с ансиблом?
citius
доступ с раннера на твой бастион избыточен
citius
плейбуки же тоже в каких-то репах лежат у тебя
citius
соответственно в пайплайне можно их забрать и выполнить
citius
я собирал артефакты с ансиблом - архив с плейбуками и ролями, кидал в артифактори, и в пайплайне забирался этот артефакт аналог коллекций из 2.10, бгг
citius
это сильно экономило время пайплайнов на скачивании ролей
citius
бастион лучше вообще оставь в стороне - автоматизацию на него накладывать - путь в бардак
Александр
плейбуки же тоже в каких-то репах лежат у тебя
сейчас все плейбуки и роли тупо лежат на машине с ансиблом, и оттуда же и запускаются вручную :) планирую перенести в гитлаб в отдельный репозиторий
citius
ну вот с этого и лучше начать
citius
а сделать потом деплойные пайплайны рядом будет уже просто
Александр
так а если я перенесу все плейбуки в гитлаб, запускать их буду с отдельного шелл-раннера (на котором тоже надо будет ставить ансибл и с которого, как я понимаю, нужно будет делать доступ на все узлы инфраструктуры), тогда мне уже не нужен будет этот типа "бастион", который сейчас есть может тогда его самого в раннер переделать проще?
citius
не знаю что тебе проще, по эксплуатации шелл-раннеров я уже свое мнение высказал
citius
я бы в любом случае делал с чистого листа, даже и виртуалки с шел раннерами, денег это не стоит, а возможный старый бардак подчистит автоматом
inqfen
>запускать их буду с отдельного шелл-раннера ну нинада
inqfen
И вообще иногда проще вместо хождения через бастионы раннер поднять в целевой инфре
inqfen
Но это уже не к ансиблу относится
citius
И вообще иногда проще вместо хождения через бастионы раннер поднять в целевой инфре
да это не бастион в полном смысле, просто шел-сервер с ансиблом
inqfen
Да выкинь ты этот шелл сервер и юзай докер экзекутор
Александр
я прост не совсем понимаю ещё что есть этот "бастион", про который вы говорите, надо покурить доки :) у меня просто есть машина в самой инфраструктуре, на ней ансибл, и с неё же доступ к остальной инфре, где и требуется внесение изменений в инфраструктуру плейбуками
inqfen
Ну так создай раннер в той же инфре, на него докер экзекутор и путь он плейбуки и запускает
inqfen
А сами они все как положено в гите
George
Я пытаюсь подружить ansible-test с своими серверами. У меня есть модуль, которому надо become. В CI я его запускаю с --local и всё хорошо. Я не хочу --local на своей машине, я хочу на мою тестовую виртуалку. Но попытка вчитаться в --remote говорит, что там сплошной shippable. Кто-то делал коллекции, в котором интеграционные тесты можно гонять с помощью ansible-test и локально, и на CI?
Aleksey
я видел хак для молекулы что бы гонять тесты для коллекций на молекуле
Aleksey
хак не сильно стремный
Aleksey
ansible-test даже не знаю такого
George
ansible-test раньше был только для самотестирования ansible'а, а теперь его перекорёжили под коллекции тоже. (Появляется если поставить ansible pip'ом, из дистрибутивных его повыпиливали).
George
Даёт бесплатные sanity тесты (документация в модуле и т.д.). Умеет запускать unit-тесты, и с --local бесценен для интеграционных в CI. Но хочется поюзать и на своей машине.
Aleksey
да у меня пиповая версия. я никогда не обращал внимания на его наличие
George
Вообще, с коллекциями ощущение, что ansible 0.1. Сплошные косяки.
George
Если интересно поюзать, вот для sanity/юнит: https://github.com/amarao/collection_ip/blob/master/.github/workflows/ansible-test.yaml (обрати внимание на `working-directory`).
Aleksey
Aleksey
а инфры дофига пока не научились всё делать.
Aleksey
это как там... release early
George
Ну, ansible-test у них был всегда, просто раньше никому не нужно было интегрировать его с другими CI'ями или провайдерами. Либо --local, либо --docker, либо shippable-хаки. Мне кто-то рассказывал про runit-файл, и так можно, но уж очень уродливо. И с github'ом тогда не дружит.
Александр
Ну так создай раннер в той же инфре, на него докер экзекутор и путь он плейбуки и запускает
ну у меня сейчас так примерно по-колхозному: захожу на машину с ансиблом и запускаю плейбук-плейбуки (лежат там же на этой машине), этот плейбук мне на двух хостах Proxmox создаёт из готовых образов по пять виндовых и (или) линуксовых виртуалок, копирует на них нужные мне файлы, меняет необходимые файлы конфигураций, настройки доступа и прочее в зависимости от ситуации а мне надо чтобы всё тоже самое, но чтобы плейбуки лежали в гите запускать типа из гитлаба раннер с докер-экзекутором подойдёт для этого (докера как такового и контейнеров в инфре у меня сейчас нет)
George
О, у меня идея. --docker-privileged. У меня docker всё равно на виртуалке, а все мои модули не персистентные. Свою боль я ща решу, а вот системно вопрос остаётся...
Александр
Подойдёт
а как лучше сделать в этом случае, чтоб плейбуки выполнялись самим этим раннером, или всё же чтобы этот раннер выполнял плейбуки на моей "старой" машине с ансиблом? (т.е. раннер с докер-экзекутором использовать просто как связующее звено между гитлабом и ансибл)
Александр
Понял в целом, благодарю за помощь! А вариант, когда ансибл ставится на самом сервере гилаб локально и оттуда же выполняются плейбуки напрямую без раннеров, то есть в ямл-файле ci сразу команда "ansible-playbook" и т.п. вообще имеет место быть, кто-нибудь так пробовал, или так не будет работать?
Junglist
Добрый день, помогите разобраться. Имею следующий плейбук, необходимо распарсить json - name: TEST | Install .NET Core hosts: all gather_facts: no tasks: - name: ".NET Core | Get repo latest runtime version" win_uri: url: "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" return_content: yes register: netcore_http_output - debug: msg: "{{ netcore_http_output.json | json_query(jmesquery) }}" vars: jmesquery: 'releases-index[?support-phase == "lts"]' на выходе получаю ошибочку: fatal: [sbox-test1]: FAILED! => { "msg": "JMESPathError in json_query filter plugin:\nBad jmespath expression: Unknown token '-':\nreleases-index[?support-phase == \"lts\"]\n ^" } Пробовал экранировать msg: "{{ netcore_http_output.json | json_query(\"jmesquery\") }}" и получаю пустой мессадж: ok: [sbox-test1] => { "msg": "" } Подскажите пожалуйста, как же получить результат?
NM
И зачем это надо? Плейбуки должны быть в коде
вот да - это работающее решение а всяка хрень типа TeamCity не умеет нормально архитектурно распределять таски в паралель - только AWX
citius
образно говоря - мешаешь мух в котлеты
Womchik
ppl, подскажите. вот смотрю я модуль proxmox_kvm: в нём идёт вызов create_vm и если не было exception, то вызывается module.exit_json(changed=True … это значит, что changed у меня всегда будет?
Александр
В общем тогда у меня такая схема в башке пока сложилась: - переношу все свои работающие проверенные роли и плейбуки со "старой" машины ансибла в гитлаб, в отдельный репозиторий или в разные репозитории, по обстоятельствам - на отдельной виртуалке настраиваю гитлаб-раннер с докер-экзекутором или с шелл-экзекутором - прописываю-регистрирую это раннер в репозитории с плейбуками - в ямликах ci/cd по определённым условиям, по коммиту с тэгом, например, прописываю выполнение того или иного плейбука на раннере правильно я понимаю всё это дело или что-то упустил?
Junglist
Попробуйте в кавычки убрать в запросе: '"releases-index"[?"support-phase" == "lts"]'
В Вашем варианте успешно вовзращало [] но я немножечко отредактировал jmesquery: "\"releases-index\"[?\"support-phase\" == 'lts']" и получил то что надо. Спасибо за помощь!