andrelohmann.mailpit
mailpit
目次
このロールを使って、mailpitをインストールし、systemdを使用してバックグラウンドでデーモンとして実行します。
要件
このロールはUbuntuが必要です。
ロール変数
デフォルトの変数セットは、mailpitが起動される設定を定義します。
mailpit_smtp_port: 1025
mailpit_web_port: 8025
mailpit_release: latest
以下の追加変数を設定することで、apacheの背後でmailpitをプロキシできます。
mailpit_proxy_apache: true
mailpit_proxy_domain: _あなたの.mailpitドメイン_
mailpit_proxy_port: 80
またはnginxの場合、
mailpit_proxy_nginx: true
mailpit_proxy_domain: _あなたの.mailpitドメイン_
mailpit_proxy_port: 80
例のプレイブック
- hosts: mailpit
roles:
- { role: andrelohmann.mailpit }
ロール開発
特殊目的
このリポジトリはロール開発のために以下の機能をサポートしています:
- yamllint
- ansible-lint
- moleculeテスト
- GitHubアクション
- 自動バージョンアップ
- ansible-galaxyの更新
- ビルドステータスの表示
- vagrant内でのテスト(開発目的)
- moleculeでのテスト(vagrant内外)
- Dockerコンテナに対するテスト
- vscode内でのテストと開発
前提条件
- VirtualBox + Vagrantがインストール済み(ロールをvagrantでテストする場合のみ必要)
- Docker Desktop
- Visual Studio Code + リモートエクステンションパック(依存関係は.vscode/extensions.jsonに定義されています)
開発セットアップ
このansibleロールは、テストのためにmoleculeを使用して開発されています。開発はVisual Studio Codeと対応する開発コンテナを基にしており、必要なツール(ansible、linter、molecule)の依存関係を解決します。
ロールは2つのUbuntuコンテナ(focal、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>