

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Cómo empezar a usar AWS DevOps Agent con Terraform
<a name="getting-started-with-aws-devops-agent-getting-started-with-aws-devops-agent-using-terraform"></a>

## Descripción general de
<a name="overview"></a>

En esta guía, se muestra cómo usar Terraform para crear y desplegar recursos de AWS DevOps agentes. La configuración de Terraform automatiza la creación de un espacio de agentes, funciones de IAM, una aplicación de operador y asociaciones de cuentas. AWS 

El enfoque de Terraform automatiza los pasos manuales descritos en la [guía de incorporación de CLI](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html) al definir todos los recursos necesarios como infraestructura o código.

AWS DevOps El agente está disponible en las siguientes 6 AWS regiones: EE.UU. Este (Norte de Virginia), EE.UU. Oeste (Oregón), Asia Pacífico (Sídney), Asia Pacífico (Tokio), Europa (Fráncfort) y Europa (Irlanda). Para obtener más información sobre las regiones compatibles, consulte[Regiones admitidas](about-aws-devops-agent-supported-regions.md).

## Requisitos previos
<a name="prerequisites"></a>

Antes de empezar, asegúrese de que tiene lo siguiente:
+ Terraform >= 1.0 instalado
+ AWS CLI instalada y configurada con las credenciales adecuadas
+ Una AWS cuenta para la cuenta de supervisión (principal)
+ (Opcional) Una segunda AWS cuenta si desea configurar la supervisión multicuenta

## ¿Qué cubre esta guía
<a name="what-this-guide-covers"></a>

Esta guía se divide en dos partes:
+ **Parte 1**: Implemente un espacio de agente con una aplicación de operador y una AWS asociación en su cuenta de monitoreo. Tras completar esta parte, el agente puede supervisar los problemas en esa cuenta.
+ **Parte 2 (opcional)**: añadir una AWS asociación de origen para una cuenta de servicio e implementar un rol de IAM multicuenta más un echo Lambda en esa cuenta. Esto permite que el espacio de agentes supervise los recursos de todas las cuentas.

## Recursos creados
<a name="resources-created"></a>

### Parte 1: Supervisión de la cuenta
<a name="part-1-monitoring-account"></a>
+ **Función de IAM** (`DevOpsAgentRole-AgentSpace-*`): la asume el servicio de DevOps agente para supervisar la cuenta. Incluye la política `AIDevOpsAgentAccessPolicy` administrada y una política en línea que permite la creación del rol vinculado al servicio Resource Explorer.
+ Función **de IAM (`DevOpsAgentRole-WebappAdmin-*`): función** de operador en la aplicación con la política `AIDevOpsOperatorAppAccessPolicy` gestionada para las operaciones de los agentes.
+ **Espacio de agentes** (nombre configurable): el espacio de agente central, creado con el `awscc_devopsagent_agent_space` recurso. Incluye la configuración de la aplicación del operador.
+ **Asociación** (AWS monitor): vincula la cuenta de monitoreo al espacio del agente mediante el `awscc_devopsagent_association` recurso.
+ **Asociación** (AWS fuente): (opcional) vincula la cuenta de servicio al espacio de agentes para la supervisión de varias cuentas.

### Parte 2: Cuenta de servicio (opcional)
<a name="part-2-service-account-optional"></a>
+ **Función de IAM** (`DevOpsAgentRole-SecondaryAccount-TF`): función multicuenta con un nombre fijo. El espacio de agente de la cuenta de supervisión confía en él. Incluye la política `AIDevOpsAgentAccessPolicy` administrada y una política en línea que permite la creación del rol vinculado al servicio Resource Explorer.
+ **Función Lambda** (`echo-service-tf`): un servicio de ejemplo sencillo que reproduce los eventos de entrada.

## Configuración
<a name="setup"></a>

