【入門編】Ansible Collectionの独自開発とPrivate Automation Hubへのプライベート配信手順 – インフラ構成管理(IaC)活用バイブル

インフラエンジニアの皆さん、こんにちは。

「また同じ設定をコピペしているな…」「あの環境構築スクリプト、バージョン管理がバラバラで収拾がつかないな…」そんな悩みを抱えていませんか?

Ansibleを使いこなすフェーズを一段階上げましょう。個別のPlaybookを乱立させる時代は終わりです。「Ansible Collection」という最強のパッケージング手法を手に入れれば、社内の共通処理を「資産」に変え、チーム全体で爆速開発が可能になります。

今日は、現場で即戦力となる「独自Collection開発とプライベート配信」の極意を伝授します。

—

1. なぜ「Collection」なのか?:設計思想の転換

Collectionは、Role、Module、Pluginを一つに束ねた「Ansibleの公式パッケージ形式」です。

  • 冪等性の担保: 共通処理をCollection化し、CIでテストを通すことで、誰が実行しても同じ結果になる「完全自動化」の土台ができます。
  • 依存関係の明確化: `galaxy.yml`に依存関係を記述することで、環境差異による「動かない」トラブルを根絶できます。

—

2. 環境構築と初期化

まずは、あなたのIDE(VS Code推奨)を開き、プロジェクトを生成しましょう。

名前空間(社名など)とコレクション名を指定して初期化
例: mycorp.common_utils
ansible-galaxy collection init mycorp.common_utils
cd mycorp.common_utils

このコマンドで生成されるディレクトリ構造が重要です。`roles/`(標準的な構成)、`plugins/`(モジュールやフィルタ)、そして最も重要な`galaxy.yml`が作られます。

—

3. 「HelloWorld」の極意:Roleの作成

まずは、社内共通の「セキュリティ設定」を想定したRoleを作成します。

roles配下にRoleを作成
ansible-galaxy role init roles/security_base

`roles/security_base/tasks/main.yml` に、冪等性を意識した処理を記述します。

—
特定のディレクトリ権限を強制する共通処理

  • name: Ensure secure directory permissions

ansible.builtin.file:
path: /opt/app/config
state: directory
mode: ‘0750’
owner: root
group: web-admin

—

4. 精度を高める:Moleculeによるテスト駆動開発

「動くはず」という思い込みはインフラの敵です。Moleculeを使って、このRoleが期待通りに動くかテストします。

Moleculeの初期化
molecule init scenario -r roles/security_base

`molecule/default/verify.yml` にテストを記述し、`molecule test`を実行する。これが通れば、あなたのコードは「社内のお墨付き」を得たことになります。この「テスト済みコード」を配布することこそが、SREの真髄です。

—

5. ビルドとPrivate Automation Hubへのデプロイ

開発したCollectionは、ビルドして配布可能な形式(`.tar.gz`)にします。

コレクションのビルド
ansible-galaxy collection build

これで `mycorp-common_utils-1.0.0.tar.gz` が生成されます。

プライベート配信の戦略

1. 簡易的な手法: 社内GitサーバーやS3に配置し、`ansible-galaxy collection install` で直接URL指定でインストールする。
2. プロフェッショナルな手法: Private Automation Hub や Artifactory を利用する。

例えば、Private Automation Hubにアップロードする場合、CLIから以下のように叩くだけです。

ansible-galaxy collection publish ./mycorp-common_utils-1.0.0.tar.gz \
–server https://automation-hub.mycorp.internal/ \
–token

—

6. まとめ:今日から始める「インフラの資産化」

ここまで来れば、チームメンバーは以下のコマンド一つで、あなたの作った最高品質のツールを使えるようになります。

requirements.yml に記述してインストール
collections:

  • name: mycorp.common_utils

source: https://automation-hub.mycorp.internal/

「一度書いたことは二度と書かない」。
これがインフラ自動化の鉄則です。Ansible Collectionを使いこなせば、毎日の泥臭い作業から解放され、より価値のある設計やアーキテクチャの改善に時間を割けるようになります。

最初は小さく、まずは「SSHキーの配布」や「共通ユーザー作成」のような小さな処理をCollection化してみてください。その一歩が、あなたのチームのインフラを劇的に変えるはずです。

何か詰まったら、いつでも聞いてください。現場の最前線で待っていますよ。

タイトルとURLをコピーしました