【问题标题】:molecule tests for ansible roles - how to structure to avoid duplicationansible 角色的分子测试 - 如何构建以避免重复
【发布时间】:2019-11-18 01:54:50
【问题描述】:

我有很多角色想通过molecule 进行测试,我是molecule 初学者。

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

是否存在人们用来避免具有相同Dockerfile.j2molecule.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

【问题讨论】:

    标签: ansible molecule


    【解决方案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.ymldestroy.ymlprepare.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 文件。不过会很有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      相关资源
      最近更新 更多