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

前提条件

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

  • 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>
プロジェクトについて

ansible galaxy role to deploy users and public keys

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