Qu'est-ce que l'infrastructure en tant que code ? Avantages, outils et meilleures pratiques pour les équipes informatiques
Selon l'accélérateurate State Dans le cadre de l'enquête du rapport DevOps 2019, 80 % des personnes interrogées ont déclaré que l'application ou le service principal qu'ils prenaient en charge était hébergé sur une sorte de cloud. platformulaire. 50 % des personnes interrogées ont déclaré que leur application principale était hébergée sur le cloud public.
Pourquoi l'infrastructure en tant que code ?
Traditionally, si nous regardons en arrière lorsque vous vouliez un serveur, vous souleviez un ticket et quelqu'un de l'équipe des opérations créeraitate une instance de VM ou commander un serveur physique. Cela peut utiliser des scripts, un pointer-cliquer ou même une installation manuelle.
Et puis, à chaque requête, il y aurait plus de machines virtuelles, pour le DNS, la messagerie, les bases de données, etc. Et puis, il y avait des mises à jour continuesates aux systèmes d'exploitation, aux serveurs Web, aux JVM et à tout le reste. Au fil du temps, ils ont eu des configurations légèrement différentes les unes des autres (configuration drift) résultant en des serveurs snowflake. Et lorsque quelque chose tombait en panne, il était difficile de suivre les modifications apportées.
C'était toujours acceptable tant que les serveurs étaient peu nombreux et durables.
Un grand changement s'est produit avec l'arrivée de service cloud des entreprises comme AWS. De nombreuses entreprises, au lieu d'investir dans du matériel et des centres de données, ont commencé à déplacer leurs applications vers le cloud. Et dans le cloud, vous pouvez déployer un serveur en quelques minutes, ce qui prenait auparavant des heures, voire des jours.
Pour maintenir des performances et une disponibilité optimales, vous devrez peut-être déployer davantage d'instances pour répondre à la demande. Et puis later vous devrez peut-être résilierate eux pour économiser sur les coûts. Comme vous payez à l’heure, vous devrez peut-être augmenter ou diminuer votre tarif chaque jour. Faire ce manuelally, plusieurs fois par jour est clairement un défi.
Capturer les étapes requises pour déployer ou résilierate les instances et autres composants d'infrastructure dans le code permettent l'automatisation. L'automatisation du provisionnement du cloud et de l'infrastructure peut contribuer à générer de la valeur plus rapidement et de manière fiable.
Qu'est-ce que l'infrastructure en tant que code?
L'infrastructure en tant que code (IaC) est l'automatisation de l'infrastructure utilisant des principes et des pratiques de développement logiciel.
L'idée est que vous traitez votre infrastructure comme un logiciel, puis écrivez, testez et exécutez du code pour définir, déployer, mettre à jour.ate, et détruisez votre infrastructure. Vous écrivez du code pour gérer vos serveurs, bases de données, réseaux, journaux, déploiement et configuration d'applications. Lorsque vous souhaitez apporter des modifications à votre infrastructure, vous apportez des modifications au code, le testez, puis l'appliquez à vos systèmes.
Avantages
L'infrastructure en tant que code offre des avantages significatifs par rapport au provisionnement manuel:
Self-Service
Comme l'infrastructure est définie comme du code, l'ensemble process et le déploiement peut être automatiqueated et peut être démarré par n'importe qui dans le DevOps équipe. Les utilisateurs de l'infrastructure obtiennent les ressources dont ils ont besoin lorsqu'ils en ont besoin.
Idempotence
Être idempotent signifie que vous définissez le st souhaitéate, et peu importe le nombre de fois que vous exécutez le script, le résultat est le même. Il vérifie le st actuelate et le st souhaitéate et n'applique que les changements nécessaires. Cela peut être extrêmement difficile à réaliser avec les scripts bash.
Des outils comme Ansible et de Terraform ont des fonctionnalités intégrées pour rendre votre code idempotent.
Coûts réduits
Réduit le temps et effort requis pour le provisionnement, bien moins que le provisionnement manuel.
Livraison de logiciels plus rapide
Le provisionnement rapide de l’infrastructure pour le développement, les tests et la production vous permet de fournir des logiciels beaucoup plus rapidement. Depuis le déploiement process est automatiqueated, il est également cohérent et reproductible.
Self Documenter
Le state de l'infrastructure est définie dans un code facilement lisible par tous.
Contrôle de version
Traditionally les changements dans les systèmes de production sont considérés comme risqués. Mais alors, le changement est inévitable. Vous devrez peut-être ajouter une nouvelle base de données lorsque vous ajoutez une nouvelle fonctionnalité. Vous devrez peut-être ajouter de nouveaux serveurs ou stockage au cluster. L'infrastructure en tant que code réduit le effort et le risque d’apporter des modifications aux infrastructures.
Vous pouvez archiver vos fichiers sources dans le contrôle de version, ce qui signifie que vous pouvez suivre toutes les modifications apportées à l'infrastructure et revert rapidement au prevversion ious si quelque chose se casse.
Validation et test
L'infrastructure en tant que code permet de tester et d'appliquer de petites modifications en continu. Comme tout est code, vous pouvez vérifier les erreurs à l'aide de l'analyse statique et de l'automatisation.ated'essais.
Sécurité améliorée
Le passage à l'infrastructure sous forme de code vous permet d'intégrer la sécurité dès le début, puis vous pouvez appliquer les modifications de manière fiable et sûre.
Infrastructure en tant qu'outils de code
Bien que de nombreux outils soient disponibles, en choisir un avec lequel travailler n'est peut-être pas facile. Voici quelques-unes des considérations qui pourraient vous être utiles:
Gestion de la configuration vs outils de provisioning
D'une manière générale, les outils disponibles relèvent de deux categories –
- Outils de gestion de la configuration.
- Outils de provisionnement
Outils de gestion de la configuration
Les outils de gestion de la configuration sont conçus pour gérer les utilisateurs, installer et gérer les logiciels et les outils sur les serveurs existants. Chef, Fantoche, Ansible, et SaltStack sont tous principalement des outils de configuration.

