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.
Dr. Rahul Sharad Gaikwad y Tamilselvan P, Amazon Web Services
AWS Service Catalog admite el aprovisionamiento de autoservicio con gobernanza para sus configuraciones de Terraform. HashiCorp Si usa Terraform, puede usar Service Catalog como la única herramienta para organizar, gobernar y distribuir sus configuraciones de Terraform AWS a escala. Puede acceder a las funciones clave de Service Catalog, como la catalogación de plantillas de infraestructura como código (IaC) estandarizadas y previamente aprobadas, el control de acceso, el aprovisionamiento de recursos en la nube con el menor acceso privilegiado, el control de versiones, el uso compartido con miles de personas y el etiquetado. Cuentas de AWS Los usuarios finales, como ingenieros, administradores de bases de datos y científicos de datos, ven una lista de productos y versiones a los que tienen acceso y, a continuación, pueden implementarlos con una sola acción.
Este patrón le ayuda a implementar AWS recursos mediante el código de Terraform. Se accede al código de Terraform del GitHub repositorio a través de Service Catalog. Con este enfoque, puede integrar los productos con los flujos de trabajo de Terraform existentes. Los administradores pueden crear carteras de Service Catalog y añadirles AWS Launch Wizard productos mediante Terraform.
Los siguientes son beneficios de esta solución:
Gracias a la característica de reversión de Service Catalog, si se produce algún problema durante la implementación, puede revertir el producto a una versión anterior.
Puede identificar fácilmente las diferencias entre las versiones del producto. Esto le permite resolver los problemas durante la implementación.
Puede configurar una conexión al repositorio en Service Catalog, por ejemplo, a GitHub o GitLab. Puede realizar cambios en los productos directamente a través del repositorio.
Para obtener información sobre las ventajas generales de AWS Service Catalog, consulte Qué es Service Catalog.
Requisitos previos
Un activo Cuenta de AWS.
Un GitHub repositorio u otro que contenga archivos de configuración de Terraform en formato ZIP. BitBucket
AWS Serverless Application Model Interfaz de línea de comandos (AWS SAM CLI), instalada.
AWS Command Line Interface (AWS CLI), instalado y configurado.
Go instalado.
Versión 3.9 de Python, instalada. AWS SAM La CLI requiere esta versión de Python.
Permisos para escribir y ejecutar AWS Lambda funciones y permisos para acceder a los productos y carteras de Service Catalog y administrarlos.
En el diagrama, se muestra el siguiente flujo de trabajo:
Cuando la configuración de Terraform está lista, un desarrollador crea un archivo .zip que contiene todo el código de Terraform. El desarrollador carga el archivo .zip en el repositorio de código que está conectado a Service Catalog.
Un administrador asocia el producto de Terraform a una cartera de Service Catalog. El administrador también crea una restricción de lanzamiento que permite a los usuarios finales aprovisionar el producto.
En Service Catalog, los usuarios finales lanzan AWS recursos mediante la configuración de Terraform. Pueden elegir qué versión de producto se debe implementar.
Servicios de AWS
AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.
AWS Service Catalogle ayuda a gestionar de forma centralizada los catálogos de servicios de TI aprobados. AWS Los usuarios finales pueden implementar rápidamente solo los servicios de TI aprobados que necesitan, de acuerdo con las limitaciones establecidas por su organización.
Otros servicios
Repositorio de código
Si necesita ejemplos de configuraciones de Terraform que pueda implementar a través de Service Catalog, puede usar las configuraciones del repositorio GitHub Amazon Macie Organization Setup Using Terraform. No es necesario usar los ejemplos de código de este repositorio.
En lugar de proporcionar los valores de las variables en el archivo de configuración de Terraform (terraform.tfvars), configure los valores de las variables al lanzar el producto a través de Service Catalog.
Conceda acceso a la cartera solo a usuarios o administradores específicos.
Cumpla con el principio de privilegio mínimo y conceda los permisos mínimos necesarios para llevar a cabo una tarea. Para obtener más información, consulte las mejores prácticas de seguridad y concesión de privilegios mínimos en la documentación AWS Identity and Access Management (IAM).
| Tarea | Descripción | Habilidades requeridas |
|---|
(Opcional) Instale Docker. | Si desea ejecutar las AWS Lambda funciones en su entorno de desarrollo, instale Docker. Para ver instrucciones, consulte Install Docker Engine (Instalar motor de Docker) en la documentación de Docker. | DevOps ingeniero |
Instale el AWS Service Catalog motor para Terraform. | Ingrese el siguiente comando para clonar el repositorio AWS Service Catalog Engine for Terraform. git clone https://github.com/aws-samples/service-catalog-engine-for-terraform-os.git
Vaya al directorio raíz que contiene el repositorio clonado. Escriba el siguiente comando. Esto instala el motor. run ./bin/bash/deploy-tre.sh -r
El Región de AWS conjunto de su perfil predeterminado no se utiliza durante la instalación automática. En su lugar, tiene que proporcionar la región cuando use este comando.
| DevOps ingeniero, administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|
Cree una conexión con el GitHub repositorio. | Inicie sesión en la consola de Herramientas para desarrolladores y Consola de administración de AWS, a continuación, ábrala. Para acceder a la consola de herramientas para desarrolladores, elija un servicio como AWS CodePipeline o AWS CodeDeploy. En el panel de navegación izquierdo, elija Configuración y, a continuación, Conexiones. Elija Crear conexión. Seleccione el repositorio en el que guarde el código fuente de Terraform. Por ejemplo, puedes elegir Bitbucket o GitHub Enterprise Server. GitHub Ingrese un nombre paralaconexión y, a continuación, elija Conectar. Cuando se le solicite, autentique el repositorio. Una vez completada la autenticación, se crea la conexión y el estado cambia a activo.
| Administrador de AWS |
| Tarea | Descripción | Habilidades requeridas |
|---|
Cree el producto de Service Catalog. | Abra la consola de AWS Service Catalog. Vaya a la sección Administración y, a continuación, seleccione Lista de productos. Seleccione Crear producto. En la página Crear producto, en la sección Detalles del producto, seleccione el tipo de producto Externo. Service Catalog utiliza este tipo de producto para respaldar los productos de Terraform Community Edition. Ingrese un nombre y un propietario para el producto de Service Catalog. Selecciona Especificar tu repositorio de código mediante un CodeStar proveedor. Ingrese la siguiente información del repositorio: Conéctese a su proveedor mediante AWS CodeConnections: seleccione la conexión que creó anteriormente. Repositorio: seleccione el repositorio. Rama: seleccione la rama. Ruta del archivo de plantilla: elija la ruta donde se almacena el archivo de plantilla de código. El nombre debe terminar con tar.gz.
En Nombre y descripción de la versión, proporcione información sobre la versión del producto. Seleccione Crear producto.
| Administrador de AWS |
Cree una cartera. | Abra la consola de AWS Service Catalog. Vaya a la sección Administración y, a continuación, seleccione Carteras. Seleccione Crear cartera. Escriba los siguientes valores: Portfolio name: Sample terraform Descripción de la cartera: Sample portfolio for Terraform configurations Propietario: su información de contacto, como una dirección de correo electrónico.
Seleccione Crear.
| Administrador de AWS |
Agregue el producto de Terraform a la cartera. | Abra la consola de AWS Service Catalog. Vaya a la sección Administración y, a continuación, seleccione Lista de productos. Seleccione el producto de Terraform que ha creado previamente. Seleccione Acciones y, a continuación, elija Agregar un producto a la cartera. Seleccione la cartera Sample terraform. Seleccione Añadir producto a la cartera.
| Administrador de AWS |
Cree la política de acceso. | Abra la consola de AWS Identity and Access Management (IAM). En el panel de navegación, seleccione Políticas. En el panel de contenido, elija Create policy (Crear política). Elija la opción JSON. Ingrese la política de JSON de ejemplo en Política de acceso, en la sección Información adicional de este patrón. Elija Siguiente. En la página Revisar y crear, en el recuadro Nombre de la política, ingrese TerraformResourceCreationAndArtifactAccessPolicy. Elija Crear política.
| Administrador de AWS |
Cree una política de confianza personalizada. | Abra la consola de IAM. Seleccione Roles en el panel de navegación. Elija Crear rol. En Tipo de entidad de confianza, seleccione Política de confianza personalizada. En el editor de políticas de JSON, ingrese la política de JSON de ejemplo en Política de confianza, en la sección Información adicional de este patrón. Elija Siguiente. En Políticas de permisos, elija la TerraformResourceCreationAndArtifactAccessPolicy que haya creado anteriormente. Elija Siguiente. En Detalles del rol, ingrese SCLaunch-product en el recuadro Nombre del rol. El nombre del rol debe empezar por SCLaunch. Seleccione Crear rol.
| Administrador de AWS |
Agregue una restricción de lanzamiento al producto de Service Catalog. | Inicie sesión Consola de administración de AWS como usuario con permisos administrativos. Abra la consola de AWS Service Catalog. En el menú de navegación, seleccione Carteras. Elija la cartera que creó previamente. En la página Detalles de la cartera, elija la pestaña Restricciones y, a continuación, elija Crear restricción. En Producto, seleccione el producto de Terraform que ha creado anteriormente. En Restricción de lanzamiento, en Método, elija Escriba el nombre del rol. En el recuadro Nombre del rol, ingrese SCLaunch-product. Seleccione Crear.
| Administrador de AWS |
Conceda acceso al producto. | Abra la consola de AWS Service Catalog. En el menú de navegación, seleccione Carteras. Elija la cartera que creó previamente. Seleccione la pestaña Acceso y, a continuación, seleccione Conceder acceso. Elija la pestaña Roles y, a continuación, seleccione el rol que deba tener acceso para implementar este producto. Elija Grant access (Conceder acceso).
| Administrador de AWS |
Lance el producto. | Inicie sesión Consola de administración de AWS como usuario con permisos para implementar el producto Service Catalog. Abra la consola de AWS Service Catalog. En el panel de navegación, elija Productos. Elija el producto que creó anteriormente y, a continuación, elija Lanzar producto. Ingrese un nombre de producto y defina los parámetros necesarios. Seleccione Lanzar producto.
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|
Valide la implementación. | Hay dos máquinas de AWS Step Functions estado para el flujo de trabajo de aprovisionamiento de Service Catalog: ManageProvisionedProductStateMachine: Service Catalog invoca esta máquina de estados al aprovisionar un nuevo producto de Terraform y al actualizar un producto aprovisionado por Terraform existente.
TerminateProvisionedProductStateMachine: Service Catalog invoca esta máquina de estados al finalizar un producto aprovisionado por Terraform existente.
Debe comprobar los registros de la máquina de estados ManageProvisionedProductStateMachine para confirmar que el producto se ha aprovisionado. Inicie sesión en la AWS Step Functions consola y Consola de administración de AWS, a continuación, ábrala. En el panel de navegación izquierdo, elija Máquinas de estado. Elija ManageProvisionedProductStateMachine. En la lista Ejecuciones, ingrese el ID del producto aprovisionado para localizar la ejecución. Los nombres de los buckets del backend del archivo de estados comienzan por sc-terraform-engine-state-. Valide que se hayan creado todos los recursos necesarios en la cuenta.
| DevOps ingeniero |
| Tarea | Descripción | Habilidades requeridas |
|---|
Elimine los productos aprovisionados. | Inicie sesión Consola de administración de AWS como usuario con permisos para implementar el producto Service Catalog. Abra la consola de AWS Service Catalog. Elija Productos aprovisionados en el menú de navegación izquierdo. Seleccione el producto que ha creado. En la lista Acciones, seleccione Terminar. En el recuadro de texto de confirmación, ingrese terminate y, a continuación, seleccione Terminar el producto aprovisionado. Repita estos pasos para terminar todos los productos aprovisionados.
| DevOps ingeniero |
Retire el AWS Service Catalog motor de Terraform. | Inicie sesión Consola de administración de AWS como usuario con permisos administrativos. Abra la consola de Amazon Simple Storage Service (Amazon S3). En el panel de navegación, elija Buckets. Seleccione el bucket sc-terraform-engine-logging-XXXX. Elija Vaciar. Repita los pasos del 4 al 5 para los siguientes buckets: Abre la AWS CloudFormation consola y, a continuación, comprueba que estás en la dirección correcta Región de AWS. En el panel de navegación izquierdo, seleccione Pilas. Seleccione SAM-TRE y, a continuación, elija Eliminar. Espere a que se elimine la pila. Seleccione Bootstrap-TRE y, a continuación, elija Eliminar. Espere a que se elimine la pila.
| Administrador de AWS |
AWS documentación
Documentación de Terraform
Política de acceso
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/servicecatalog:provisioning": "true"
}
}
},
{
"Action": [
"s3:CreateBucket*",
"s3:DeleteBucket*",
"s3:Get*",
"s3:List*",
"s3:PutBucketTagging"
],
"Resource": "arn:aws:s3:::*",
"Effect": "Allow"
},
{
"Action": [
"resource-groups:CreateGroup",
"resource-groups:ListGroupResources",
"resource-groups:DeleteGroup",
"resource-groups:Tag"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"tag:GetResources",
"tag:GetTagKeys",
"tag:GetTagValues",
"tag:TagResources",
"tag:UntagResources"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
Política de confianza
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GivePermissionsToServiceCatalog",
"Effect": "Allow",
"Principal": {
"Service": "servicecatalog.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account_id:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringLike": {
"aws:PrincipalArn": [
"arn:aws:iam::accounti_id:role/TerraformEngine/TerraformExecutionRole*",
"arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogExternalParameterParserRole*",
"arn:aws:iam::accounti_id:role/TerraformEngine/ServiceCatalogTerraformOSParameterParserRole*"
]
}
}
}
]
}