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内でのテストと開発
前提条件
- 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>