2

我有很多想要通过 测试的角色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
4

1 回答 1

3

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

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

有关Molecule 的 Docker 配置的更多信息,请参阅官方文档。

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

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

有关Molecule 的 Ansible 配置的更多信息,请参阅官方文档。

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

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

有关在官方文档中跨场景共享的更多信息。

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

于 2019-11-17T17:54:50.547 回答