Infrastructure As Code
Il y a longtemps, dans un centre de données très, très éloigné, un ancien groupe d'êtres puissants connus sous le nom d'administrateurs système déployait l'infrastructure manuellement. Chaque serveur, chaque entrée de table de routage, chaque configuration de base de données et chaque équilibreur de charge était créé et géré à la main. C'était une époque sombre et effrayante : peur des temps d'arrêt, peur d'une mauvaise configuration accidentelle, peur des déploiements lents et fragiles, et peur de ce qui se passerait si les administrateurs système tombaient du côté obscur (c'est-à-dire prenaient des vacances). La bonne nouvelle est que, grâce à la DevOps Rebel Alliance, il existe une meilleure voie celle de l' Infrastructure-as-Code (IAC).
Le but de l'IAC est d'écrire du code pour définir, provisionner et gérer une infrastructure.
Cela a un certain nombre d'avantages :
- Automatisation de l'ensemble des processus de provisionnement et de déploiement (Rapidité et Fiabilité)
- Avoir un état de l'infrastructure dans des fichiers sources lisibles et accessibles
- Versionner les fichiers source (Historique, Journal de validation, Meilleur débogage, Backup et retour en arrière)
- Valider chaque changement d'infrastructure grâce à des révisions de code et à des tests automatisés.
- Accès à des bibliothèques de code d'infrastructure réutilisables, documentées et testées (pour la mise à l'échelle et l'évolution)
Outils d'IAC
Il existe plusieurs outils d'IAC qui ont leurs avantages et leurs inconvénients. Des outils de gestions de la configuration:
- Chef
- Puppet
- Ansible (devenu la référence pour automatiser les configurations)
- SaltStack
Des outils de gestion de l'infrastructure
- CloudFormation (uniquement pour AWS)
- Terraform (devenu la référence pour la gestion de l'infrastructure avec état)
Ansible
Ansible est devenu en quelques années la référence absolu pour la gestion de configuration. C'est un outil opensource (géré par RedHat/IBM) qui utilise un style procédure. Il ne stocke pas d'état mais utilise le principe d’impédance. Il ne refait pas deux fois la même chose car il teste si il y a eu un changement entre ce qu'il voit et ce qu'il doit faire.
Terraform
Terraform a été développé par Hashicorp à qui l'on doit également des outils comme vagrant, consul, nomad...
Il est utilisé pour définir et provisionner l'infrastructure complète à l'aide d'un langage déclaratif, le hcl (Hashicorp Configuration Langage).
Il s'agit d'un outil dans lequel vous pouvez stocker la configuration de votre infrastructure cloud sous forme de code.