【入門編】Ansible Molecule v5完全移行ガイド:最新のテスト環境構築とシナリオ作成のベストプラクティス – インフラ構成管理(IaC)活用バイブル

こんにちは。クラウドインフラの深淵を覗き、日々「自動化の美学」を追求しているエンジニアです。

今日は、Ansible運用における「最後のピース」とも言えるMolecule v5の世界へ皆さんを招待します。

「Ansibleを書いた後、手作業でサーバーにログインして確認している」……そんな時代はもう終わりです。Moleculeを使えば、コードを保存した瞬間に、Dockerコンテナ上でマルチOSのテストが走り、仕様通りに動いているかをプログラムが自動判定してくれます。

今回は、現場で即戦力となるMolecule v5の構築術を、最短距離で解説します。

—

1. Moleculeは「守護神」である

Moleculeは、単なるテストツールではありません。あなたの書いたAnsible Roleが、「冪等性(何度実行しても結果が同じになる性質)」を維持しているかを強制的に証明するためのフレームワークです。

  • なぜv5なのか?: 以前のバージョンより構成がシンプルになり、`pytest`との親和性が格段に向上しました。Pythonの強力なエコシステムをそのままテストに持ち込めるため、表現力が段違いです。

2. 環境構築:まずは「隔離された実験室」を作る

Moleculeを動かすために、余計な依存関係をホストOSに散らさないでください。`venv`(仮想環境)を使うのがプロの流儀です。

プロジェクトディレクトリを作成
mkdir my-ansible-role && cd my-ansible-role

仮想環境を作成して有効化
python3 -m venv .venv
source .venv/bin/activate

必要なパッケージをインストール
molecule-plugins[docker] を選ぶのが今風です
pip install “molecule[ansible,testinfra]” molecule-plugins[docker]

3. Moleculeの初期化:魔法のコマンド

Roleのディレクトリで以下のコマンドを叩いてください。これだけで、テストの雛形が完成します。

molecule init scenario default -r my_role_name

ここで生成される `molecule/default/molecule.yml` が、すべての設定を司る心臓部です。

4. 現場で震えるほど役立つ `molecule.yml` の極意

複数のOS(Ubuntu 22.04, Rocky Linux 9など)で並列テストを実行するための、実戦的な設定です。

—
dependency:
name: galaxy
driver:
name: docker
platforms:

  • name: instance-ubuntu

image: geerlingguy/docker-ubuntu2204-ansible:latest
pre_build_image: true

  • name: instance-rocky

image: geerlingguy/docker-rockylinux9-ansible:latest
pre_build_image: true
provisioner:
name: ansible
options:
vv: true # 詳細なログを出す
verifier:
name: testinfra # pytestベースの検証

5. HelloWorldを超えた「テストの書き方」

`molecule/default/tests/test_default.py` を開きましょう。ここが一番面白いところです。
「パッケージがインストールされているか」「サービスが起動しているか」をPythonコードで記述します。

import testinfra

def test_nginx_is_installed(host):
# nginxパッケージがインストールされているか確認
nginx = host.package(“nginx”)
assert nginx.is_installed

def test_nginx_is_running(host):
# サービスが起動し、有効化されているか確認
nginx = host.service(“nginx”)
assert nginx.is_running
assert nginx.is_enabled

6. テスト実行:自動化の快感を味わう

準備は整いました。以下のコマンドを打てば、Dockerコンテナが立ち上がり、Ansibleが適用され、テストが走り、終了後にコンテナが破棄されます。

molecule test

このコマンドが成功した時、あなたのRoleは「どの環境でも安心して動く」というお墨付きを得たことになります。

—

先輩エンジニアからのアドバイス

最初はエラーが出ても落ち込まないでください。むしろ、「手作業でデプロイする前にエラーを見つけられた」という幸運に感謝しましょう。

  • 冪等性の担保: `molecule test` はデフォルトで「二回連続実行」を試みます。二回目の実行で「Changed」が出たら、それは冪等性が崩れている証拠です。これを修正し続けることが、最高のインフラエンジニアへの近道です。

さあ、Moleculeを導入して、手作業による不安から解放されましょう。自動化こそが、エンジニアに「自由な時間」と「確実な品質」をもたらす唯一の手段なのですから。

質問があればいつでもどうぞ。あなたのコードが美しく自動化される日を応援しています。

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