Configuración de agentes de Schematics para utilizar un registro privado
Los agentes dan soporte al uso de proveedores de Terraform personalizados que proceden de un registro de Terraform privado con trabajos de Terraform Schematics. El soporte para utilizar proveedores personalizados no está disponible en el servicio
Schematics de multiarrendatario compartido. Solo está disponible con agentes. los agentes no incluyen un registro de proveedor local o privado. Además, los usuarios pueden configurar el registro en la red privada de usuarios a la que pueden
acceder los agentes.
De forma predeterminada, cuando se ejecutan trabajos Schematics, la CLI de Terraform descarga los plug-ins de proveedor de Terraform necesarios o los módulos de Terraform del registro de Terraform público a través de Internet o de la red pública. Cuando se despliega un agente en una red privada, las políticas de seguridad dictan que se debe utilizar un proxy o sitio de duplicación para descargar y almacenar en memoria caché los plug-ins de proveedor. Además, es posible que desee alojar proveedores de Terraform desarrollados de forma personalizada en un registro privado para configurar recursos específicos del entorno.
Para estos casos de uso, Terraform permite la configuración de la descarga de proveedor desde registros de proveedor alternativos utilizando un bloque provider_installation
en la configuración de CLI de Terraform. Esto permite la
personalización del comportamiento de instalación predeterminado de Terraform. Revise la documentación de Terraform para la instalación del proveedor para obtener más detalles sobre la configuración de la descarga del proveedor.
En los agentes, se pueden utilizar las dos variables de entorno de espacio de trabajo siguientes para configurar la CLI de Terraform para hacer referencia a un repositorio alternativo y seleccionar proveedores por nombre y espacio de nombres de este registro.
- La instancia de
TF_NETWORK_MIRROR_URL
repositorio privado de Terraform, sitio web o Artifactory donde se alojan los proveedores de Terraform personalizados. - El nombre de
TF_NETWORK_MIRROR_PROVIDER_NAME
y el espacio de nombres del proveedor que se va a descargar de la ubicación personalizada. Consulte la documentación de Terraform para nombres de proveedores y espacios de nombres. Si no se especifica, el valor predeterminado es que todos los proveedores de todos los espacios de nombres"*/*"
se descarguen del registro privado.
Schematics genera automáticamente los siguientes parámetros de archivo de configuración de CLI de Terraform. Durante la ejecución del trabajo, Terraform puede utilizar el registro privado para unos pocos proveedores personalizados que tiene previsto utilizar o, de forma alternativa, para todos los proveedores.
provider_installation {
network_mirror {
url = "${TF_NETWORK_MIRROR_URL}"
include = ["${TF_NETWORK_MIRROR_PROVIDER_NAME}"]
}
direct {
exclude = ["TF_NETWORK_MIRROR_PROVIDER_NAME"]
}
}
Establecimiento de las credenciales para acceder a un registro de proveedor privado
Para registros privados, Terraform debe estar configurado con las señales de acceso para el registro de destino. En los agentes, estos se definen a nivel de espacio de trabajo utilizando la variable de entorno TF_TOKEN_
. Consulte
la documentación de Credenciales de variable de entorno de Terraform para obtener más detalles
sobre cómo configurar el paso de señales de credenciales.
Utilización de Artifactory como registro de proveedores
Artifactory proporciona una solución alternativa para el aprovisionamiento de proveedores de Terraform y da soporte completo al protocolo de registro de proveedores de Terraform. Da soporte a repositorios remotos, locales y virtuales que agregan los dos primeros tipos con un orden de búsqueda definido.
Los repositorios locales son repositorios locales físicos gestionados por el usuario. Los repositorios actúan como un registro privado de Terraform donde puede alojar proveedores desarrollados de forma personalizada y cargar y guardar manualmente proveedores públicos para eliminar la necesidad de acceso a la red pública. O limite los proveedores públicos puestos a disposición de los usuarios de Terraform.
Los repositorios remotos pueden servir como proxy de almacenamiento en memoria caché tanto para los registros privados de Terraform como para el registro público de Terraform. La implementación de un repositorio remoto todavía requiere acceso a Internet público. Aquí el acceso a la red pública es a través de Artifactory y no de Terraform. Normalmente, muchas organizaciones tienen instalaciones de Artifactory existentes, con la supervisión de red y las reglas de acceso de red en vigor para permitir un acceso público seguro a través de Artifactory.
Un repositorio de Terraform virtual, que combina un repositorio local con un repositorio de proxy remoto, permite alojar localmente proveedores personalizados junto con un acceso seguro a cualquier proveedor de Terraform público adicional.
Configuración de un registro de proveedores Artifactory local
Se puede utilizar un registro Artifactory local para alojar proveedores desarrollados de forma personalizada para su uso con agentes en una red privada de usuarios. El acceso Artifactory se configura utilizando las siguientes variables de entorno de espacio de trabajo para configurar la CLI de Terraform para que haga referencia al repositorio local y seleccione proveedores por nombre y espacio de nombres de este registro.
TF_TOKEN_name.artifactory.user.com:<artifactory_local_registry_token>
TF_NETWORK_MIRROR_PROVIDER_NAME:"user_namespace/provider_name"
TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/
Consulta la documentación y la interfaz de usuario Artifactory para obtener los valores del token de portador y la URL del registro local.
El ejemplo siguiente muestra que Schematics genera una configuración de CLI de Terraform.
provider_installation {
network_mirror {
url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-local/providers/"
include = ["user_namespace/provider_name"]
}
direct {
exclude = ["user_namespace/provider_name"]
}
}
Configuración de un registro de proveedores Artifactory remoto
Un registro de Artifactory remoto se puede utilizar para almacenar en memoria caché proveedores públicos para su uso por parte de Terraform, sin dar acceso a la red pública de Terraform. El acceso Artifactory se configura utilizando las siguientes variables de entorno de espacio de trabajo para configurar la CLI de Terraform de modo que haga referencia al repositorio remoto y recupere todos los proveedores utilizando este registro de proxy.
TF_TOKEN_name.artifactory.user.com:<artifactory_remote_registry_token>
TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/
Consulta la documentación y la interfaz de usuario Artifactory para obtener los valores del token de portador y la URL del registro remoto.
El ejemplo siguiente muestra que Schematics genera una configuración de CLI de Terraform.
provider_installation {
network_mirror {
url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/"
include = ["*/*"]
}
direct {
exclude = ["*/*"]
}
}
Configuración de un registro de proveedores Artifactory virtual
Se puede utilizar un registro Artifactory virtual para combinar el alojamiento de proveedores personalizados con el almacenamiento en memoria caché de proveedores públicos para que lo utilice Terraform. El acceso Artifactory se configura utilizando las siguientes variables de entorno de espacio de trabajo para configurar la CLI de Terraform para que haga referencia al repositorio virtual y recupere todos los proveedores utilizando este registro de proxy.
TF_TOKEN_name.artifactory.user.com:<artifactory_virtual_registry_token>
TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com>/artifactory/api/terraform/<user-terraform-virtual/providers/
Consulta la documentación y la interfaz de usuario Artifactory para obtener los valores del token de portador y la URL del registro virtual. El repositorio virtual debe configurarse como un agregado de un registro local y remoto tal como se describe en las secciones anteriores.
El ejemplo siguiente muestra que Schematics genera una configuración de CLI de Terraform.
provider_installation {
network_mirror {
url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/"
include = ["*/*"]
}
direct {
exclude = ["*/*"]
}
}