Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@answer_d

Moleculeに入門してみたよ(v3差分確認編)

More than 1 year has passed since last update.

Molecule v3がリリースされました

差分確認

Changelog

重要っぽい変更点

  • ドライバ:Azure, EC2, DigitalOcean, GCE, HetznerCloud, Linode, LXD, OpenStack, Vagrantが削除された
  • goss verifierが削除された
  • playbook.yml という名前は廃止して converge.yml
  • デフォルトのverifierがAnsibleになった
  • Testinfraはデフォルトでインストールされなくなった
  • lintの設定がリファクタされた
  • Dockerfileテンプレートがmolecule組み込みになった

v2との差分チェック

作業環境

品目 バージョン
OS macOS Catalina 10.15.3
シェル fish, version 3.1.0
Python 3.8.0
Ansible 2.9.5
Molecule 3.0.2

molecule initでロールの雛形を作成する

  • ロール置き場を作って移動
$ mkdir roles
$ cd roles
$ molecule init role apache_vhost
--> Initializing new role apache_vhost...
Initialized role in /Users/answer_d/repos/molecule_test/roles/apache_vhost successfully.
$ cd apache_vhost
  • こんなかんじのディレクトリが生成される
apache_vhost/
├── .travis.yml
├── .yamllint
├── README.md
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── molecule
│   └── default
│       ├── INSTALL.rst
│       ├── converge.yml
│       ├── molecule.yml
│       └── verify.yml
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml
  • v2と違うポイント
    • Travis CI用のファイルが生成される?!
      • はえ〜、時代はCI/CD
    • lintはデフォルトで動作しないようになりました
      • 使用したければmolecule.ymlでlintをenableしましょう
    • README.mdが生成されてる
    • Dockerfile.j2無い
      • Dockerfileはv3からMolecule組み込みになったらしい
      • シナリオのディレクトリに Dockerfile.j2 を用意するとそっちを見に行くっぽい

molecule.yml

---
dependency:
  name: galaxy
driver:
  name: docker
platforms:
  - name: instance
    image: docker.io/pycontribs/centos:7
    pre_build_image: true
provisioner:
  name: ansible
verifier:
  name: ansible
  • ちょっと変わってんね(lintが消えてるとか)

converge.yml

---
- name: Converge
  hosts: all
  tasks:
    - name: "Include apache_vhost"
      include_role:
        name: "apache_vhost"
  • rolesモジュールじゃなくてinclude_roleを使うようになってる

テスト実行してみる

molecule test
--> Test matrix

└── default
    ├── dependency
    ├── lint
    ├── cleanup
    ├── destroy
    ├── syntax
    ├── create
    ├── prepare
    ├── converge
    ├── idempotence
    ├── side_effect
    ├── verify
    ├── cleanup
    └── destroy
  • lintdependency が入れ替わってる、他はv2と一緒
    • 実はChangelogに書いてあった

lint

--> Action: 'lint'
--> Lint is disabled.
  • lintはデフォルトDisableに変更、Changelog通り

これ以降の処理はv2から変わらん!

ドライバがいろいろなくなったのどうするのか問題

  • ec2ドライバ作ろうとしても、v2通りやろうとするとec2ドライバ無いよって怒られる
$ molecule init scenario -d ec2
Usage: molecule init scenario [OPTIONS] [SCENARIO_NAME]
Try "molecule init scenario --help" for help.

Error: Invalid value for "--driver-name" / "-d": invalid choice: ec2. (choose from delegated, docker, podman)
  • ec2ドライバをインストールする
pip install molecule-ec2
  • で再実行したらできた
$ molecule init scenario -d ec2
--> Initializing new scenario default...
Initialized scenario in /Users/answer_d/mac_os_setup_playbook/molecule/default successfully.
$ pip search molecule
molecule (3.0.2)                           - Molecule aids in the development and testing of Ansible roles
  INSTALLED: 3.0.2 (latest)
pytest-molecule (1.2.5)                    - PyTest Molecule Plugin :: discover and run molecule tests
molecule-containers (0.1.dev0)             - Molecule Containers Driver :: run molecule tests on containers
molecule-openstack (0.1)                   - Molecule OpenStack Plugin :: run molecule tests on openstack
molecule-libvirt (0.0.2)                   - libvirt Molecule Plugin :: run molecule tests on libvirt
molecule-digitalocean (0.1)                - digitalocean Molecule Plugin :: run molecule tests on digitalocean
molecule-azure (0.1)                       - Azure Molecule Plugin :: run molecule tests on Azure
molecule-vagrant (0.2)                     - Vagrant Molecule Plugin :: run molecule tests using Vagrant
molecule-inspec (1.0)                      - Inspec Molecule Plugin :: run molecule tests with inspec as verifier
molecule-goss (1.0)                        - Goss Molecule Plugin :: run molecule tests with Goss as verifier
molecule-gce (0.1)                         - Molecule GCE Plugin :: run molecule tests on Google Cloud Engine
molecule-ec2 (0.2)                         - EC2 Molecule Plugin :: run molecule tests using AWS EC2
6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
answer_d
ヤバいインフラ屋さん

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?