### Paso 1: clona el repositorio de muestras
<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
```

### Paso 2: Configurar las variables
<a name="step-2-configure-variables"></a>

Copie el archivo de variables de ejemplo y personalícelo para su entorno:

```
cp terraform.tfvars.example terraform.tfvars
```

`terraform.tfvars`Edítelo con el nombre y la descripción de su espacio de agente:

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

## Parte 1: Despliegue el espacio de agentes
<a name="part-1-deploy-the-agent-space"></a>

En esta sección, creará el espacio de agentes, las funciones de IAM, la aplicación del operador y una AWS asociación en su cuenta de supervisión.

### Paso 1: Implemente con automatización (recomendado)
<a name="step-1-deploy-with-automation-recommended"></a>

Utilice el script de implementación proporcionado para una configuración simplificada:

```
./deploy.sh
```

Este script automáticamente:
+ Comprueba los requisitos previos (Terraform, AWS CLI, credenciales)
+ Crea a `terraform.tfvars` partir de un ejemplo si es necesario
+ Inicializa, valida, planifica y aplica Terraform

Como alternativa, si prefiere el control manual:

```
terraform init
terraform plan
terraform apply
```

Escriba `yes` cuando se le pida que confirme el despliegue.

### Paso 2: Registre los resultados
<a name="step-2-record-the-outputs"></a>

Una vez completada la implementación, Terraform imprime los resultados. Registre estos valores para usarlos más adelante:

```
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 planea completar la parte 2, guarde el `agent_space_arn` valor. Lo necesitará para configurar los recursos de la cuenta de servicio.

### Paso 3: Verificar la implementación
<a name="step-3-verify-the-deployment"></a>

Ejecute el script de verificación posterior al despliegue:

```
./post-deploy.sh
```

O utilice la AWS CLI para comprobar que el espacio de agentes se creó correctamente:

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

En este punto, su espacio de agente se despliega con la aplicación del operador habilitada y su cuenta de supervisión asociada. El agente puede supervisar los problemas en esta cuenta.

## Parte 2 (opcional): Añadir la supervisión entre cuentas
<a name="part-2-optional-add-cross-account-monitoring"></a>

En esta sección, ampliará la configuración para que el espacio de agentes pueda supervisar los recursos de una segunda AWS cuenta (la cuenta de servicio). Esto implica dos acciones:

1. Añadir una AWS asociación de origen que apunte a la cuenta de servicio.

1. Implementación de una función de IAM multicuenta y una función de echo Lambda en la cuenta de servicio.

**importante**  
**Debe completar la parte 1 antes de continuar. Los recursos de la cuenta de servicio requieren el resultado `agent_space_arn` del despliegue de la primera parte.

### Paso 1: Configurar el ID de la cuenta de servicio
<a name="step-1-configure-the-service-account-id"></a>

En`terraform.tfvars`, configura el ID de tu cuenta de servicio:

```
service_account_id = "<YOUR_SERVICE_ACCOUNT_ID>"
```

### Paso 2: Configurar el ARN del espacio de agentes
<a name="step-2-set-the-agent-space-arn"></a>

Copie el `agent_space_arn` valor de la salida de la parte 1 (paso 2) y configúrelo en`terraform.tfvars`:

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

Los recursos de la cuenta de servicio utilizan este valor para establecer el ámbito de la política de confianza en el rol de la cuenta secundaria. Estos recursos solo se crean cuando se establece este valor.

### Paso 3: Configurar el proveedor `aws.service`
<a name="step-3-configure-the-awsservice-provider"></a>

En`main.tf`, configure el alias del `aws.service` proveedor con las credenciales de la cuenta de servicio. Puede usar un perfil con nombre o un rol asumido:

Uso de un perfil:

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

O usando assume rol:

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

### Paso 4: Implementar
<a name="step-4-deploy"></a>

Aplique la configuración actualizada:

```
terraform apply
```

