Ansible Moleculeでテスト
TL;DR Ansible Moleculeでのテストの実装はコツがいる 経緯 Ansible MoleculeでAnsibleのroleをテストしたが、結構コツがいるようだったので、メモ。 まず、現時点(2022/9/27)で日本語で言及している記事自体が少ない。以下は参照にさせていただいた。 MoleculeでAnsibleのRoleをテストする - その1 Molecule 3を試す ポイントは以下。 以下の流れで行う(https://molecule.readthedocs.io/en/latest/getting-started.html#run-test-sequence-commands) molecule create (1.Dockerコンテナの生成、起動) molecule converge (2.対象ののロールの実行) molecule verify (3.テスト) molecule destroy molecule testで一連の動作をまとめて実行できるとの記載があるが、自分の環境ではverifyがされていないので利用していない 途中でコケたら、molecule loginでコンテナにログインして実際のコマンドを実行するなどして確認する 1.Dockerコンテナの生成、起動 molecule.ymlを設定する imageにてDockerコンテナのタグを指定する 例えばubuntu:22.04を指定した場合、python3がインストールされていないためにansibleの各種タスクが実行できずにコケる。また、sudoもインストールされていないため、該当のタスクがbecome: yesを指定しているとやはりコケる。対策としてcommandを指定する。 platforms: - name: instance image: ubuntu:22.04 command: - "apt update" - "apt install -y sudo python3" pre_build_image: true 2.対象ののロールの実行 converge.ymlを設定する…が、通常初期値で問題ないはず。他のタスクも実行したい場合は修正が必要なのかも 3.テスト verify.ymlを設定する。 assertタグでうまくいけばTrueとなるよう設定する。ファイルの存在をチェックする場合は以下のような感じ - name: Register if file exists stat: path: "/path/to/file" register: path_to_file - name: Check if file exists ansible....