初学者应该了解Ansible Molecule不同版本之间的差异以及容易出现问题的部分
总结
我是Ansible和Ansible Molecule的初学者,在网上搜索文档时经常感到困惑,所以我将其作为备忘录保留下来。
在撰写本文时,Ansible Molecule的版本是6系列。与旧版本相比,需要的配置文件可能会有所改变,默认值可能会有所改变,特定功能可能会消失。关于Molecule的相关文档很丰富,但与最新情况相比,有很多变化,令人感到困惑。
因此,在研究分子时,有一些重要的知识需要牢记。
分子本身给人一种很棒的工具的感觉。
根据版本的不同(Breaking Changes类)
我只检查了主要版本,并根据主观判断摘录所需部分。
“v2和v3有什么区别?”
https://github.com/ansible/molecule/releases/tag/3.0.0
https://github.com/ssbarnea/molecule/blob/f83063a7ae70a8539a2c9fbfc7ec88295d8cde1c/CHANGELOG.rst
以下是链接:
https://github.com/ansible/molecule/releases/tag/3.0.0
https://github.com/ssbarnea/molecule/blob/f83063a7ae70a8539a2c9fbfc7ec88295d8cde1c/CHANGELOG.rst
看起来在这个PR中有一个检查清单。[链接]
下面的内容最好记住。
コアからAzure, EC2, DigitalOcean, GCE, HetznerCloud, Linode, LXD, OpenStack, Vagrantを削除しました。
molecule.yamlから「lint:」セクションの記法が改善された
testinfra, lintersはpipで明示的にインストールする必要がある
playbook.ymlはconverge.ymlに名称変更となった。playbook.ymlはdeprecate。
verifierの1つであるgossが削除された。
verifierのデフォルトがtestinfraからansibleへと変更になった。testinfraがデフォルトでインストールされないようになった。
molecule.yamlからscenario.nameの機能が削除された
Dockerfileテンプレートがmolecule中に組み込まれる様になった
デフォルトのtestやlintシーケンスの際に「lint」よりも前に「dependency」が実行されるようになった
我也参考了下面的网址:
https://qiita.com/answer_d/items/78b047eb5708dda1375d
v3和v4之间的区别
- python3.6とpython3.7のサポートをやめた
v4和v5的区别是什么?
-
- 「molecule lint」コマンドが削除された
- python3.8のサポートをやめた
v5和v6的不同之处
-
- 「molecule init role」がansible-galaxyコマンドで代替できるので削除された
- https://qiita.com/tsuyopon/items/43b71f8747467bf36b2b でも取り上げています。
关于yaml文件
当使用“molecule init scenario”命令生成时,以下四个默认生成。
-
- molecule.yml
-
- create.yml
-
- converge.yml
- destroy.yml
当你浏览文章时,可能会发现以下与上述不同的文件名。了解这些文件的功能也是很重要的。
- verify.yml
当verifier.name被指定为ansible时,会动态地调用“molecule test”。
verifier:
name: ansible
我会在下面提供一个verify.yml的示例。
$ cat molecule/helloworld/verify.yml
---
- name: Verify
hosts: all
gather_facts: false
tasks:
- name: Get Apache service status
command: "service apache2 status"
register: apache_status
- name: Check if Apache is running
assert:
that: apache_status.stdout == " * apache2 is running"
fail_msg: "Apache is not running"
success_msg: "Apache is running"
-
- prepare.yml
- prepareフェーズ時に呼ばれます。
创建新的prepare.yml文件。
$ cat molecule/helloworld/prepare.yml
---
- name: Prepare
hosts: all
gather_facts: false
tasks:
- name: Task is running from prepare.yml
ansible.builtin.debug:
msg: "This is a task from prepare.yml."
确认运行以调用prepare.yml文件。
$ molecule prepare --scenario-name helloworld
WARNING The scenario config file ('/home/tsuyoshi/test/azarashi/utils/roles/azarashi.utils/molecule/helloworld/molecule.yml') has been modified since the scenario was created. If recent changes are important, reset the scenario with 'molecule destroy' to clean up created items or 'molecule reset' to clear current configuration.
INFO helloworld scenario test matrix: prepare
INFO Performing prerun with role_name_check=0...
INFO Running from /home/tsuyoshi/test/azarashi/utils/roles/azarashi.utils : ansible-galaxy collection install -vvv --force ../..
INFO Running helloworld > prepare
PLAY [Prepare] *****************************************************************
TASK [Task is running from prepare.yml] ****************************************
ok: [molecule-ubuntu] => {
"msg": "This is a task from prepare.yml."
}
PLAY RECAP *********************************************************************
molecule-ubuntu : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
- playbook.yml
- このファイルはv3でconverge.ymlにdeprecateになりました。
“lint部分”
v5版本中被删除的lint部分功能去了哪里呢?
从下面与相关PR有关的信息来看,参考来源的PR似乎对“ .github/workflows/ansible-lint.yml ”进行了更改。
据推测,他们可能自己修改了一些命令,如 ansible-lint、yamllint、flake8 等。
链接:https://github.com/ansible/molecule/pull/3802
确认执行阶段
有许多不同的molecule子选项,如「molecule test」、「molecule converge」、「molecule check」等(可以通过molecule –help来查看详细信息),但可以通过以下命令来确认执行的阶段和顺序。
在不同版本之间可能会有执行顺序上的差异,所以记住这个信息可能会很有用。
$ molecule matrix --scenario-name helloworld test
INFO Test matrix
---
helloworld:
- dependency
- cleanup
- destroy
- syntax
- create
- prepare
- converge
- idempotence
- side_effect
- verify
- cleanup
- destroy
我想要在手上移动分子。
以下可能成为在Molecule 6系列上本地运行的参考,这是我自己写的文章:
https://qiita.com/tsuyopon/items/533b3fa356fb7458e5fb