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
Предварительные условия
- Установленные 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 install andrelohmann.docker