跳至内容

整体式

整体式仓库

Molecule通常用于隔离测试剧本或角色。但是,它也可以从整体式仓库进行测试。

$ tree monolith-repo -L 3 --prune
monolith-repo
 ├── library
    └── foo.py
 ├── plugins
    └── filters
        └── foo.py
 └── roles
     ├── bar
        └── README.md
     ├── baz
        └── README.md
     └── foo
         └── README.md

使用Molecule初始化的角色(在本例中为baz)将通过其converge.yml或元依赖项简单地引用依赖角色。

Molecule可以使用此技术测试复杂的场景。

$ cd monolith-repo/roles/baz
$ molecule test

Molecule只是设置ANSIBLE_*环境变量。要查看Molecule操作期间设置的环境变量,请传递--debug标志。

$ molecule --debug test

DEBUG: ANSIBLE ENVIRONMENT
---
ANSIBLE_CONFIG: /private/tmp/monolith-repo/roles/baz/molecule/default/.molecule/ansible.cfg
ANSIBLE_FILTER_PLUGINS: /Users/jodewey/.pyenv/versions/2.7.13/lib/python2.7/site-packages/molecule/provisioner/ansible/plugins/filters:/private/tmp/monolith-repo/roles/baz/plugins/filters:/private/tmp/monolith-repo/roles/baz/molecule/default/.molecule/plugins/filters
ANSIBLE_LIBRARY: /Users/jodewey/.pyenv/versions/2.7.13/lib/python2.7/site-packages/molecule/provisioner/ansible/plugins/libraries:/private/tmp/monolith-repo/roles/baz/library:/private/tmp/monolith-repo/roles/baz/molecule/default/.molecule/library
ANSIBLE_ROLES_PATH: /private/tmp/monolith-repo/roles:/private/tmp/monolith-repo/roles/baz/molecule/default/.molecule/roles

Molecule可以用多种方式进行自定义。更新molecule.yml中供应器的env部分以适应开发人员的需求和项目的布局。

provisioner:
  name: ansible
  env:
    ANSIBLE_$VAR: $VALUE