Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Créez un cadre d'orchestration des ressources piloté par API à l'aide GitHub d'Actions et de Terragrunt
Tamilselvan P, Abhigyan Dandriyal, Sandeep Gawande et Akash Kumar, Amazon Web Services
Récapitulatif
Ce modèle utilise les flux de travail GitHub Actions pour automatiser le provisionnement des ressources par le biais de charges utiles JSON standardisées, éliminant ainsi le besoin de configuration manuelle. Ce pipeline automatisé gère le cycle de vie complet du déploiement et peut s'intégrer parfaitement à divers systèmes frontaux, qu'il s'agisse de composants d'interface utilisateur personnalisés ou de ServiceNow. La flexibilité de la solution permet aux utilisateurs d'interagir avec le système via leurs interfaces préférées tout en maintenant des processus standardisés.
L'architecture de pipeline configurable peut être adaptée pour répondre aux différentes exigences organisationnelles. L'exemple d'implémentation se concentre sur le provisionnement d'Amazon Virtual Private Cloud (Amazon VPC) et d'Amazon Simple Storage Service (Amazon S3). Le modèle répond efficacement aux défis courants de gestion des ressources cloud en normalisant les demandes au sein de l'organisation et en fournissant des points d'intégration cohérents. Cette approche permet aux équipes de demander et de gérer plus facilement les ressources tout en garantissant la standardisation.
Conditions préalables et limitations
Prérequis
Un actif Compte AWS
Un GitHub compte actif avec accès au référentiel configuré
Limites
Les nouvelles ressources nécessitent l'ajout manuel de
terragrunt.hcl
fichiers à la configuration du référentiel.Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, consultez la section AWS Services par région
. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.
Architecture
Le schéma suivant montre les composants et le flux de travail de ce modèle.

