View a markdown version of this page

Démarrage avec AWS DevOps Agent utilisant Terraform - AWS DevOps Agent

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.

Démarrage avec AWS DevOps Agent utilisant Terraform

Présentation de

Ce guide vous explique comment utiliser Terraform pour créer et déployer des ressources d' AWS DevOps agent. La configuration Terraform automatise la création d'un espace d'agent, de rôles IAM, d'une application d'opérateur et d'associations de comptes. AWS

L'approche Terraform automatise les étapes manuelles décrites dans le guide d'intégration de la CLI en définissant toutes les ressources requises sous forme d'infrastructure sous forme de code.

AWS DevOps L'agent est disponible dans les 6 AWS régions suivantes : USA Est (Virginie du Nord), USA Ouest (Oregon), Asie-Pacifique (Sydney), Asie-Pacifique (Tokyo), Europe (Francfort) et Europe (Irlande). Pour plus d'informations sur les régions prises en charge, consultezRégions prises en charge.

Conditions préalables

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Terraform >= 1.0 installé

  • AWS CLI installée et configurée avec les informations d'identification appropriées

  • Un AWS compte pour le compte de surveillance (principal)

  • (Facultatif) Un deuxième AWS compte si vous souhaitez configurer la surveillance entre comptes

Ce que couvre ce guide

Ce guide est divisé en trois parties :

  • Partie 1 — Déployez un espace d'agent avec une application d'opérateur et une AWS association dans votre compte de surveillance. Une fois cette partie terminée, l'agent peut surveiller les problèmes liés à ce compte.

  • Partie 2 (facultatif) — Ajoutez une AWS association source pour un compte de service et déployez un rôle IAM entre comptes ainsi qu'un echo Lambda dans ce compte. Cela permet à l'espace des agents de surveiller les ressources entre les comptes.

  • Partie 3 (facultatif) — Enregistrez des services tiers (Dynatrace, Splunk ServiceNow, New Relic, GitLab, PagerDuty) et associez-les à l'espace des agents.

Ressources créées

Partie 1 : Compte de surveillance

  • Rôle IAM (DevOpsAgentRole-AgentSpace-*) : assumé par le service DevOps Agent pour surveiller le compte. Inclut la politique AIDevOpsAgentAccessPolicy gérée et une politique en ligne qui permet de créer le rôle lié au service Resource Explorer. Créé uniquement lorsqu'il n'existing_agentspace_role_arnest pas défini.

  • Rôle IAM (DevOpsAgentRole-WebappAdmin-*) : rôle d'application opérateur avec la politique AIDevOpsOperatorAppAccessPolicy gérée pour les opérations de l'agent. Créé uniquement lorsqu'il n'existing_operator_role_arnest pas défini.

  • Espace d'agent (nom configurable) : espace d'agent central, créé à l'aide de la awscc_devopsagent_agent_space ressource. Inclut la configuration de l'application pour les opérateurs.

  • Association (AWS moniteur) — Lie le compte de surveillance à l'espace des agents utilisant la awscc_devopsagent_association ressource.

  • Association (AWS source) — (Facultatif) Lie le compte de service à l'espace des agents pour la surveillance entre comptes.

Partie 2 : Compte de service (facultatif)

  • Rôle IAM (DevOpsAgentRole-SecondaryAccount-TF) : Cross-account rôle avec un nom fixe. Approuvé par l'espace réservé aux agents dans le compte de surveillance. Inclut la politique AIDevOpsAgentAccessPolicy gérée et une politique en ligne qui permet de créer le rôle lié au service Resource Explorer.

  • Fonction Lambda (echo-service-tf) : exemple de service simple qui renvoie les événements d'entrée.

Configuration

Étape 1 : Cloner le référentiel d'échantillons

git clone https://github.com/aws-samples/sample-aws-devops-agent-terraform.git cd sample-aws-devops-agent-terraform

Étape 2 : Configuration des variables

Copiez le fichier de variables d'exemple et personnalisez-le en fonction de votre environnement :

cp terraform.tfvars.example terraform.tfvars

Modifiez terraform.tfvars avec le nom et la description de votre espace agent :

agent_space_name = "MyCompanyAgentSpace" agent_space_description = "DevOps Agent Space for monitoring production workloads"

Partie 1 : Déploiement de l'espace agent

