Тестируемые роли с молекулой и boto3

Я имею ansible roles который создает серверы, сегменты S3, группы безопасности... и я хочу установить некоторое модульное тестирование, используя Molecule, После некоторых исследований я обнаружил, что Molecule использует Testinfra выполнить несколько команд assert на удаленном / локальном хосте. Это может работать для моих ролей, которые создают некоторые серверы, такие как apache2, nginx.. но как насчет других ролей, которые просто создают некоторые другие ресурсы AWS, такие как load balancers, autoscaling groups, security groups, или просто s3 buckets? в этом случае не будет ни хоста, ни экземпляров.

Было бы легко сделать тесты Unittest а также boto3 и позвоните в API AWS, но мой вопрос: могу ли я использовать 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 звонки?

1 ответ

Я не могу комментировать, иначе я бы сделал это, но чтобы ускорить процесс, вы можете настроить Molecule так, чтобы он не управлял последовательностями создания и уничтожения. И использовать delegated Водитель с сходящейся Playbook, имеющий connection=local, Таким образом, вы можете просто создать группу безопасности, используя роль, без предоставления экземпляров и использовать boto3, чтобы подтвердить, что ваши изменения верны.

Таким образом, вам нужно только, чтобы в тестовой среде были доступны надлежащие ключи для выполнения вызовов API с использованием boto, вместо того, чтобы беспокоиться о том, работает ли экземпляр EC2.

Другие вопросы по тегам