我有ansible roles
创建服务器,S3存储桶,安全组......我想使用Molecule
建立一些单元测试。
经过一些研究,我发现Molecule
正在使用Testinfra
在远程/本地主机上运行一些断言命令。这可以用于创建一些服务器的角色,例如apache2
,nginx
..但是其他角色如何创建其他aws资源如load balancers
,autoscaling groups
,security groups
或s3 buckets
?在这种情况下,将没有主机或实例。
通过Unittest
和boto3
进行测试并调用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
调用EC2
来awscli
来href
测试所有类型的角色?
答案 0 :(得分:0)
我不能评论,否则我会,但为了加快速度,您可以将Molecule配置为不管理创建和销毁序列。并将delegated
驱动程序与具有connection=local
的聚合剧本一起使用。这样,您只需使用没有配置实例的角色创建安全组,并使用boto3确认您的更改是否正确。
这样,您只需要您的测试环境就可以使用正确的密钥来使用boto进行API调用,而不是担心EC2实例是否同样如此。