Esto crea los siguientes recursos en la cuenta de servicio:
+ Un rol de IAM (`DevOpsAgentRole-SecondaryAccount-TF`) que confía en el espacio de agentes de la cuenta de supervisión
+ Una función echo Lambda (`echo-service-tf`) como servicio de ejemplo

También crea una AWS asociación de origen en la cuenta de monitoreo que vincula la cuenta de servicio.

### Paso 5: Verificar el despliegue
<a name="step-5-verify-the-deployment"></a>

Pruebe el servicio de eco para confirmar que la función Lambda se implementó correctamente:

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

## Resolución de problemas
<a name="troubleshooting"></a>

**Retrasos de propagación de IAM**
+ La configuración incluye un intervalo de 30 segundos `time_sleep` entre la creación del rol de IAM y la creación de Agent Space. El servicio de DevOps agente valida la política de confianza del rol de operador durante la creación de Agent Space, y esto puede fallar si IAM no se ha propagado por completo. Si sigue apareciendo errores en la política de confianza, espere un minuto y `terraform apply` vuelva a ejecutarlo: las funciones de IAM ya existen y la solicitud continuará donde la dejó.

**Errores de permisos**
+ Compruebe que sus AWS credenciales tienen los permisos de IAM necesarios para crear funciones y políticas.
+ Comprueba que las condiciones de la política de confianza coincidan con tu ID de cuenta.

**Se produce un error en el despliegue entre cuentas**
+ El `aws.service` proveedor debe estar configurado con las credenciales de la cuenta de servicio. Utilice un perfil con nombre o un bloque de asunción de roles.
+ Compruebe que el `agent_space_arn` valor coincide con el ARN de la salida de la parte 1.

**No se encontró el tipo de recurso de Terraform**
+ Compruebe que tiene la versión del `awscc` proveedor `~> 1.0` o posterior. Los `awscc_devopsagent_association` recursos `awscc_devopsagent_agent_space` y los recursos requieren el proveedor de AWS Cloud Control.

## Limpieza
<a name="cleanup"></a>

Para eliminar todos los recursos, destrúyelos en orden inverso si has desplegado la segunda parte:

```
./cleanup.sh
```

O manualmente:

```
terraform destroy
```

**Advertencia:** esto elimina permanentemente tu espacio de agente y todos los datos asociados. Asegúrese de haber hecho una copia de seguridad de toda la información importante antes de continuar.

## Consideraciones de seguridad
<a name="security-considerations"></a>
+ La configuración de Terraform crea funciones de IAM con políticas de confianza que solo permiten que el director del `aidevops.amazonaws.com` servicio las asuma.
+ Las políticas de confianza incluyen condiciones que restringen el acceso a su AWS cuenta específica y al ARN del espacio de agente.
+ Todas las políticas siguen el principio del privilegio mínimo. Revise y personalice las políticas de IAM en función de los requisitos de seguridad de su organización.
+ El rol multicuenta (`DevOpsAgentRole-SecondaryAccount-TF`) usa un nombre fijo y se limita a un ARN de espacio de agentes específico.

## Siguientes pasos
<a name="next-steps"></a>

Una vez que hayas desplegado tu AWS DevOps agente mediante Terraform:

1. Obtenga más información sobre la gama completa de funciones del DevOps agente en la [Guía del usuario del AWS DevOps agente](https://docs.aws.amazon.com/devopsagent/latest/userguide/).

1. Considere la posibilidad de integrar la implementación de Terraform en sus CI/CD procesos para automatizar la administración de la infraestructura.

## Recursos adicionales
<a name="additional-resources"></a>
+ [AWS DevOps Guía del usuario del agente](https://docs.aws.amazon.com/devopsagent/latest/userguide/)
+ [Ejemplo de repositorio de Terraform](https://github.com/aws-samples/sample-aws-devops-agent-terraform)
+ [Guía de incorporación de CLI](https://docs.aws.amazon.com/devopsagent/latest/userguide/getting-started-with-aws-devops-agent-cli-onboarding-guide.html)