Vous pouvez utiliser des outils de gestion de configuration pour installer et mettre à jourate le logiciel sur les serveurs.
Outils de provisionnement
Terraformer, Formation Nuage, OpenStack Heat, en revanche, sont des outils de provisioning, c'est-à-dire utilisés pour créerate serveurs, serveurs de base de données, équilibreurs de charge, files d'attente, sous-réseaux, pare-feu et tous les autres composants de votre infrastructure. Ces outils effectuent des appels API aux fournisseurs pour créerate les infrastructures requises.

Infrastructure mutable vs immuable
L'infrastructure mutable est une infrastructure qui peut être modifiée une fois qu'elle a été provisionnée. Chef, Ansible, Puppet et SaltStack sont conçus pour installer ou mettre à jourate le logiciel sur les serveurs existants. Cela peut se produire plusieurs fois au cours de la durée de vie d'un serveur. Après de nombreuses mises à jourates, chaque serveur est susceptible d'être un peu différent des autres, ce qui conduit à la configuration drift. Par exemple, certaines modifications qui fonctionnent correctement sur les serveurs de test peuvent ne pas fonctionner sur les serveurs de production.
Des outils comme Terraform et Formation Nuage sont conçus pour créerate un nouveau serveur à partir d'une image machine ou d'une image conteneur à chaque fois. Si les serveurs doivent être mis à jourated, vous les remplacez par de nouveaux serveurs. Lorsque les nouveaux serveurs seront opérationnels, vous pourrez résilierate les anciens. Chaque déploiement utilise une image immuable pour créerate un serveur, évitant ainsi la configuration drift. Cela peut cependant être un peu lent.
Outils impératifs vs déclaratifs
Les outils impératifs sont similaires aux scripts. Vous listez les étapes à suivre pour arriver à l'étape souhaitéeate. Les outils déclaratifs vous permettent de spécifier la fin state, et l'outil élabore les étapes pour y parvenirate.
Alors que Chef est avant tout un outil impératif, Ansible utilise une approche hybride et prend en charge les techniques impératives et déclaratives.
Terraform, CloudFormation, Puppet, OpenStack Heat et SaltStack appartiennent tous aux outils déclaratifs catesanglant où tu déclares la fin souhaitéeate.
Utiliser plusieurs outils ensemble
Bien que chacun de ces outils puisse être utilisé seul, une approche commune consiste à les utiliser ensemble. Par exemple, vous pouvez utiliser Terraform pour créer des VPC, des sous-réseaux, Internet gatemanières, équilibreurs de charge et machines virtuelles, puis utilisez Ansible pour configurer et déployer des services sur ces instances.
Conclusion
L'infrastructure définie en tant que code offre de nombreux avantages par rapport au provisionnement manuel: elle peut être contrôlée, testée en version et conduit à un provisionnement et une livraison de logiciels plus rapides. De nombreuses organisations ont déjà commencé à adopter l'approche IaC pour construire et gérer leur infrastructure.