Terraform
Las respuestas a las preguntas más frecuentes sobre los espacios de trabajo de IBM Cloud Schematics se clasifican en la siguiente sección.
¿IBM Cloud Schematics ofrece soporte para múltiples versiones de proveedor de Terraform?
Sí; ahora, IBM Cloud Schematics admite varias versiones de proveedor de Terraform. Debe añadir el bloque de proveedor Terraform con la versión del proveedor. De forma predeterminada, el proveedor ejecuta la versión actual 1.21.0
y admite las cuatro versiones anteriores, como 1.20.1
, 1.20.0
, 1.19.0
y 1.18.0
.
Ejemplo de una configuración de varios proveedores:
terraform{
required_providers{
ibm = ">= 1.21.0" // Error !! version unavailable.
ibm = ">= 1.20.0" // Execute against latest version.
ibm = "== 1.20.1" // Executes version v1.20.1.
}
}
Actualmente, está disponible la versión 1.21.0. Para obtener más información, consulte versión de proveedor.
¿Cómo actualizo la versión de Terraform?
IBM Cloud Schematics deja en desuso la versión anterior de Terraform. Para obtener más información, consulte Obsolescencia de la versión anterior del proceso Terraform en IBM Cloud Schematics.
IBM Cloud Schematics deja en desuso la creación del espacio de trabajo utilizando la plantilla IBM Cloud Provider Plug-in for Terraform v1.2, v1.3 de la semana 2nd de abril de 2024.
Puede seguir los temas para actualizar de una versión de Terraform a otra
¿Cómo puedo pull latest
codificar desde un repositorio Git utilizando la línea de mandatos?
La actualización de los espacios de trabajo IBM Cloud® Schematics a través de la línea de mandatos necesita el campo necesario name
.
Es necesario ejecutar el mandato ibmcloud schematics workspace update --id <workspace-id> --file <updatefile.json>
. El ejemplo updatefile.json
contiene el campo de nombre con el valor.
{
"name":"testworkspace"
}
¿Qué herramientas y programas de utilidad se utilizan en el tiempo de ejecución?
Schematics runtime se construye utilizando Universal Base Image ( UBI-8 ) y el runtime utilities/softwares
que viene con UBI-8 están disponibles para disposiciones de Terraform y acciones de Ansible. Para obtener más información,
consulte la lista de herramientas y programas de utilidad que se utilizan en el tiempo de ejecución de Schematics.
¿Cómo puedo solucionar problemas de señal de Git al crear espacios de trabajo utilizando la CLI?
El uso del mandato schematics workspace new --file schematic-file.json -g xxxx
genera una Access token creation failed status
, ya que la señal no se especifica en el mandato.
Debe comprobar la autenticación antes de realizar la operación a través de la línea de mandatos. A continuación, cree un espacio de trabajo utilizando el mandato schematics workspace new --file schematic-file.json --github-token xxxx
.
Para obtener más información, consulte el mandato ibmcloud schematics workspace new
.
¿Cómo solucionar problemas de autorización al crear o actualizar un espacio de trabajo?
Verá problemas de autorización cuando el acceso de rol y permiso sea insuficiente al actualizar el espacio de trabajo. Para obtener más información, consulte Gestión del acceso de los usuarios.
¿Cómo utilizar los servicios Schematics con un ID de prueba?
Los ID de prueba se consideran una prueba válida ( IBM ID
) para configurar el catálogo global o las llamadas API relacionadas con el controlador de recursos. Si no puede acceder, Póngase en contacto con el servicio de soporte.
Cómo limitar la clonación de carpetas de repositorio Git
De forma predeterminada, al crear un espacio de trabajo a través de la interfaz de usuario, Schematics es el valor predeterminado para clonar el repositorio Git completo y todos los subdirectorios. Deseleccione el distintivo Use full repository
para limitar las carpetas clonadas y mejorar el rendimiento de la descarga.
Schematics ha introducido un distintivo compact
en la API create workspace y update workspace para descargar
sub directories
en repositorios Git. Si el indicador compacto está establecido en true, se descarga y guarda un sub directories
o de forma recursiva; de lo contrario, puede continuar descargando y
guardando el repositorio completo en la creación del espacio de trabajo.
Puede obtener la respuesta iniciando get workspace API
para ver el valor de la bandera compacta. La bandera compacta solo se puede dar si se pasa el campo " template_repo.url
". En la actualización, si este
campo no se pasa, pero se pasa el URL, la descarga es compacta.
El uso compacto en la carga útil es .template_data[0].compact = true/false
. Para obtener más información, consulte Descarga compacta para espacios de trabajo de Schematics.
¿Cómo suprimir un espacio de trabajo cuando falla la supresión?
Si se suprime un recurso fuera de Schematics, una operación de supresión de espacio de trabajo lo muestra como resource no longer exists
.
Debe eliminar el espacio de trabajo y NO destruir los recursos como si el recurso no estuviera disponible. Para obtener más información, consulte Supresión de un espacio de trabajo.
¿Cuál es la mejor forma de desplegar un diagrama de Helm utilizando credenciales o secretos?
La mejor manera es utilizar el catálogo de IBM Cloud para gestionar los diagramas de Helm donde dentro del catálogo puede conservar las credenciales y marcarlas como protegidas. Para obtener más información, consulte Lista de catálogos relacionados con Helm.
¿Cómo abordar las anomalías de trabajo causadas por actividades de mantenimiento?
El impacto inesperado debido a los resultados de mantenimiento en el error de las actividades en ejecución en el espacio de trabajo de Schematics. Dicho espacio de trabajo y la actividad en curso están marcados como Failed
. A continuación,
el usuario puede volver a ejecutar la actividad. Para obtener más información, consulte diagrama de estado del espacio de trabajo.
¿Cómo establece la etiqueta de release Git ?
2021/11/08 12:34:06 ----- New Action -----
2021/11/08 12:34:06 Request: RepoURL=https://github.ibm.com/wh-hp-insights/hi-cloud-automation, workspaceSource=Schematics, Branch=2021.10, Release=, Folder=terraform-v2/workspace-hi-qa-automation-app
2021/11/08 12:34:06 Related Activity: action=UPDATE_WORKSPACE,processedBy=sandbox-6bcf8bffcd-rxbww_2478
2021/11/08 12:34:06 Getting download command
2021/11/08 12:34:11 Fatal, could not download repo, Failed to clone git repository, couldn't find remote ref "refs/heads/2021.10" (most likely invalid branch name is passed)
2021/11/08 12:34:12 Problems found with the Repository. Please Rectify and Retry
Si el parámetro Release
está vacío y Branch
se ha establecido con el código de release.
Schematics no admite la etiqueta release
, ya que es difícil identificar si se trata de una etiqueta de lanzamiento o de una rama del repositorio Git URL. Debe establecer el código release
a través de la API de Schematics.
¿Por qué obtengo un error 403 en lugar de un error 404 cuando se utiliza un ID de espacio de trabajo no válido?
curl -X GET https://schematics.cloud.ibm.com/v1/workspaces/badWOrkspaceId -H "Authorization: $IAM_TOKEN"
{"requestid":"3a3cbffe-e23a-4ccf-b764-042f7379c084","timestamp":"2021-11-11T17:00:07.169953698Z","messageid":"M1078","message":"Error while validating the location in the account. Verify you have permission to the location in the global catalog settings.","statuscode":403}
Sí, hay un cambio en la API que comprueba primero la ubicación y, si no obtiene la ubicación adecuada para el espacio de trabajo, devuelve un error 403 en lugar de un error 404.
¿Cómo puedo habilitar el registro de depuración de Terraform?
Puede establecer la variable de entorno para establecer el rastreo TF_LOG=debug
e depuración de registro de Terraform en la carga útil, tal como se muestra en la carga útil de ejemplo. Para obtener más información, consulte Actualización de espacios de trabajo deSchematics.
{
"name": "sample",
"type": [
"terraform_v1.4"
],
"description": "terraform workspace",
"tags": [
],
"template_repo": {
"url": "<your repo>"
},
"template_data": [
{
"folder": ".",
"type": "terraform_v1.4",
"env_values":[
{
"TF_LOG":"debug"
}
]
}
]
}
¿Cómo puedo importar recursos de nube en un espacio de trabajo?
Utilice el mandato ibmcloud schematics workspace import --options value, -o value : Optional
y la sintaxis de ejemplo para importar desde la línea de mandatos. Para obtener más información, consulte Importación del espacio de trabajoSchematics.
ibmcloud schematics workspaces import --id <workspace_id> --address <my terraform resource address> --resourceID <the CRN of the item to import> --options "-var IC_API_KEY=XXXXXXXX"
or
ibmcloud schematics workspaces import --id <workspace_id> --address <my terraform resource address> --resourceID <the CRN of the item to import> --options "--var-file=<path-to-var-file>"
¿Cómo puedo descargar archivos de trabajo?
Sí, puede descargar los archivos de trabajo de Schematics. Para obtener más información, consulte Descargar archivos de trabajo de Schematics.
¿Cómo puedo resolver anomalías de tiempo de espera de recursos de Terraform?
Es necesario actualizar o aumentar el valor de tiempo de espera en 5 minutos o 10 minutos dependiendo del servicio tal como se muestra en el bloque de terraform. O bien, debe enviar null value
para utilizar los valores predeterminados.
variable "create_timeout"
{
type = String
description = "Timeout duration to create LogDNA instance in Schematics."
default = "15m"
}
¿Cómo se establece la variable de entorno TF_CLI_ARGS?
No, no se puede establecer un valor de variable de entorno directamente en la consola de espacios de trabajo de Schematics. En su lugar, puede utilizar un CURL utilizando la APISchematics o la línea de mandatosSchematics.
"env_values": [
{
"TF_LOG": "debug"
},
]
¿Puedo utilizar repositorios Git privados para módulos?
Sí, Schematics da soporte a la descarga de módulos de Terraform desde repositorios privados. Para obtener más información, consulte Soporte para descargar módulos del host remoto privado.
¿Puedo editar todas las variables de un espacio de trabajo?
Solo puede editar una variable a la vez desde la consola de Schematics. Desde la línea de mandatos puede editar todas las variables del espacio de trabajo en formato JSON utilizando el mandato ibmcloud schematics workspace update
.
¿Cómo importar claves al importar recursos de KMS?
Sí, puede establecer o gestionar las claves utilizando ibm_kms_key
tal como se muestra en el bloque de código de ejemplo. Para obtener más información, consulte ibm_kms_key.
resource "ibm_resource_instance" "kms_instance" {
name = "instance-name"
service = "kms"
plan = "tiered-pricing"
location = "us-south"
}
resource "ibm_kms_key" "test" {
instance_id = ibm_resource_instance.kms_instance.guid
key_name = "key-name"
standard_key = false
force_delete =true
}
resource "ibm_cos_bucket" "smart-us-south" {
bucket_name = "atest-bucket"
resource_instance_id = "cos-instance-id"
region_location = "us-south"
storage_class = "smart"
key_protect = ibm_kms_key.test.id
}
¿Puede habilitar TRACE para ayudar a DEBUG la API de Schematics mientras se ejecuta el comando de lista de espacios de trabajo?
No, actualmente Schematics no dan soporte a esta característica al ejecutar el mandato IBMCLOUD_TRACE=true ibmcloud schematics workspace list
.
¿Cómo resolver errores al listar espacios de trabajo?
Al listar o recuperar espacios de trabajo se puede recibir el siguiente error. Error while retrieving Schematics Instance for the given account
.
Error:
Bad status code [400] returned when getting workspace from Schematics: {"requestid":"fe5f0d6d-1d43-4643-a689-35d090463ce8","timestamp":"2022-01-25T20:23:54.727208017Z","messageid":"M1070","message":"Error while retrieving Schematics Instance for the given account.","statuscode":400}
Es posible que no tengas acceso suficiente a los espacios de trabajo de la ubicación especificada para obtener la instancia. Comprueba el permiso que se proporciona para tu cuenta y las ubicaciones donde debe crearse tu instancia. Para obtener más información, consulte ¿Dónde se almacena una información?
¿Cómo puedo utilizar los repositorios (IBM) GitLab ?
Sí, puede acceder al repositorio privado ( IBM ) GitLab utilizando Schematics con los privilegios.
-
Si no se necesita el token de acceso al repositorio privado ( IBM ) GitLab
git.cloud.ibm.com
, ya que se utiliza el token IAM. -
Si se necesita el acceso público a GitLab
gitlab.com
,read_repository
yread_api
para validar el nombre de rama para el repositorio privado.
Puede utilizar el bloque de código Terraform de muestra para configurar los detalles del repositorio GitLab.
"template_repo": {
"url": "<gitlab_source_repo_url>",
"branch": ""
},
¿Se pueden gestionar grupos de acceso de IAM en Schematics?
Sí, Schematics da soporte al conjunto de recursos de proveedor IBM Cloud completo. Para obtener más información sobre ¿Cómo funciona el grupo de acceso de IAM? consulte ibm_iam_access_group.
¿Cómo puedo trabajar con recursos en otra cuenta?
Sí, puede crear espacios de trabajo Schematics en la cuenta de origen IBM Cloud. A continuación, ejecute Terraform proporcionando recursos en la cuenta de destino para suministrar, a través de CLI, y llamadas de API utilizando el ID de servicio de cuenta de destino con la autenticación, la autorización de cuentas cruzadas adecuada o la clave de API. Para obtener más información, consulte Gestión de recursos en otra cuenta.
¿Qué indica la ubicación de North America
?
Norteamérica siempre indica la ubicación us-south
y us-east
durante la creación del espacio de trabajo Schematics. Para obtener más información, consulte ¿Dónde puedo crear espacios de trabajo de Schematics ? y ¿Dónde se almacena mi información?
¿Qué puertos y direcciones IP utiliza Schematics?
Schematics se comunica con los puertos que se especifican en los recursos relacionados. Por ejemplo, puertos relacionados con VPC, consulte VPC: Apertura de puertos y direcciones IP requeridos en otros cortafuegos de red.
¿Cuándo utilizo el panel de control de recursos individuales ( Schematics ) en lugar de los paneles de control de recursos individuales?
Con IBM Cloud Schematics, puede ejecutar el código de su infraestructura en IBM Cloud para gestionar el ciclo de vida de los recursos en la nube. Tras suministrar un recurso, puede utilizar el panel de control del recurso individual para trabajar
e interactuar con el recurso. Por ejemplo, si aprovisiona una instancia de servidor virtual en una nube privada virtual (VPC) con IBM Cloud Schematics. Puede utilizar la consola de VPC, la API o la línea de mandatos para stop
,
reboot
y power on
la instancia de servidor virtual. Sin embargo, para eliminar la instancia del servidor virtual, puede utilizar IBM Cloud Schematics.
¿Se renuevan los cambios en los repositorios Git en Schematics?
No, si cambia el código de su plantilla Terraform en GitHub,, estos cambios no estarán disponibles automáticamente cuando cree un plan de ejecución en IBM Cloud Schematics. Para extraer los cambios actuales de su repositorio de GitHub, asegúrese
de hacer clic en la opción Pull latest
de la página de settings
del espacio de trabajo antes de crear su plan de ejecución.
¿Dónde está almacenado el archivo de estado de Terraform?
Después de aprovisionar correctamente los recursos de la nube ejecutando una acción de aplicación de Terraform ( Schematics ), el estado de los recursos se almacena en un archivo de estado de Terraform (terraform.tfstate
). Schematics
utiliza este archivo de estado como la única fuente de verdad para determinar qué recursos existen en su cuenta. El archivo de estado asigna los recursos que especificó en su archivo de configuración de Terraform al recurso de nube que aprovisionó.
¿Se eliminan los recursos al suprimir el espacio de trabajo?
Al eliminar un espacio de trabajo de IBM Cloud Schematics no se eliminan ninguno de sus recursos en la nube. Si eliminas el espacio de trabajo antes de eliminar tus recursos, debes eliminar manualmente todos tus recursos en la nube desde el panel de recursos individual.
La eliminación de recursos en la nube no se puede deshacer. Asegúrese de haber realizado una copia de seguridad de todos los datos antes de eliminar un recurso. Los recursos se eliminan (suprimen) si elimina la definición de recurso o comenta el recurso en el archivo de configuración de Terraform. Revise el archivo de registro del plan para verificar que todos los recursos están incluidos en la eliminación.
¿Puedo establecer variables de entorno para espacios de trabajo?
Puede establecer env values
para un espacio de trabajo utilizando la CLI y la API. Para obtener más información, consulte uso de env_values
.
Carga útil de ejemplo
{
"name": "newName",
"template_data": [
{
"type": "<same_as_before>",
"env_values": [
{
"env_key1": "dummy_text"
},
{
"env_key2": "dummy_text"
}
],
"env_values_metadata": [
{
"name": "env_values_1",
"hidden": false,
"secure": false
},
{
"name": "env_values_2",
"hidden": false,
"secure": false
}
]
}
]
}
¿Se ejecuta automáticamente la detección de desviación?
No, la detección de deriva no es un método de detección automático en el sistema de gestión de calidad ( IBM Cloud Schematics ). Para obtener más información, consulte detección de desviación en Schematics.
¿Cómo puedo iniciar la detección de desviación?
Puede iniciar la detección de desviación utilizando la interfaz de usuario y la CLI. Para obtener más información, consulte detección de desviación en Schematics.
¿Dónde puedo ver el estado de un trabajo de detección de deriva?
Para verificar los resultados de una tarea de detección de desviación, debe comprobar el registro de la tarea de detección de desviación. El registro de trabajo proporciona los detalles de la detección de desviación como in progress
o completed
con el estado adecuado, como failure
o success
. Para obtener más información, consulte detección de desviación en Schematics.
¿Puedo interrupt
o terminate
ejecutar trabajos?
Sí, puede interrumpir, forzar la detención o terminar los recursos de suministro o un trabajo en ejecución en Schematics utilizando los tipos de trabajo. Para obtener más información, consulte detención de los tipos de trabajo.
¿Cómo puedo corregir un error de Incorrect Location Input
?
Error
{
"requestid": "3f59c342-cd2c-4703-aa10-9e8e7072a3ac",
"timestamp": "2022-06-28T20:02:58.529765308Z",
"messageid": "M1097",
"message": "Incorrect Location Input.",
"statuscode": 400
}
El punto final global Schematics toma el valor predeterminado del entorno us
. Por lo tanto, debe utilizar puntos finales regionales para apuntar su ubicación a una región
eu-de
.
¿Cómo puedo ver los recursos del espacio de trabajo?
Utilice el mandato de CLI de state list
para ver los mismos recursos que en la interfaz de usuario de IBM Cloud Schematics.
¿Cómo se corrige el error CreateworkspaceWithContext failed Bad request
?
Error
CreateWorkspaceWithContext failed Bad request. Check that the information you entered in the payload is complete and formatted correctly in JSON.
La URL global del punto final público o privado Schematics apunta por defecto a la región us
. Como método alternativo, puede establecer la clave de variable de entorno antes de los mandatos de Terraform.
```sh
export IBMCLOUD_SCHEMATICS_API_ENDPOINT="https://eu-de.schematics.cloud.ibm.com"
```
También puede añadir los puntos finales a un archivo JSON para categorizar el servicio de puntos finales como público o privado.
Declaración de proveedor de ejemplo
{
"IBMCLOUD_SCHEMATICS_API_ENDPOINT":{
"public":{
"eu-de":"https://eu-de.schematics.cloud.ibm.com"
}
}
}
Ejemplo de bloque de proveedor
provider "ibm" {
endpoints_file_path= "endpoints.json"
}
¿Los valores confidenciales están cifrados en el archivo de estado?
Schematics cifra el archivo de estado de Terraform cuando se almacena y también en tránsito utilizando TLS. Terraform no cifra por separado los valores confidenciales. Para obtener más información, consulte sensitive-data en el archivo de estado.
¿Por qué las variables de espacio de trabajo definidas mediante la CLI generan 400 errores?
El valor de almacén de variables de lista del espacio de trabajo Schematics debe ser siempre una serie HCL. El campo value
debe contener una serie de caracteres de escape para el almacén de variables para la lista, correlación o
variable compleja. Para obtener más información, consulte Proporcionar valores a Schematics para las variables declaradas.
¿Puede actualizar la versión de Terraform (TF_VERSION
) utilizando un archivo JSON
?
Actualmente, el método alternativo para actualizar el TF_VERSION
es pasar el TF_VERSION
al actualizar el almacén de variables. Schematics detecta automáticamente lo que se especifica en el bloque de versión de Terraform
en los archivos TF
. Es el comportamiento predeterminado.
Para obtener más información, consulte establecer y cambiar la versión.
¿Puede empezar con un nuevo archivo de estado de Terraform en cada ejecución de trabajo?
No, necesita crear un nuevo espacio de trabajo. Para obtener más información, consulte Ejecución de trabajos de espacio de trabajo.
¿Puedo importar un archivo de estado de Terraform existente?
Sí, puede utilizar la opción de distintivo --state
a través del ibmcloud schematics workspace new.
¿Cuál es la longitud variable máxima de caracteres?
La longitud máxima de caracteres que soportan las variables del espacio de trabajo Schematics es 1 MB.
¿Cuál es el archivo de estado máximo a importar?
El archivo terraform.tfstate
debe tener menos de 16 MB. Cuando crea un espacio de trabajo a partir de un archivo de estado de Terraform existente, el archivo terraform.tfstate
debe tener menos de 16 MB. El archivo de
estado de más de 16 MB no está soportado en Schematics. Verá un mensaje de error con 413 Request Entity Too Large error when creating a new workspace
.
¿Cómo se corrigen los errores de autenticación cuando se utiliza la API?
Debe crear la señal de acceso de IAM para la cuenta de IBM Cloud. Para obtener más información, consulte Obtener contraseña de señal. Puede ver el siguiente mensaje de error de muestra y la solución para el error de autenticación.
Error: Request fails with status code: 400, BXNIMO137E: For the original authentication, client id 'default' was passed, refresh the token, client id 'bx' is used.
La documentación de la API de IAM muestra cómo crear un default token
. Puede utilizar la refresh token
para obtener una
nueva señal de acceso de IAM si la señal ha caducado. Cuando el cliente predeterminado (no hay cabecera de autorización básica) como se describe en esta documentación. refresh_token
no se puede utilizar para recuperar un nuevo
token de acceso de IAM. Cuando la señal de acceso de IAM está a punto de caducar, utilice la clave de API para crear una nueva señal de acceso como se lista.
-
Debe crear
access_token
yrefresh_token
.export IBMCLOUD_API_KEY=<ibmcloud-api_key> curl -X POST "https://iam.cloud.ibm.com/identity/token" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=urn:ibm:params:oauth:grant-type:apikey&apikey=$IBMCLOUD_API_KEY" -u bx:bx
-
Exporte
access_token
yrefresh_token
obtenidos en el paso 1 como variables de entorno paraACCESS_TOKEN
yREFRESH_TOKEN
.export ACCESS_TOKEN=<access_token> export REFRESH_TOKEN=<refresh_token>
-
Crear espacio de trabajo
curl --request POST --url https://cloud.ibm.com/schematics/overview/v1/workspaces -H "Authorization: Bearer <access_token>" -d '{"name":"","type": ["terraform_v1.4"],"description": "","resource_group": "","tags": [],"template_repo": {"url": ""},"template_data": [{"folder": ".","type": "terraform_v1.4","variablestore": [{"name": "variable_name1","value": "variable_value1"},{"name": "variable_name2","value": "variable_value2"}]}]}'
¿Cómo recuperar el ID de espacio de trabajo Schematics como variable de entorno?
Puede recuperar el ID de espacio de trabajo Schematics como variable de entorno utilizando el código siguiente. Antes de ejecutar el plan o aplicar, las variables de entorno IC_SCHEMATICS_WORKSPACE_ID
, TF_VAR_IC_SCHEMATICS_WORKSPACE_ID
,
TF_VAR_IC_SCHEMATICS_WORKSPACE_RG_I
, IC_IAM_TOKEN
y IC_IAM_REFRESH_TOKEN
se establecen automáticamente en los scripts de Terraform.
data "external" "env" {
program = ["jq", "-n", "env"]
}
output "workspace_id" {
value = "${lookup(data.external.env.result, "TF_VAR_IC_SCHEMATICS_WORKSPACE_ID")}"
Si desea ver todas las variables de entorno disponibles en el espacio de trabajo, utilice el código output "${jsonencode(data.external.env.result)}"
.
¿Cómo rectifico los errores 401 de la llamada al broker al eliminar los objetos Schematics?
Después de la eliminación de objetos Schematics, si los servicios Schematics no consiguen eliminar los objetos de su cuenta. Es necesario elevar un Schematics ticket de soporte para eliminar del controlador de recursos.