Bonjour, 

Merci beaucoup pour cette réponse extrêmement précise!



2018-02-15 10:07 GMT+01:00 Théophile Helleboid <chtitux@gmail.com>:
Est-ce que quelqu'un pourrait confirmer le contraire par exemple?
Ou genre, ou exactement ou devrait utiliser terraform a la place de cloudinit ou cloudform et on ne peut pas utiliser Ansible à la place?

La philosophie Unix, 1 outil (simple) pour 1 tâche (simple) permet de diminuer la complexité des outils tout en gardant un maximum de flexibilité. 

Si on veut faire des choses "compliquées" chez AWS, par exemple créer des domaines autorisés sur SES, leur solution d'envoi d'email, puis créer les enregistrements DNS nécessaires pour valider la propriété des domaines sur Route 53,De même,  ça peut se faire dans terraform. Mais pas dans ansible. 

Terraform n'est par contre pas capable d'exécuter des commandes ou modifier des fichiers de configuration une fois que l'instance est déjà démarrée. Ansible et puppet sont spécialisés dans ça. 

Cloud init permet d'exécuter des commandes au démarrage de l'instance. 

Un setup complet serait :
- terraform pour instancier les ressources chez le provider (instances, vpc, buckets, policy) 
- ansible ou puppet pour la configuration des instances 
- Cloud init pour, au démarrage de l'instance, configurer puppet et lancer le premier run 

 Si votre besoin est simple, ansible étant capable de faire du provisionnement, vous pouvez tout faire avec (ansible + Cloud init). Mais dès que la stack se complexifie, il faudra faire le choix entre terraform ou complexifier énormément les recettes ansible. 

L'objectif est d'autant de diminuer cette multitude interminable d'outillage au sein d'un SI.

Plus les outils savent faire de choses, moins ils sont spécialisés. L'équilibre est toujours précaire. 

Théophile Helleboid 



--
Boukari Sabri

Cloud DevOps Specialist
Failure is the Great Teacher