0

我已经ansible roles创建了服务器、S3 存储桶、安全组......并且我想使用Molecule. 经过一些研究,我发现它Molecule用于Testinfra在远程/本地主机上运行一些断言命令。这适用于我创建一些服务器的角色,例如apache2nginx.. 但是其他角色只是创建一些其他 aws 资源,例如load balancers,,,autoscaling groups或者security groups只是s3 buckets?在这种情况下,将没有主机或实例。

Unittest通过和调用 AWS API进行测试很容易boto3,但我的问题是我是否可以只使用并在每次我想测试我的安全组角色时molecule启动一个,然后执行以下操作:EC2 instance

def test_security_group_has_80_open(host):
    cmd = host.run('aws ec2 describe-security-groups --group-names MySecurityGroup')
    return_code = cmd.rc
    output = cmd.stdout
    assert output.contains('"ToPort": 80')

EC2 instanceAWSCLI安装的。这是正确的方法吗?Molecule是否可以通过触发EC2运行awscli调用来测试所有类型的角色?

4

1 回答 1

0

我不能发表评论,否则我会,但为了加快速度,您可以将 Molecule 配置为不管理创建和销毁序列。并使用delegated带有融合剧本的驱动程序connection=local。这样,您只需使用角色创建安全组,无需预置实例,并使用 boto3 来确认您的更改是否正确。

这样,您只需要您的测试环境拥有正确的密钥即可使用 boto 进行 API 调用,而不必担心 EC2 实例是否也能正常工作。

于 2018-06-03T02:55:52.650 回答