andrelohmann.maxmind

maxmind

最後のテスト

概要

このロールを使用して、geoipとmaxmindデータベースをインストールします。

maxmindのアカウントが必要です。アカウントを作成するには、以下のリンクに従ってください:

要件

このロールはUbuntuが必要です。

ロール変数

account_id、license_key、edition_idsを設定します。

maxmind_account_id: __YOUR_ACCOUNT_ID__
maxmind_license_key: __YOUR_LICENSE_KEY__
maxmind_edition_ids: GeoLite2-ASN GeoLite2-City GeoLite2-Country
maxmind_geoipupdate_run: true # インストールプロセス中にgeoipupdateを実行
maxmind_geoipupdate_cron: true # 定期的にgeoipupdateを実行するためのcronジョブを作成

例のプレイブック

- hosts: maxmind
  roles:
     - { role: andrelohmann.maxmind }

ロール開発

特別な目的

このリポジトリは、以下の機能をサポートしています:

  • 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、linter、molecule)の依存関係を解決しています。

このロールはUbuntu Jammyでテストされます。

開発コンテナ内からmoleculeテストコンテナを起動するためには、Dockerソケットを開発コンテナにバインドマウントする必要があります。

重要なフォルダとファイル

.devcontainer
  • 開発コンテナのDockerfileを定義します
  • 開発コンテナの起動を設定します(例:Dockerソケットのバインドマウント)
molecule/default/Dockerfile.js
  • molecule/default/molecule.ymlで定義されたすべてのプラットフォームのテンプレートとして使用されます
  • systemdサービスをサポートするための環境を準備します(systemdで動作する一部のansibleロールに必要です)
  • 派生コンテナに対して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ロールは、moleculeテストとリリース管理を実行するためのGitHubワークフローをいくつか定義しています。

リリース管理にはいくつかの設定が必要です。

master/mainブランチの保護

  • 設定 -> ブランチ -> ブランチ保護ルールを追加
  • ブランチパターン名 -> mainまたはmaster(デフォルトブランチに応じて)
  • 一致するブランチを保護 -> "マージ前にプルリクエストを要求"にチェックを入れる
  • "承認を要求"は必要に応じて個別に管理可能

GITHUB_TOKENに読み取りおよび書き込み権限を与える

  • 設定 -> アクション -> 一般 -> ワークフローパーミッション -> 読み取りおよび書き込み権限

コミットメッセージ

コミットメッセージは、パッチ、マイナー、またはメジャーセマンティックバージョンアップデートを達成するための特別な形式に従うべきです。

パッチ

0.0.x

fix(single_word): 説明
マイナー

0.x.0

feat(single_word): 説明
メジャー

x.0.0

perf(single_word): 説明
BREAKING CHANGE: 破壊的変更を説明

"BREAKING CHANGE: "は2行目以降に記載されることが重要です。1行のコミットメッセージでは、メジャーバージョンの更新は無視されます。

GALAXY_API_KEYシークレットを追加

  • https://galaxy.ansible.com/でGitHubアカウントで認証します。
  • Preferences -> API Keyからgalaxy APIキーを取得します
  • GitHubのロールリポジトリを開きます
  • 設定 -> シークレットと変数 -> アクション -> 新しいリポジトリシークレット
  • キーに "GALAXY_API_KEY" を、コピーしたgalaxy APIキーを値として使用します

ライセンス

MIT

作者情報

© Andre Lohmann(他)2024

https://github.com/andrelohmann

メンテイナー連絡先

  • Andre Lohmann
    <lohmann.andre (at) gmail (dot) com>
プロジェクトについて

ansible galaxy role to install maxmind geoip database

インストール
ansible-galaxy install andrelohmann.maxmind
ライセンス
mit
ダウンロード
112
所有者