分子测试的反作用-如何结构化避免重复

时间:2019-10-16 10:54:33

标签: ansible molecule

我有很多角色想通过molecule进行测试,而且我是molecule的初学者。

如果我在每个角色中创建分子场景,都会有大量重复的代码。

人们是否有避免使用具有相同Dockerfile.j2molecule.yml等角色的模式?

也许是某种形式的组合(通过依赖注入),或者如果某种方式不可行,则是某种继承?

$ molecule init role -r stackoverflow
--> Initializing new role stackoverflow...
Initialized role in /private/tmp/stackoverflow successfully.

$ tree stackoverflow
stackoverflow
├── README.md
├── defaults
│   └── main.yml
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── molecule
│   └── default
│       ├── Dockerfile.j2
│       ├── INSTALL.rst
│       ├── molecule.yml
│       ├── playbook.yml
│       └── tests
│           ├── test_default.py
│           └── test_default.pyc
├── tasks
│   └── main.yml
└── vars
    └── main.yml

8 directories, 12 files

1 个答案:

答案 0 :(得分:1)

molecule.yml文件中,您可以指定从何处获取Dockerfile.js。因此,您可以在父文件夹中只有一个docker配置文件,并在所有角色之间共享。例如:

driver:
  name: docker
platforms:
  - name: instance
    image: ubuntu:18.04
    dockerfile: ../common/Dockerfile.j2

有关官方文档Docker configuration for Molecule的更多信息。

您还可以在角色之间共享create.ymldestroy.ymlprepare.yml之类的文件,并在molecule.yml中指定正确的路径。

provisioner:
  name: ansible
  playbooks:
    create: ../common/create.yml
    destroy: ../common/destroy.yml
    converge: playbook.yml

有关官方文档Ansible configuration for Molecule的更多信息。

此外,您可以在同一角色的不同情况下共享剧本和测试。

verifier:
name: testinfra
directory: ../resources/tests/
lint:
  name: flake8

有关官方文档上的sharing across scenarios的更多信息。

我不知道有任何直接的机制可以在不同角色之间共享molecule.yml文件。但这会很有用。