Nous avons récemment ouvert Terratest , notre couteau suisse spécialisé dans le code d’infrastructure.
Aujourd'hui, vous testez probablement tout votre code d'infrastructure manuellement en déployant, en validant et en annulant le déploiement. Terratest vous aide à automatiser ce processus:
- Ecrire des tests dans Go.
- Utilisez les utilitaires de Terratest pour exécuter vos outils IaC réels (Terraform, Packer, etc.) afin de déployer une infrastructure réelle (par exemple, des serveurs) dans un environnement réel (par exemple, AWS).
- Utilisez les utilitaires de Terratest pour valider que l'infrastructure fonctionne correctement dans cet environnement en effectuant des requêtes HTTP, des appels d'API, des connexions SSH, etc.
- Utilisez les utilitaires de Terratest pour annuler le déploiement de tous les éléments à la fin du test.
Voici un exemple de test pour du code Terraform:
terraformOptions := &terraform.Options {
// The path to where your Terraform code is located
TerraformDir: "../examples/terraform-basic-example",
}
// This will run `terraform init` and `terraform apply` and fail the test if there are any errors
terraform.InitAndApply(t, terraformOptions)
// At the end of the test, run `terraform destroy` to clean up any resources that were created
defer terraform.Destroy(t, terraformOptions)
// Run `terraform output` to get the value of an output variable
instanceUrl := terraform.Output(t, terraformOptions, "instance_url")
// Verify that we get back a 200 OK with the expected text
// It can take a minute or so for the Instance to boot up, so retry a few times
expected := "Hello, World"
maxRetries := 15
timeBetweenRetries := 5 * time.Second
http_helper.HttpGetWithRetry(t, instanceUrl, 200, expected, maxRetries, timeBetweenRetries)
Ce sont des tests d'intégration et, selon ce que vous testez, peuvent prendre entre 5 et 50 minutes. Ce n'est pas rapide (bien que vous utilisiez Docker et des étapes de test pour accélérer certaines choses), et vous devrez travailler pour rendre les tests fiables, mais cela en vaut vraiment la peine.
Consultez le référentiel Terratest pour la documentation et de nombreux exemples de différents types de code d’infrastructure et les tests correspondants.