インフラエンジニアの皆さん、こんにちは。
「また同じ設定をコピペしているな…」「あの環境構築スクリプト、バージョン管理がバラバラで収拾がつかないな…」そんな悩みを抱えていませんか?
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化してみてください。その一歩が、あなたのチームのインフラを劇的に変えるはずです。
何か詰まったら、いつでも聞いてください。現場の最前線で待っていますよ。