maxmind
maxmind
Содержание
Используйте эту роль для установки geoip и базы данных maxmind.
Необходима учетная запись maxmind. Чтобы создать учетную запись, следуйте этим ссылкам:
Требования
Эта роль требует ubuntu.
Переменные роли
Установите account_id, license_key и edition ids
maxmind_account_id: __ВАШ_ACCOUNT_ID__
maxmind_license_key: __ВАШ_LICENSE_KEY__
maxmind_edition_ids: GeoLite2-ASN GeoLite2-City GeoLite2-Country
maxmind_geoipupdate_run: true # запуск geoipupdate во время установки
maxmind_geoipupdate_cron: true # создание задания cron для регулярного запуска geoipupdate
Пример Playbook
- hosts: maxmind
roles:
- { role: andrelohmann.maxmind }
Разработка роли
Специальные функции
Этот репозиторий поддерживает следующие функции для разработки роли:
- yamllint
- ansible-lint
- molecule test
- github action
- автоматическое обновление версии
- обновление ansible-galaxy
- отображение статуса сборки
- тестирование в vagrant (для целей разработки)
- тестирование с molecule (внутри или вне vagrant)
- тестирование в контейнере docker
- тестирование и разработка внутри vscode
Предварительные условия
- Установлен Virtualbox + Vagrant (только необходимо, если роль будет тестироваться с vagrant)
- Docker Desktop
- VisualStudioCode + расширение remote extensionpack (зависимости определены в .vscode/extensions.json)
Настройка разработки
Эта ansible роль разрабатывается с использованием molecule для тестирования. Ее разработка основана на Visual Studio Code и соответствующем контейнере разработки, который решает все зависимости в плане необходимых инструментов (ansible, linter, molecule).
Роль будет тестироваться на ubuntu jammy.
Чтобы запустить тестовые контейнеры molecule из контейнера разработки, необходимо примонтировать сокет docker в контейнер разработки.
Важные папки и файлы
.devcontainer
- Определяет Dockerfile для контейнера разработки
- Настраивает запуск контейнера разработки (например, прим mounting сокета 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 и управления выпуском.
Управление выпуском требует выполнения нескольких настроек.
Защита главной ветки
- Настройки -> Ветки -> Добавить правило защиты ветки
- Шаблон ветки -> main или master (в зависимости от вашей основной ветки)
- Защитить соответствующие ветки -> отметьте "Требовать pull request перед слиянием"
- "Требовать одобрения" можно настраивать по мере необходимости
Дать права на чтение и запись для 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/ansible-role-maxmind