ansible - ansible 角色的分子测试 - 如何构建以避免重复
问题描述
我有很多想要通过 测试的角色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
解决方案
在molecule.yml
文件中,您可以指定从何处获取Dockerfile.js
. 因此,您可以在父文件夹中拥有一个 docker 配置文件并在所有角色之间共享。例如:
driver:
name: docker
platforms:
- name: instance
image: ubuntu:18.04
dockerfile: ../common/Dockerfile.j2
有关Molecule 的 Docker 配置的更多信息,请参阅官方文档。
您还可以在角色之间共享文件create.yml
,destroy.yml
或prepare.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
在不同角色之间共享文件。不过这会很有用。
推荐阅读
- google-apps-script - gmail2gdrive 脚本中不同文件夹的两个文件
- amazon-s3 - 如何使用节点中的签名 url 从上传的 csv 文件中删除标题信息
- reactjs - 'next' 在 Reactjs 上不被识别为内部或外部命令、可运行程序或批处理文件
- javascript - 如何在 JavaScript 中将用户输入限制为 0 到 99
- python - 我应该为单元测试创建一个新的 .py 脚本吗?
- logging - 在 bnlearn 中计算对数似然
- bash - macOS Loop 的 Bash 脚本 if then else
- python-3.x - 如果输入大量数据,程序将无法运行
- java - JSON Schema - 对象枚举
- sql - 如何解决此编码问题?