andrelohmann.docker

docker

Последний тест

Содержание

Используйте эту роль для настройки Docker.

Требования

Эта роль требует Ubuntu.

Переменные роли

Создайте список всех пользователей, которых нужно добавить в группу Docker:

docker_users:
- __ИМЯ_ПОЛЬЗОВАТЕЛЯ__
- __ДРУГОЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ__

Пример плейбука

- hosts: docker
  become: yes
  roles:
     - { role: andrelohmann.docker }

Разработка роли

Специальные возможности

Этот репозиторий поддерживает следующие функции для разработки роли:

  • yamllint
  • ansible-lint
  • тестирование с помощью molecule
  • действия GitHub
  • автоматическое обновление версии
  • обновление ansible-galaxy
  • отображение статуса сборки
  • тестирование внутри vagrant (для целей разработки)
  • тестирование с помощью molecule (внутри или вне vagrant)
  • тестирование с Docker-контейнером
  • тестирование и разработка внутри vscode

Предварительные условия

https://thedatabaseme.de/2022/01/17/automated-testing-your-ansible-role-with-molecule-and-github-actions/

  • Установленные Virtualbox и Vagrant (только если роль также должна быть протестирована с vagrant)
  • Docker Desktop
  • VisualStudioCode + пакет расширений для удаленной работы (зависимости определены в .vscode/extensions.json)

Настройка разработки

Эта роль ansible разрабатывается с использованием molecule для тестирования. Её разработка основана на Visual Studio Code и соответствующем контейнере разработки, который решает все зависимости в отношении необходимых инструментов (ansible, линтер, molecule).

Роль будет протестирована на двух контейнерах Ubuntu (focal, jammy).

Чтобы запустить тестовые контейнеры molecule из контейнера разработки, необходимо смонтировать сокет docker в контейнер разработки.

Важные папки и файлы

.devcontainer
  • Определяет Dockerfile для контейнера разработки
  • Настраивает запуск контейнера разработки (например, подключает сокет docker)
molecule/default/Dockerfile.js
  • Используется в качестве шаблона для всех платформ, определенных в molecule/default/molecule.yml
  • Подготавливает окружения для поддержки системных служб systemd (необходимо для некоторых ролей ansible, работающих с systemd)
  • Устанавливает все требования для запуска ansible против производного контейнера
  • Файл согласован с атрибутами платформ в molecule/default/molecule.yml
  • Для получения дополнительной информации изучите документацию molecule

Использование

Visual Studio Code

  • Перейдите в корневую директорию вашей роли и запустите vscode
code .
  • Из контейнера разработки вы можете использовать следующие команды:
yamllint .
ansible-lint .
molecule create
molecule test

Vagrant + Virtualbox

  • Перейдите в корневую директорию вашей роли
  • Перейдите в папку vagrant
  • Запустите и войдите в машину vagrant
vagrant up
vagrant ssh
  • Перейдите в папку роли
cd /etc/ansible/roles/ansible-role- [tab]
  • Теперь вы можете запустить все тесты
yamllint .
ansible-lint .
molecule create
molecule test

Процесс сборки и выпуска

Роль ansible определяет ряд рабочих процессов GitHub для запуска тестов molecule и управления выпуском.

Управление выпуском требует нескольких настроек.

Защита ветки master/main

  • Настройки -> Ветки -> Добавить правило защиты ветки
  • Шаблон ветки -> main или master (в зависимости от вашей главной ветки)
  • Защитить соответствующие ветки -> отметьте "Требовать pull-запрос перед слиянием"
  • "Требовать одобрения" можно обрабатывать индивидуально по мере необходимости

Дайте права на чтение и запись GITHUB_TOKEN

  • Настройки -> Действия -> Общие настройки -> Разрешения рабочего процесса -> права на чтение и запись

Сообщения коммитов

Сообщения коммитов должны следовать особому формату для достижения обновления семантической версии patch, minor или major.

patch

0.0.x

fix(single_word): описание
minor

0.x.0

feat(single_word): описание
major

x.0.0

perf(single_word): описание
BREAKING CHANGE: описание изменения, представляющего собой разрыв

Важно, чтобы "BREAKING CHANGE: " упоминалось на второй и следующих строках. В однострочных сообщениях коммитов обновление мажорной версии будет игнорироваться.

Добавьте секрет GALAXY_API_KEY

  • Аутентифицируйте себя с помощью своей учетной записи GitHub на https://galaxy.ansible.com/.
  • Получите ключ API Galaxy в Настройки -> Ключ API
  • Откройте свой репозиторий роли GitHub
  • Настройки -> Секреты и переменные -> Действия -> Новый секрет репозитория
  • Используйте "GALAXY_API_KEY" в качестве ключа и скопированный ключ API Galaxy в качестве значения

Лицензия

MIT

Информация об авторе

© Андре Лохманн (и другие) 2024

https://github.com/andrelohmann

Контакт для поддержки

  • Андре Лохманн <lohmann.andre (at) gmail (dot) com>
О проекте

ansible galaxy role to deploy docker

Установить
ansible-galaxy install andrelohmann.docker
Лицензия
mit
Загрузки
2.5k
Владелец