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

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

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

  • Установлен 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 role to install maxmind geoip database

Установить
ansible-galaxy install andrelohmann/ansible-role-maxmind
Лицензия
mit
Загрузки
102
Владелец