初学者应该了解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

广告
将在 10 秒后关闭
bannerAds