Lorsque l’on industrialise la création de machines prêtes à l’emploi, on retombe toujours dans le même besoin : une machine provisionnée (CPU, RAM, sur tel réseau, …) et déjà configurée (configuration de l’OS, timezone, agent de monitoring (selon la solution de monitoring), mises à jour OS, …).
2 solutions classiques :
- maintenir à jour une image ISO (golden image) qui contiendra l’OS configuré avec tout le nécessaire + création instance de cette image via Terraform
OU BIEN
- création d’une instance via Terraform à partir d’une image cloud fournit par le cloud provider + gestion de la configuration post création
Dans ce post je vais m’intéresser à la 2e solution via Terraform+Ansible.
Terraform + Ansible
Nous pouvons très facilement enchaîner Terraform (IaC) et Ansible (gestion de configuration). Ainsi je propose la solution suivante : héberger votre serveur terraform et ansible sur le même host afin que l’exécution d’ansible soit facilitée à la fin de l’exécution de terraform.
Et pour ce faire, un shell script, que je ne partagerai pas ici, fera très bien l’affaire.
Ce shell d’orchestration devra rediriger la sortie console et erreur dans un fichier de logs afin de pouvoir suivre les erreurs d’exécutions, et également il devra rester interactif pour la première étape qui consiste à valider le plan d’exécution de terraform. Mais pour le reste il sera entièrement automatique.
La sortie d’exécution de terraform fournira l’ip publique de l’instance créée et c’est sur cette IP publique que nous exécuterons ansible.
De plus l’inventaire ansible sera généré dynamiquement par le shell script d’orchestration. Actuellement j’emploie cette solution et elle s’avère efficace (du moment que l’on gère correctement le terraform state et les valeurs sensibles tels que les mots de passe).

Le shell script d’orchestration enverra une notification team et/ou un email de notification pour prévenir lorsque son travail sera terminé.
Voilà, je ne rentre pas plus dans les détails, mais ce n’est pas bien plus compliqué que ce qui est présenté ici ! :p
Laisser un commentaire