token? Команда вызывается в .gitlab-ci.yml. Не получается передать --extra-vars ansible-galaxy.
Что за деплой-токен и зачем он в ansible-galaxy?
Приватный гит же
Для того чтобы пуллить роли из приватного репозитория или группы в gitlab
Пишешь requirements.yml.j2 вида --- collections: - name: https://{{ lookup('env','ANSIBLE_COLLECTIONS_TOKEN') }}@gitlab.example.com.io/ansible-collections/collection.git type: git version: 0.15.7 ... и перед запуском ansible-galaxy шаблонизируешь его командой вида ansible -m template -a "src=requirements.yml.j2 dest=requirements.yml" -e ansible_connection=local localhost; \ ansible-galaxy collection install -r requirements.yml
А передать extra vars как в ansible-playbook нельзя?
Если тебя не устраивает предложенное готовое решение -- ищи в коде ansible-galaxy интересующие тебя параметры.
Ок. Спасибо большое!
ssh-ключи для чего придумали?
ssh не всегда доступен оттуда, откуда хочется пуллить роли. Иногда он вообще недоступен, потому что безопасность (не тобой управляемая).
А как надо?
Пытаюсь использовать deploy key для репозитория роли. Пока не получается не клонить
Что это значит, простите?
Наверное имеется в виду вот это https://docs.gitlab.com/ee/ci/ssh_keys/
Вы по https репозитории выкачиваете?
Что я непонятного сказал? К примеру, есть какой-то корпоративный селф-хостед gitlab, в который сложены роли/коллекции. Служба безопасности и админы этого гитлаба либо вообще не открывают ssh, либо открывают его в сети, доступные через какой-нибудь чекпоинт впн, к которому можно только с винды подключиться. А тебе надо работать с этими ролями/коллекциями. ssh нет. Есть только https.
Ну, это уже бред, извините. Закрывать ssh, оставляя https
Это не бред, это сплошь и рядом. Вышеописанную конструкцию я уже у 2 или 3 клиентов использовал. Могу дать адреса сетевиков-безопасников, расскажете им, что они делают неправильно)
Скажите организацию просто. Внесу в блеклист для наших безопасников и сетевиков на собесах
deploy: stage: deploy tags: - docker-airflow-localexecutor before_script: - eval $(ssh-agent -s) - echo $SSH_AGENT_PID > SSH_AGENT_PID_FILE - echo "$SSH_ROLE_DEPLOY_PRIVATE_KEY" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh - ssh-keyscan www >> ~/.ssh/known_hosts - chmod 700 ~/.ssh script: - ansible-galaxy install -r roles/requirements.yml -p roles/ - ansible-playbook playbook.yml -e $USER_PARAMS_JSON after_script: - export SSH_AGENT_PID=$(cat SSH_AGENT_PID_FILE) - eval $(ssh-agent -k) only: - tags
Крупные организации. Очень крупные. Все их знают. Лидеры рынка в своих нишах. Названия не дам. Вам, видимо, просто очень везёт в жизни, что вы с таким не сталкиваетесь.
Тут ssh, все понятно.
Такие крупные лидеры, что стесняетесь назвать? Понятно 😁
🤷🏻♂️ не понимаю, что тут непонятного) NDA, все дела. Или с таким тоже не сталкивались?)
NDA для места работы? 🙂 Нет, не сталкивался. Вы как потом собесы будете проходить, если работу менять надумаете? Будете говорить, что безработным были и пайплайны на досуге писали? 😁
NDA, заключенное с клиентами. Кажется, это не я не проснулся.
Спасибо!
Искаропки работать не будет. Поднимай внутренний Ansible Galaxy, ну или Ansible Automation Platform покупай
Что работать не будет? Речь идёт как раз об использовании репозиториев on-premise GitLab (доступного в данном случае только по https) как источника коллекций/ролей (это можно назвать внутренним galaxy).
можно еще нексус как прокси
Это так не работает. ansible-galaxy работает через API. Перечитай доку, пожалуйста.
Кажется, тут какое-то недопонимание возникло. requirements.yml.j2, представленный мною в обсуждении, был скопирован из рабочего проекта, и таких проектов у меня несколько (только домен изменен на example). Более того, даже через прямой вызов команды работает (вот только вчера пользовался): ansible-galaxy collection install git+https://galaxy.southbridge.io/collections/system.git. Можешь прямо сейчас сам попробовать :) Да и всё, конечно же, взято из доков. Не сам же придумал. Коллекции через git отлично работают, без API.
То есть ты принципиально отказываешься замечать разницу между публичным репо и закрытым?
И "Коллекции через git отлично работают, без API" - это не то же самое, что "у меня работает установка коллекции из открытого git-репо"
Я мейкфайлом сделал похожее, только при помощи седа, без привлечения жинжи, она тут немного оверкилл :)
Зато нативно (если ансибл уже используется в пайплайне). Так-то sed тоже хороший вариант, безусловно)
Обсуждают сегодня