Dans cette section, vous allez créer l'espace agent, les rôles IAM, l'application opérateur et une AWS association dans votre compte de surveillance.

Utilisez le script de déploiement fourni pour une configuration rationalisée :

./deploy.sh

Ce script :

  • Vérifie les prérequis (Terraform, AWS CLI, informations d'identification)

  • Crée terraform.tfvars à partir d'un exemple si nécessaire

  • Initialise, valide, planifie et applique Terraform

Sinon, si vous préférez le contrôle manuel :

terraform init terraform plan terraform apply

Tapez yes lorsque vous êtes invité à confirmer le déploiement.

Étape 2 : Enregistrez les sorties

Une fois le déploiement terminé, Terraform imprime les sorties. Enregistrez ces valeurs pour une utilisation ultérieure :

Outputs: agent_space_id = "abc123" agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/abc123" agent_space_name = "MyCompanyAgentSpace" devops_agentspace_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-AgentSpace-a1b2c3d4" devops_operator_role_arn = "arn:aws:iam::<MONITORING_ACCOUNT_ID>:role/DevOpsAgentRole-WebappAdmin-a1b2c3d4" primary_account_id = "<MONITORING_ACCOUNT_ID>" primary_account_association_id = "assoc-xyz"

Si vous prévoyez de terminer la partie 2, enregistrez la agent_space_arn valeur. Vous en aurez besoin pour configurer les ressources du compte de service.

Étape 3 : vérifier le déploiement

Exécutez le script de vérification après le déploiement :

./post-deploy.sh

Vous pouvez également utiliser la AWS CLI pour vérifier que l'espace agent a été créé avec succès :

aws devops-agent get-agent-space \ --agent-space-id <AGENT_SPACE_ID> \ --region <REGION>

À ce stade, votre espace d'agent est déployé avec l'application opérateur activée et votre compte de surveillance associé. L'agent peut surveiller les problèmes liés à ce compte.

Partie 2 (facultatif) : Ajouter une surveillance entre comptes

Dans cette section, vous étendez la configuration afin que l'espace agent puisse surveiller les ressources d'un deuxième AWS compte (le compte de service). Cela implique deux actions :

  1. Ajout d'une AWS association source pointant vers le compte de service.

  2. Déploiement d'un rôle IAM entre comptes et d'une fonction Echo Lambda dans le compte de service.

Important

Vous devez terminer la partie 1 avant de continuer. Les ressources du compte de service nécessitent le résultat agent_space_arn de déploiement de la partie 1.

Étape 1 : configurer l'ID du compte de service

Dansterraform.tfvars, définissez l'identifiant de votre compte de service :

service_account_id = "<YOUR_SERVICE_ACCOUNT_ID>"

Étape 2 : définir l'ARN de l'espace agent

Copiez la agent_space_arn valeur de la sortie de la partie 1 (étape 2) et définissez-la dans terraform.tfvars :

agent_space_arn = "arn:aws:aidevops:<REGION>:<MONITORING_ACCOUNT_ID>:agentspace/<SPACE_ID>"

Les ressources du compte de service utilisent cette valeur pour définir la politique de confiance relative au rôle du compte secondaire. Ces ressources ne sont créées que lorsque cette valeur est définie.

Étape 3 : Configuration du fournisseur `aws.service`

Dansmain.tf, configurez l'alias du aws.service fournisseur avec les informations d'identification du compte de service. Vous pouvez utiliser un profil nommé ou un rôle d'emprunt :

À l'aide d'un profil :

provider "aws" { alias = "service" region = var.aws_region profile = "your-service-account-profile" }

Ou en utilisant assume le rôle :

provider "aws" { alias = "service" region = var.aws_region assume_role { role_arn = "arn:aws:iam::<SERVICE_ACCOUNT_ID>:role/OrganizationAccountAccessRole" } }

Étape 4 : Déploiement

Appliquez la configuration mise à jour :

terraform apply

Cela crée les ressources suivantes dans le compte de service :

  • Un rôle IAM (DevOpsAgentRole-SecondaryAccount-TF) qui fait confiance à l'espace des agents dans le compte de surveillance

  • Une fonction Echo Lambda (echo-service-tf) comme exemple de service

Il crée également une AWS association de source dans le compte de surveillance qui lie le compte de service.

Étape 5 : vérifier le déploiement

Testez le service Echo pour vérifier que la fonction Lambda a été déployée avec succès :

aws lambda invoke \ --function-name echo-service-tf \ --payload '{"test": "hello world"}' \ --profile <your-service-account-profile> \ --region <REGION> \ response.json cat response.json

Partie 3 (facultatif) : Enregistrer les intégrations tierces

Dans cette section, vous enregistrez des services externes (Dynatrace, Splunk ServiceNow, New Relic, GitLab, PagerDuty) auprès de l'espace agent. Ces intégrations permettent à AWS DevOps l'agent d'accéder à la télémétrie, aux données sur les incidents et aux informations de contrôle des sources pendant les enquêtes.

Contrairement à l'exemple AWS CDK, qui nécessite une IntegrationsStack phase séparée et un câblage manuel de l'identifiant de l'espace agent, ces ressources font directement référence à l'espace agent et peuvent être déployées de la même manière terraform apply que dans la partie 1.

Intégrations prises en charge

Service Type de service Authentification
Dynatrace dynatrace Informations d’identification client OAuth
ServiceNow servicenow Informations d’identification client OAuth
Splunk mcpserversplunk Jeton au porteur
New Relic mcpservernewrelic Clé API
GitLab gitlab Jeton d’accès
PagerDuty pagerduty Informations d’identification client OAuth
Note

Datadog n'est pas inclus dans la configuration de Terraform. La connexion à Datadog nécessite une autorisation OAuth interactive de l'utilisateur (connexion au navigateur et consentement), comme décrit dansConnecter DataDog, que Terraform ne peut pas automatiser. Enregistrez Datadog manuellement via la page Capability Providers de la console.

Étape 1 : Configuration des informations d'identification d'intégration

Ajoutez un integrations bloc àterraform.tfvars, en renseignant uniquement les services souhaités. L'exemple suivant montre une intégration Dynatrace :

integrations = { dynatrace = { account_urn = "<DYNATRACE_ACCOUNT_URN>" client_id = "<DYNATRACE_CLIENT_ID>" client_name = "<DYNATRACE_CLIENT_NAME>" client_secret = "<DYNATRACE_CLIENT_SECRET>" env_id = "<DYNATRACE_ENVIRONMENT_ID>" resources = ["<DYNATRACE_RESOURCE_1>"] } }

Pour connaître la forme complète de chaque intégration, consultez terraform.tfvars.example le référentiel d'exemples.

ServiceNow exigence : définissez toujours instance_id explicitement le nom court de l'instance (par exemple, "ven04972" mais pas le nom completinstance_url). Si elle instance_id est omise, l'association revient àinstance_url, ce que l'API de l' DevOps agent rejette avec un400 GeneralServiceException: instanceId '<url>' does not match the registered ServiceNow instance.

Sécurité : La integrations variable étant marquéesensitive, ses valeurs sont supprimées du plan et appliquées à la sortie. Ne confiez pas de véritables informations d'identification àterraform.tfvars. Pour la production, utilisez des AWS secrets de source provenant de Secrets Manager ou de AWS Systems Manager Parameter Store (par exemple, en utilisant data des sources) plutôt que du texte brut.

Étape 2 : Déploiement

Appliquez la configuration :

terraform apply

Cela crée un enregistrement de service et une association pour chaque intégration activée.

Étape 3 : Passez en revue les résultats

Une fois le déploiement terminé, les résultats de l'intégration associent chaque service activé à ses identifiants enregistrés :

integration_service_ids = { "dynatrace" = "service-abc123" } integration_association_ids = { "dynatrace" = "assoc-xyz789" }

Pour plus d'informations sur la configuration des informations d'identification pour chaque service, voir :

Utilisation de rôles IAM existants (facultatif)

Par défaut, la configuration Terraform crée de nouveaux rôles IAM pour l'espace agent et l'application opérateur. Si vous possédez déjà des rôles IAM dotés des politiques requises, vous pouvez ignorer la création de rôles et fournir les ARN des rôles existants à la place.

Exigences

Les rôles existants doivent répondre aux exigences suivantes :

Rôle de l'agent dans l'espace

  • La politique de confiance aidevops.amazonaws.com permet d'assumer le rôle avec sts:AssumeRole

  • La politique AIDevOpsAgentAccessPolicy gérée est-elle attachée

  • (Facultatif) Dispose d'une politique intégrée qui permet la création du rôle lié au service Resource Explorer

Rôle de l'opérateur dans l'application

  • La politique de confiance aidevops.amazonaws.com permet d'assumer le rôle avec sts:AssumeRole et sts:TagSession

  • La politique AIDevOpsOperatorAppAccessPolicy gérée est-elle attachée

Configuration

Dansterraform.tfvars, définissez un ou les deux ARN de rôle :

existing_agentspace_role_arn = "arn:aws:iam::ACCOUNT_ID:role/YourAgentSpaceRole" existing_operator_role_arn = "arn:aws:iam::ACCOUNT_ID:role/YourOperatorRole"

Lorsque ces valeurs sont définies, les ressources de rôle correspondantes iam.tf sont ignorées. Cette approche est entièrement rétrocompatible : les configurations existantes avec des valeurs vides (valeur par défaut) préservent le comportement actuel de création de rôles.

Résolution des problèmes

Retards de propagation de l'IAM

  • La configuration inclut un délai de 30 secondes time_sleep entre la création du rôle IAM et la création de l'espace agent. Le service DevOps Agent valide la politique de confiance du rôle d'opérateur lors de la création de l'espace agent, ce qui peut échouer si IAM ne s'est pas complètement propagé. Si des erreurs liées à la politique de confiance persistent, attendez une minute et terraform apply réexécutez. Les rôles IAM existeront déjà et l'application reprendra là où elle s'est arrêtée.

ServiceNow instanceId does not matcherreur

  • Définissez instance_id explicitement dans le bloc service_now d'intégration le nom court de l'instance (par exemple,"ven04972"), et non le nom completinstance_url. Voir la note dans la partie 3 ci-dessus.

Association Dynatrace status: invalid

  • En cas de terraform apply succès mais que l'association qui en résulte est signalée status = "invalid" (visible à l'aide aws devops-agent get-association de la console), cela indique que Dynatrace a rejeté les informations d'identification du client OAuth. Double-check client_idclient_secret, et account_urn contre le compte Dynatrace, plutôt qu'un problème de configuration de Terraform.