Le schéma d'architecture montre les actions suivantes :
L'utilisateur soumet une charge utile JSON à GitHub Actions, déclenchant le pipeline d'automatisation.
Le pipeline GitHub Actions récupère le code des ressources requis dans les référentiels Terragrunt et Terraform, en fonction des spécifications de charge utile.
Le pipeline assume le rôle approprié AWS Identity and Access Management (IAM) en utilisant l' Compte AWS ID spécifié. Ensuite, le pipeline déploie les ressources vers la cible Compte AWS et gère l'état de Terraform à l'aide du bucket Amazon S3 et de la table Amazon DynamoDB spécifiques au compte.
Chacun Compte AWS contient des rôles IAM pour un accès sécurisé, un compartiment Amazon S3 pour le stockage d'état Terraform et une table DynamoDB pour le verrouillage d'état. Cette conception permet un déploiement contrôlé et automatisé des ressources sur l'ensemble du territoire Comptes AWS. Le processus de déploiement assure une gestion de l'état et un contrôle d'accès appropriés grâce à des compartiments Amazon S3 dédiés et à des rôles IAM dans chaque compte.
Outils
Services AWS
Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.
AWS Identity and Access Management (IAM) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
Amazon Virtual Private Cloud (Amazon VPC) vous aide à lancer AWS des ressources dans un réseau virtuel que vous avez défini. Ce réseau virtuel ressemble à un réseau traditionnel que vous pourriez exécuter dans votre propre centre de données et présente l'avantage d'utiliser l'infrastructure évolutive d' AWS.
Autres outils
GitHub Actions
est une plateforme d'intégration et de livraison continues (CI/CD) étroitement intégrée aux GitHub référentiels. Vous pouvez utiliser GitHub les actions pour automatiser votre pipeline de création, de test et de déploiement. Terraform
est un outil d'infrastructure en tant que code (IaC) HashiCorp qui vous aide à créer et à gérer des ressources sur site et dans le cloud. Terragrunt
est un outil d'orchestration qui étend à la fois OpenTofu les fonctionnalités de Terraform et celles de Terraform. Il gère la manière dont les modèles d'infrastructure génériques sont appliqués, ce qui facilite la mise à l'échelle et la maintenance de grands parcs d'infrastructures.
Référentiel de code
Le code de ce modèle est disponible dans le référentiel GitHub sample-aws-orchestration-pipeline-terraform
Bonnes pratiques
Stockez AWS les informations d'identification et les données sensibles à l'aide des secrets GitHub du référentiel pour un accès sécurisé.
Configurez le fournisseur OpenID Connect (OIDC) pour qu' GitHub Actions assume le rôle IAM, en évitant les informations d'identification statiques.
Respectez le principe du moindre privilège et accordez les autorisations minimales requises pour effectuer une tâche. Pour plus d'informations, consultez les sections Accorder le moindre privilège et Bonnes pratiques en matière de sécurité dans la documentation IAM.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Initialisez le GitHub référentiel. | Pour initialiser le GitHub référentiel, procédez comme suit :
| DevOps ingénieur |
Configurez les rôles et les autorisations IAM. | Pour configurer les rôles et les autorisations IAM, procédez comme suit :
| DevOps ingénieur |
Configurez GitHub des secrets et des variables. | Pour obtenir des instructions sur la façon de configurer les secrets et les variables du référentiel dans le GitHub référentiel, consultez la section Création de variables de configuration pour un référentiel
| DevOps ingénieur |
Créez la structure du référentiel. | Pour créer la structure du référentiel, procédez comme suit :
| DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Exécutez le pipeline à l'aide de curl. | Pour exécuter le pipeline à l'aide de curl
Pour plus d'informations sur le processus d'exécution du pipeline, voir Informations supplémentaires. | DevOps ingénieur |
Valider les résultats de l'exécution du pipeline | Pour valider les résultats, procédez comme suit :
Vous pouvez également vérifier les ressources créées en utilisant le | DevOps ingénieur |
Tâche | Description | Compétences requises |
---|---|---|
Soumettez une demande de nettoyage. | Pour supprimer les ressources dont vous n'avez plus besoin, procédez comme suit :
| DevOps ingénieur |
Ressources connexes
AWS Blogs
Service AWS documentation
GitHub resources
Informations supplémentaires
Processus d'exécution du pipeline
Voici les étapes de l'exécution du pipeline :
Valide le format de charge utile JSON : garantit que la configuration JSON entrante est correctement structurée et contient tous les paramètres requis
Assume le rôle IAM spécifié : authentifie et assume le rôle IAM requis pour les opérations AWS
Télécharge le code Terraform et Terragrunt requis - Récupère la version spécifiée du code de ressource et des dépendances
Exécute le déploiement des ressources : applique la configuration pour déployer ou mettre à jour AWS les ressources dans l'environnement cible
Exemple de charge utile utilisée pour la création d'un VPC
Voici un exemple de code pour la création de compartiments d'état du backend Terraform :
state_bucket_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate"
lock_table_name = "${local.payload.ApplicationName}-${local.payload.EnvironmentId}-tfstate-lock"
Vous trouverez ci-dessous un exemple de charge utile pour créer un VPC avec Amazon VPC, dans vpc_cidr
lequel sont définies les spécifications du bloc CIDR pour le VPC. Le bucket d'état Terraform est mappé à une variable définie dans les fichiers. terraform
Le ref
paramètre contient le nom de branche du code à exécuter.
{ "ref": "main", "inputs": { "RequestParameters": { "RequestId": "1111111", "RequestType": "create", "ResourceType": "vpc", "AccountId": "1234567890", "AccountAlias": "account-alias", "RegionId": "us-west-2", "ApplicationName": "myapp", "DivisionName": "division-name", "EnvironmentId": "dev", "Suffix": "poc" }, "ResourceParameters": [ { "VPC": { "vpc_cidr": "10.0.0.0/16" } } ] } }
RequestParameters
sont utilisés pour suivre l'état de la demande dans la section du pipeline et tfstate
sont créés sur la base de ces informations. Les paramètres suivants contiennent des métadonnées et des informations de contrôle :
RequestId
— Identifiant unique pour la demandeRequestType
— Type d'opération (création, mise à jour ou suppression)ResourceType
— Type de ressource à approvisionnerAccountId
— Cible Compte AWS pour le déploiementAccountAlias
— Nom convivial pour le Compte AWSRegionId
— Région AWS pour le déploiement des ressourcesApplicationName
— Nom de l'applicationDivisionName
— Division de l'organisationEnvironmentId
— Environnement (par exemple, dev et prod)Suffix
— Identifiant supplémentaire pour les ressources
ResourceParameters
contiennent une configuration spécifique aux ressources qui correspond aux variables définies dans les fichiers Terraform. Toutes les variables personnalisées devant être transmises aux modules Terraform doivent être incluses. ResourceParameters
Le paramètre vpc_cidr
est obligatoire pour Amazon VPC.