Fermer

mars 31, 2025

Terraform rencontre Gitops: configurer Atlantis sur AWS pour la gestion automatisée des infrastructures

Terraform rencontre Gitops: configurer Atlantis sur AWS pour la gestion automatisée des infrastructures


Introduction

L’automatisation des infrastructures est une partie cruciale de la moderne DevOps Workflows, permettant aux équipes de gérer efficacement les ressources cloud à l’aide de l’infrastructure comme code (IAC). Terraform est un outil IAC largement utilisé, et lorsqu’il est associé à Atlantideil fournit un flux de travail transparent et axé sur Github pour gérer les changements d’infrastructure.

Atlantis intègre Terraform avec des systèmes de contrôle de version comme Github, gitlab et bitbucketl’automatisation de l’exécution de Terraform lorsque des demandes de traction (PRS) sont créées. Ce guide vous guidera dans la configuration Atlantide Sur une instance AWS EC2 et l’intégrer à GitHub pour une expérience d’automatisation Terraform optimisée.

Condition préalable

  • Instance AWS EC2: Exécution d’Amazon Linux 3, avec des ports 4000 et 22 ouvrir.
  • Utilisateur AWS IAM: Avec un accès complet à S3 et EC2.
  • Compte github: Avec un référentiel privé pour le code Terraform.
  • Connaissances de base: Familiarité avec les commandes Linux, Terraform et GitHub Workflows.
  • Outils requis: Un client SSH pour se connecter à votre instance EC2 et à votre CLI AWS pour la gestion des ressources.

Configuration de l’instance EC2

1. Lancez une instance EC2

  1. Se connecter à Console AWS et naviguer vers EC2.
  2. Faire un clic Instance de lancement et choisir Amazon Linux 3 comme l’ami.
  3. Sélectionner un Type d’instance (par exemple, t2.micro ou supérieur).
  4. Configurer Groupe de sécurité Pour permettre le trafic entrant sur:
  5. Lancez l’instance et téléchargez le paire de clés pour l’accès SSH.
Image EC2

EC2 SG

2. Connectez-vous à l’instance

SSH dans l’instance EC2:

ssh -i your-key.pem ec2-user@your-ec2-public-ip

Mettre à jour les packages système:

sudo yum update -y

Installation et configuration d’Atlantis sur Amazon Linux 3

1. Installer Docker

sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker

Statut de docker

Vérifiez l’installation de Docker:

docker --version
Version docker

Version docker

2. Générer un jeton d’accès GitHub

  1. Aller à GitHub> Paramètres> Paramètres du développeur> Jeton d’accès personnel ou Cliquez ici
  2. Faire un clic Générer de nouveaux jetons (classiques).
    Générer un nouveau jeton

    Générer un nouveau jeton

    Maintenant, entrez le nom et définissez l’expiration du jeton –

    Nom et expiration du jeton

    Nom et expiration du jeton

    Activer les portées:

    1. repo (accès au référentiel)
    2. admin:repo_hook (autorisation Webhook)
      Sélectionner des lunettes

      Sélectionner des lunettes

  3. Faire un clic Générer un jeton et le copier (GitHub ne le montrera plus).
    Générer un jeton

    Générer un jeton

    Jeton

    Jeton

3. Exécutez le conteneur Docker Atlantis

sudo vi Dockerfile

Collez le contenu suivant:

FROM ghcr.io/runatlantis/atlantis:latest

USER root
RUN apk add --no-cache aws-cli

# Ensure the 'atlantis' user exists before changing ownership
RUN id atlantis || adduser -D atlantis

RUN mkdir -p /home/atlantis/.aws
RUN touch /home/atlantis/.aws/credentials

RUN chown -R atlantis:atlantis /home/atlantis/

USER atlantis
Dockerfile

Dockerfile

Enregistrez le fichier et créez l’image Atlantis:

docker build -t atlantis .
Image de Docker Atlantis

Image de Docker Atlantis

Exécutez le conteneur Atlantis:

docker run -itd -p 4000:4141 --name atlantis atlantis server --automerge --autoplan-modules --gh-user=<github-account-username> --gh-token=<github-usr-access-token> --repo-allowlist=<list of allowed repos>
Création de conteneurs Atlantis

Création de conteneurs Atlantis

Configuration AWS dans Atlantis Docker Container

Pour permettre à Atlantis d’interagir avec AWS, créez un utilisateur IAM avec l’accès complet S3 et EC2:

  • Allez sur AWS IAM> utilisateurs> Créer un utilisateur.
  • Attacher Amazons3fullaccess et Amazonec2fullaccess politiques.
  • Générer et enregistrer le Clé d’accès et Clé secrète.

