

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.

# Commencer à utiliser l' AWS DevOps agent à l'aide de Terraform
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-terraform"></a>

## Présentation de
<a name="overview"></a>

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](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html) 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, consultez[Régions prises en charge](about-aws-devops-agent-supported-regions.md).

## Conditions préalables
<a name="prerequisites"></a>

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
<a name="what-this-guide-covers"></a>

Ce guide est divisé en deux 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.

## Ressources créées
<a name="resources-created"></a>

### Partie 1 : Compte de surveillance
<a name="part-1-monitoring-account"></a>
+ **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.
+ Rôle **IAM (`DevOpsAgentRole-WebappAdmin-*`) : rôle** d'application opérateur avec la politique `AIDevOpsOperatorAppAccessPolicy` gérée pour les opérations des agents.
+ **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)
<a name="part-2-service-account-optional"></a>
+ Rôle **IAM (`DevOpsAgentRole-SecondaryAccount-TF`) : rôle** multicompte 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
<a name="setup"></a>

### Étape 1 : cloner le référentiel d'échantillons
<a name="step-1-clone-the-sample-repository"></a>

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

### Étape 2 : Configuration des variables
<a name="step-2-configure-variables"></a>

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
<a name="part-1-deploy-the-agent-space"></a>

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.

### Étape 1 : déploiement automatique (recommandé)
<a name="step-1-deploy-with-automation-recommended"></a>

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
<a name="step-2-record-the-outputs"></a>

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
<a name="step-3-verify-the-deployment"></a>

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
<a name="part-2-optional-add-cross-account-monitoring"></a>

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.

1. 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
<a name="step-1-configure-the-service-account-id"></a>

Dans`terraform.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
<a name="step-2-set-the-agent-space-arn"></a>

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`
<a name="step-3-configure-the-awsservice-provider"></a>

Dans`main.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
<a name="step-4-deploy"></a>

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
<a name="step-5-verify-the-deployment"></a>

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
```

## Résolution des problèmes
<a name="troubleshooting"></a>

**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.

**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.

**Le déploiement entre comptes échoue**
+ 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
<a name="cleanup"></a>

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é
<a name="security-considerations"></a>
+ 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
<a name="next-steps"></a>

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](https://docs.aws.amazon.com/devopsagent/latest/userguide/).

1. 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
<a name="additional-resources"></a>
+ [AWS DevOps Guide de l'utilisateur de l'agent](https://docs.aws.amazon.com/devopsagent/latest/userguide/)
+ [Exemple de référentiel Terraform](https://github.com/aws-samples/sample-aws-devops-agent-terraform)
+ [Guide d'intégration à la CLI](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html)