FAQ¶
为什么我的幂等运算失败了?¶
重要的是要明白,在确定任务是否是幂等的时候,Molecule除了Ansible的默认功能外,不会做任何事情。Molecule只需运行两次converge操作,并对照Ansible的标准输出进行检查。
因此,如果您看到幂等失败,它通常与底层的Ansible报告有关,而不是与Molecule有关。
如果您正面临幂等失败并打算在我们的问题跟踪器上引发错误,请首先手动运行 molecule converge
两次,并确认Ansible本身正在报告任务幂等性(changed=0)。
为什么Molecule会发出如此多的壳层呼叫?¶
Ansible提供了一个Python API。但是,它不是为 direct consumption . 我们想专注于使Molecule有用,所以我们的努力都花在了Ansible的CLI上。
因为我们已经使用了Ansible的CLI,所以我们决定通过各自的CLI调用其他二进制文件。
注解
这一决定可能会在以后重新评估。
为什么Molecular只支持Ansible 2.2及更高版本?¶
Ansible2.2是Ansible2系列中的第一个好版本。
支持驱动程序所需的模块在2.2之前不存在,或者不够。
为什么使用剧本来提供实例?¶
简单。Ansible已经支持许多云提供商。在moleculev1上花费了太多的时间,重新实现了核心Ansible模块中已经存在的功能。
你想过用Ansible的PythonAPI代替剧本吗?¶
这是 evaluated 很早以前。这是一个折腾。它在某些情况下提供了简单性,而在其他情况下则提供了复杂性。开发人员知道并理解剧本。决定放弃一个更优雅和性感的解决方案。
为什么有多个场景目录和Molecule.yml文件夹?¶
再说一次,简单。与其定义一个包罗万象的配置文件,不如选择规范化。Molecule只是应用场景的Molecule.yml.
注解
这一决定可能会在以后重新评估。
有没有类似的工具?¶
Ansible自己的 Testing Strategies
我可以并行运行Molecule进程吗?¶
请看 以并行模式运行Molecule进程 供使用。
我可以在我的应用程序中指定随机实例ID吗Molecule.yml?¶
这取决于CI提供程序,但基本方法如下。
设置您的 molecule.yml
如下所示:
platforms:
- name: "instance-${INSTANCE_UUID}"
然后在CI提供程序环境(例如Gitlab CI)中,安装:
variables:
INSTANCE_UUID: "$CI_JOB_ID"
哪里 CI_JOB_ID
是Gitlab提供的随机变量。
Molecule将分解 INSTANCE_UUID
创建和查找实例名称时的环境变量。您可以通过运行 molecule list
.
我能用Molecule测试易变集合吗?¶
这一点目前还没有得到官方的支持。此外,收藏仍处于“技术预览”状态。不过,你可以看看 this blog post 概述一个可行的“DIY”解决方案作为暂时的权宜之计。
Molecule支持单回购吗?¶
是的,角色包含在 monorepo 与其他角色一起自动拾取和 ANSIBLE_ROLES_PATH
相应设置。看到了吗 this page 更多信息。
如何添加仅用于开发/测试的依赖项?¶
有时,在使用molecule开发角色时,只运行依赖性角色是可取的,而不是对角色本身施加硬依赖性;例如,当您依赖它的一个副作用时。这可以通过这样的方法在您的角色中实现 meta/main.yml
:
---
dependencies:
- role: <your-dependee-role>
when: lookup('env', 'MOLECULE_FILE')