ansible角色的分子测试 - 如何构建以避免重复
molecule tests for ansible roles - how to structure to avoid duplication
我有很多角色想通过 molecule
测试,我是 molecule
初学者。
如果我在每个角色中创建一个分子场景,将会有大量重复代码。
是否有一种模式可以避免人们使用相同的 Dockerfile.j2
、molecule.yml
等多个角色
也许某种组合(通过依赖注入)或者如果那不可行的话某种继承?
$ molecule init role -r Whosebug
--> Initializing new role Whosebug...
Initialized role in /private/tmp/Whosebug successfully.
$ tree Whosebug
Whosebug
├── 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
在 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
文件。不过还是有用的。
我有很多角色想通过 molecule
测试,我是 molecule
初学者。
如果我在每个角色中创建一个分子场景,将会有大量重复代码。
是否有一种模式可以避免人们使用相同的 Dockerfile.j2
、molecule.yml
等多个角色
也许某种组合(通过依赖注入)或者如果那不可行的话某种继承?
$ molecule init role -r Whosebug
--> Initializing new role Whosebug...
Initialized role in /private/tmp/Whosebug successfully.
$ tree Whosebug
Whosebug
├── 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
在 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
文件。不过还是有用的。