Ansible 可转换角色的分子测试-如何构造以避免重复

Ansible 可转换角色的分子测试-如何构造以避免重复,ansible,molecule,Ansible,Molecule,我想通过molecular测试很多角色,我是molecular初学者 如果我在每个角色中创建一个分子场景,就会有大量重复的代码 有没有一种模式是人们用来避免在许多角色中使用相同的Dockerfile.j2,molecular.yml,等等 也许是某种组合(通过依赖项注入),或者如果这不可行,是某种继承 $ molecule init role -r stackoverflow --> Initializing new role stackoverflow... Initialized ro

我想通过
molecular
测试很多角色,我是
molecular
初学者

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

有没有一种模式是人们用来避免在许多角色中使用相同的
Dockerfile.j2
molecular.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

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

driver:
  name: docker
platforms:
  - name: instance
    image: ubuntu:18.04
    dockerfile: ../common/Dockerfile.j2
有关的更多信息,请参阅官方文档

您还可以在角色之间共享文件,如
create.yml
destroy.yml
prepare.yml
,并在
molecular.yml
中指定正确的路径

provisioner:
  name: ansible
  playbooks:
    create: ../common/create.yml
    destroy: ../common/destroy.yml
    converge: playbook.yml
有关的更多信息,请参阅官方文档

此外,您可以在同一角色的不同场景之间共享剧本和测试

verifier:
name: testinfra
directory: ../resources/tests/
lint:
  name: flake8
有关官方文件的更多信息

我不知道有什么简单的机制可以跨不同的角色共享
molecular.yml
文件。不过,这会很有用