andrelohmann.accounts
アカウント
内容
ユーザーと公開鍵をマシンにデプロイします。
要件
このロールはUbuntuが必要です。
ロール変数
システムに作成する必要があるすべてのユーザーのリストを作成します。http://docs.ansible.com/ansible/user_module.html から利用可能なすべてのユーザーのパラメータを設定できます。また、http://docs.ansible.com/ansible/authorized_key_module.html から利用可能な鍵のパラメータ("user"を除く)を設定できます。オプションの配列 "accounts_sshd_configs"では、sshd_configのパラメータを設定できます。
accounts_users:
- name: __USERNAME__
uid: __UID__
state: present
groups:
- sudo
public_keys:
- key: ssh-rsa AAA...
state: present
accounts_sshd_configs:
- key: PermitRootLogin
value: 'no'
- key: AuthenticationMethods
value: 'publickey password'
- key: PasswordAuthentication
value: 'yes'
ホストベースで追加のユーザーが必要な場合は、追加のリスト accounts_host_users を設定できます。
accounts_host_users:
- name: __USERNAME__
uid: __UID__
state: present
groups:
- sudo
public_keys:
- key: ssh-rsa AAA...
state: present
例のプレイブック
- hosts: accounts
roles:
- { role: andrelohmann.accounts }
ロール開発
特別な目的
このリポジトリは、ロール開発のための以下の機能をサポートしています。
- 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、リンター、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行目以降に記載されていることが非常に重要です。単一行のコミットメッセージでは、メジャーバージョンの更新は無視されます。
GALAXY_API_KEYシークレットの追加
- https://galaxy.ansible.com/ でGitHubアカウントで認証
- 設定 -> APIキーからGalaxy APIキーを取得
- GitHubロールリポジトリを開く
- 設定 -> シークレットと変数 -> アクション -> 新しいリポジトリシークレット
- 「GALAXY_API_KEY」をキーとして使用し、コピーしたGalaxy APIキーを値として設定
ライセンス
MIT
作者情報
© Andre Lohmann(他)2024
https://github.com/andrelohmann
メンテイナの連絡先
- Andre Lohmann <lohmann.andre (at) gmail (dot) com>