我有很多角色想通过molecule
进行测试,而且我是molecule
的初学者。
如果我在每个角色中创建分子场景,都会有大量重复的代码。
人们是否有避免使用具有相同Dockerfile.j2
,molecule.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
答案 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.yml
,destroy.yml
或prepare.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
文件。但这会很有用。