Ensuite, configurez les informations d’identification AWS à l’intérieur du conteneur Docker Atlantis en exécutant la commande suivante sur votre instance EC2:

docker exec -it atlantis /bin/sh

Une fois à l’intérieur du conteneur, ouvrez le fichier d’identification AWS pour l’édition:

vi /home/atlantis/.aws/credentials

Ajoutez les lignes suivantes au fichier des informations d’identification et enregistrez-le:

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

Remplacez les espaces réservés par vos informations d’identification de l’utilisateur IAM:

Your_access_key: accéder à l’identifiant de clé de l’utilisateur AWS IAM.
Your_Secret_key: ID de clé d’accès secret de l’utilisateur AWS IAM.

Remarque de sécurité importante: Le stockage des clés d’accès AWS directement sur une instance EC2 n’est pas recommandé pour les environnements de production en raison des risques de sécurité. Cette configuration est démontrée ici à des fins éducatives uniquement. Dans un scénario du monde réel, envisagez d’utiliser des rôles AWS IAM avec les profils d’instance EC2 ou AWS Secrets Manager pour gérer en toute sécurité les informations d’identification.

Note: Si vous avez plusieurs profils AWS, vous pouvez ajouter des entrées de profil supplémentaires dans le fichier d’identification et les spécifier dans votre configuration Terraform.

Configuration des webhooks dans le référentiel GitHub

WebHooks permet à Atlantis de réagir pour extraire les événements de demande et appliquer automatiquement les modifications de Terraform. Suivez ces étapes pour configurer un webhook dans votre référentiel GitHub:

    1. Ouvrez votre référentiel GitHub qui contient votre code Terraform.
    2. Aller à ParamètresWebhooks.
    3. Faire un clic Ajouter WebHook.
    4. Définir URL de charge utile à:
http://your-ec2-public-ip:4000/events
  1. Ensemble Type de contenu à application/json.Nom de webhook
  2. Sélectionner Permettez-moi de sélectionner des événements individuels et vérifiez les options suivantes:
    • Émettre des commentaires
    • Examen des demandes de tirage
    • Des demandes de traction
    • Poussées
      Sélection des événements

      Sélection des événements

  3. S’assurer que Actif est vérifié.
    Actif est vérifié
  4. Faire un clic Ajouter WebHook.

Maintenant, chaque fois qu’une demande de traction est créée, mise à jour ou fusionnée, Atlantis recevra un événement et exécutera le flux de travail Terraform pertinent.

Exécution du flux de travail Terraform avec Atlantis

    1. Créer une nouvelle demande de traction Dans GitHub.
      Créer une demande de traction

      Créer une demande de traction

    2. Atlantis s’exécuter automatiquement terraform plan.
      Plan Atlantis

      Plan Atlantis


      Nous pouvons utiliser le Montrer la sortie option pour voir la sortie du plan de terre commande –

      Sortie du plan Terraform

      Sortie du plan Terraform

    3. Pour appliquer les modifications, commentaire:
atlantis apply -d .
Terraform s'applique

Terraform s’applique

  1. Une fois appliqué, vous pouvez vérifier Console AWS pour les ressources créées.
    Ressource AWS

    Ressource AWS

Conclusion

En utilisant Terraform avec Atlantis et Github, les équipes peuvent automatiser les mises à jour des infrastructures tout en maintenant la sécurité, l’efficacité et le travail d’équipe. Avec Atlantis, les modifications passent par un processus de demande de traction, garantissant qu’ils sont examinés et approuvés avant d’être déployés.

L’un des principaux avantages d’Atlantis est qu’il verrouille le fichier d’état pendant l’ouverture d’une demande de traction. Cela aide à garder les choses en sécurité en empêchant plusieurs utilisateurs de modifier en même temps, en réduisant le risque de problèmes de fichiers d’État.

FAQ

  • Comment Atlantis se compare-t-il à Terraform Cloud? – Atlantis est Hostomédien et gratuittandis que Terraform Cloud a associé les coûts.
  • Atlantis convient-il aux grandes infrastructures? – Oui, il prend en charge environnements multi-représentants.
  • Puis-je intégrer Atlantis avec des outils CI / CD? – Oui, il peut être intégré à des jenkins, des actions GitHub, etc.
  • Comment résoudre les problèmes de configuration d’Atlantis? – Vérifiez les journaux en utilisant docker logs atlantis.
  • Atlantis est-il sécurisé? – Oui, lorsqu’il est correctement configuré avec IAM Politiques et groupes de sécurité.

Vous avez trouvé cela utile? PARTAGEZ-LE






Source link