Estado remoto y acceso entre espacios de trabajo

IBM Cloud® proporciona una gestión de estado remoto incorporada para Terraform. Los archivos de estado de Terraform se conservan automáticamente entre ejecuciones y son accesibles mediante mandatos y operaciones de IBM Cloud®. La gestión de estado remoto de IBM Cloud® habilita el trabajo en equipo y las operaciones compartidas del espacio de trabajo, con bloqueo de estado incorporado que impide operaciones simultáneas en el mismo archivo de estado.

La gestión de estado remoto del espacio de trabajo incorporado da soporte a una serie de Schematics casos de uso:

  • La compartición de información de recursos entre espacios de trabajo. Esto permite que la infraestructura se divida en componentes más pequeños, con información de recursos de sólo lectura que se pasa entre entornos utilizando orígenes de datos de estado remoto de Schematics. Los entornos discretos enlazados por orígenes de datos permiten delegar la responsabilidad de distintos elementos de la infraestructura en distintos equipos con información compartida entre espacios de trabajo como recursos de sólo lectura.
  • Integración de operaciones de espacio de trabajo y acción con Acciones. La información de recursos de espacio de trabajo se puede pasar directamente como un inventario dinámico Ansible sin necesidad de crear manualmente el inventario de host o utilizar scripts de inventario.

Acceso al estado y salidas del espacio de trabajo

Puede acceder a información sobre los recursos que gestiona en un espacio de trabajo desde otros espacios de trabajo de la cuenta utilizando los orígenes de datos ibm_schematics_output y ibm_schematics_state.

IBM Cloud® utiliza el soporte de estado de Terraform incorporado de local y no utiliza el soporte de programa de fondo de Terraform. No es necesaria ninguna configuración adicional en Terraform configs para habilitar la gestión de estado remoto de IBM Cloud®. Schematics no utiliza el origen de datos remote_state de Terraform, en su lugar, utiliza el origen de datos ibm_schematics_output para acceder a la información.

¿En qué se diferencia la fuente de datos ibm_schematics_state de la fuente de datos remote_state ?
Cuando utilice la fuente de datos remote_state, deberá configurar un backend para conectarse a sus espacios de trabajo. Con la fuente de datos ibm_schematics_state, tendrá acceso automático al backend integrado de Schematics y podrá acceder directamente a la información del espacio de trabajo.

¿Qué debo hacer para acceder a la información sobre recursos en otros espacios de trabajo?
De forma similar al origen de datos remote_state, solo puede acceder a la información que haya configurado como valores de salida en la plantilla de Terraform. Por ejemplo, pongamos que tiene un espacio de trabajo que ha utilizado para suministrar una VPC. Para acceder al ID de la VPC, debe definir el ID como una variable de salida en el archivo de configuración de Terraform.

Para utilizar el origen de datos ibm_schematics_output:

  1. Siga el ejemplo del tutorial de introducción para crear un espacio de trabajo Schematics y aprovisionar un servidor virtual en una VPC. Al seguir las instrucciones, revise las variables de salida que están definidas al final del archivo de configuración de Terraform vpc.tf.

    Si ya ha utilizado un archivo de configuración Terraform diferente en uno de sus espacios de trabajo, puede utilizar este espacio de trabajo para el ejercicio. Asegúrese de añadir valores de salida a su archivo de configuración como se describe en este ejemplo para posteriormente poder acceder a la información del espacio de trabajo.

    output sshcommand {
        value = "ssh root@ibm_is_floating_ip.fip1.address"
    }
    
    output vpc_id {
    value = ibm_is_vpc.vpc.id
    }
    

    En este ejemplo se definen dos valores de salida, sshcommand para acceder a la instancia de servidor virtual en la VPC y vpc_id.

  2. Recupere el ID del espacio de trabajo de la VPC que ha creado.

    A través de la consola:

    A través de la CLI:

    • Liste los espacios de trabajo disponibles en su cuenta.
      ibmcloud schematics workspace list
      
    • Busque el ID del espacio de trabajo en la columna ID de la salida de la línea de mandatos.

    El uso del comando Schematics ibmcloud terraform muestra advertencia y mensaje de deprecación como Alias 'terraform' son deprecated. Utiliza 'schematics' o 'sch' en tus comandos.

  3. Cree otro archivo de configuración de Terraform que se denomina remotestate.tf para acceder a los parámetros de salida del archivo vpc.tf utilizando el origen de datos ibm_schematics_output. Para permitir el control de versiones de este archivo, asegúrese de almacenar este archivo de configuración en un repositorio GitHub o GitLab.

    data "ibm_schematics_workspace" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
    }
    
    data "ibm_schematics_output" "vpc" {
        workspace_id = "<schematics_workspace_ID>"
        template_id = data.ibm_schematics_workspace.vpc.runtime_data.0.id
    }
    
    output "output_vars" {
        value = data.ibm_schematics_output.vpc.output_values
    }
    
    output "ssh_command" {
        value = data.ibm_schematics_output.vpc.output_values.sshcommand
    }
    
    output "vpc_id" {
        value = data.ibm_schematics_output.vpc.output_values.vpc_id
    }
    
    Componentes del archivo de configuración
    Icono de idea Descripción de los componentes del archivo de configuración
    data.ibm_schematics_workspace.workspace_id Especifique el ID del espacio de trabajo de VPC donde ha definido los valores de salida a los que desea acceder. Necesita este origen de datos para recuperar el ID de plantilla del espacio de trabajo en el origen de datos ibm_schematics_output.
    data.ibm_schematics_output.workspace_id Especifique el ID del espacio de trabajo de VPC donde ha definido los valores de salida a los que desea acceder.
    data.ibm_schematics_output.template_id Especifique data.ibm_schematics_workspace.vpc.runtime_data.0.id para hacer referencia a la plantilla de Terraform del espacio de trabajo.
    output.output_vars.value Utilice la sintaxis de interpolación de Terraform para acceder a todos los valores de salida que ha definido en el archivo vpc.tf utilizando el parámetro de salida output_values del origen de datos ibm_schematics_output. El parámetro de salida output_values devuelve todos los valores de salida como una lista.
    output.sshcomand.value y output.vpc_id.value Puede acceder a un valor específico de la lista output_values añadiendo el ID del valor de salida al origen de datos ibm_schematics_output. Por ejemplo, para acceder a vpc_id, simplemente utilice data.ibm_schematics_output.vpc.output_values.vpc_id.
  4. Cree un espacio de trabajo que apunte al archivo remotestate.tf en el repositorio de GitHub o GitLab. Si, en su lugar, desea actualizar un archivo de archivado de cinta ( .tar) desde la máquina local, utilice el mandato ibmcloud schematics workspace upload.

  5. Ejecute el código de Terraform en Schematics. Cuando revise los registros, puede ver los valores de salida desde el espacio de trabajo de VPC en la sección Salida.

    Salida de ejemplo

    ...
    2020/02/21 19:49:30 Terraform show | Outputs:
    2020/02/21 19:49:30 Terraform show |
    2020/02/21 19:49:30 Terraform show | Output_vars = {
    2020/02/21 19:49:30 Terraform show |   sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show |   vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a
    2020/02/21 19:49:30 Terraform show | }
    2020/02/21 19:49:30 Terraform show | sshcommand = ssh root@169.61.225.111
    2020/02/21 19:49:30 Terraform show | vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a