如何在 Openstack 中使用 molecule

How to use molecule with Openstack

我在 docker 驱动程序中经常使用 molecule。 在某些情况下,docker 不是测试 ansible 角色的正确工具,所以我想在 openstack 中启动一个虚拟机。

我用 molecule role -r <rolename> 创建了一个 ansible 角色,并将 molecule.yml 中的驱动程序更改为 'openstack'。这是我当前 molecule.yml:

的示例
---
dependency:
  name: galaxy
driver:
  name: openstack
lint:
  name: yamllint
platforms:
  - name: molecule-role-docker
    image: CentOS7
    flavor: ECS.UC1.4-4
    auto_ip: true
    security_groups: ssh
    key_name: mykey-ci
provisioner:
  name: ansible
  lint:
    name: ansible-lint
verifier:
  name: testinfra
  lint:
    name: flake8

不幸的是,似乎缺少 create.yml 文件,这使机器启动:

[...]
Validation completed successfully.
--> Test matrix

└── default
    ├── dependency
    ├── create
    ├── prepare
    └── converge

--> Scenario: 'default'
--> Action: 'dependency'
Skipping, missing the requirements file.
--> Scenario: 'default'
--> Action: 'create'
ERROR! the playbook: None could not be found
ERROR:

如果我创建一个 create.yml 文件,错误消息表明它发现该文件是空的:

[...]
--> Scenario: 'default'
--> Action: 'create'
ERROR! Empty playbook, nothing to do
ERROR:

那么,如何让 openstack 驱动程序工作以及如何创建和准备虚拟机以 运行 我对其进行检查?

我使用 molecule 2.22,ansible 2.9.4 和 python 3.7.6.

按照文档中的建议,我已经安装了 molecule openstack 插件:pip3 install 'molecule[openstack]'

默认驱动程序是 docker。您应该从 openstack 驱动程序开始创建您的角色。这将为您在 molecule.yml 中放置正确的设置,并在您的默认场景中创建必要的基础文件:

molecule init role -d openstack -r my_role

您也可以在现有角色中启动新场景。从你的角色开始

molecule init scenario -d openstack -s my_scenario