Erreurs d'autorisation

  • Vérifiez que vos AWS informations d'identification disposent des autorisations IAM nécessaires pour créer des rôles et des politiques.

  • Vérifiez que les conditions de la politique de confiance correspondent à votre numéro de compte.

Cross-account échec du déploiement

  • Le aws.service fournisseur doit être configuré avec les informations d'identification du compte de service. Utilisez un profil nommé ou un bloc de rôle assumé.

  • Vérifiez que la agent_space_arn valeur correspond à l'ARN de la sortie de la partie 1.

Type de ressource Terraform introuvable

  • Vérifiez que vous disposez de la version du awscc fournisseur ~> 1.0 ou d'une version ultérieure. Les awscc_devopsagent_association ressources awscc_devopsagent_agent_space et nécessitent le fournisseur AWS Cloud Control.

Nettoyage

Pour supprimer toutes les ressources, détruisez-les dans l'ordre inverse si vous avez déployé la partie 2 :

./cleanup.sh

Ou manuellement :

terraform destroy

Avertissement : Cela supprime définitivement votre espace d'agent et toutes les données associées. Assurez-vous d'avoir sauvegardé toutes les informations importantes avant de continuer.

Considérations sur la sécurité

  • La configuration Terraform crée des rôles IAM avec des politiques de confiance qui autorisent uniquement le principal du aidevops.amazonaws.com service à les assumer.

  • Les politiques de confiance incluent des conditions qui limitent l'accès à votre AWS compte spécifique et à l'ARN de votre espace agent.

  • Toutes les politiques suivent le principe du moindre privilège. Passez en revue et personnalisez les politiques IAM en fonction des exigences de sécurité de votre organisation.

  • Le rôle entre comptes (DevOpsAgentRole-SecondaryAccount-TF) utilise un nom fixe et est limité à un ARN d'espace agent spécifique.

Étapes suivantes

Après avoir déployé votre AWS DevOps agent à l'aide de Terraform :

  1. Découvrez la gamme complète des fonctionnalités de l' DevOps agent dans le guide de l'utilisateur de l'AWS DevOps agent.

  2. Envisagez d'intégrer le déploiement de Terraform dans vos CI/CD pipelines pour une gestion automatisée de l'infrastructure.

Ressources supplémentaires