用分子和boto3测试ansible角色

时间:2018-05-16 12:36:33

标签: python ansible aws-sdk aws-cli molecule

我有ansible roles创建服务器,S3存储桶,安全组......我想使用Molecule建立一些单元测试。 经过一些研究,我发现Molecule正在使用Testinfra在远程/本地主机上运行一些断言命令。这可以用于创建一些服务器的角色,例如apache2nginx ..但是其他角色如何创建其他aws资源如load balancersautoscaling groupssecurity groupss3 buckets?在这种情况下,将没有主机或实例。

通过Unittestboto3进行测试并调用AWS API很容易,但我的问题是我是否可以仅使用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 instance将安装AWSCLI。这是正确的方法吗?是否可以通过触发Molecule调用EC2awsclihref测试所有类型的角色?

1 个答案:

答案 0 :(得分:0)

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

这样,您只需要您的测试环境就可以使用正确的密钥来使用boto进行API调用,而不是担心EC2实例是否同样如此。