IBM Cloud Docs
Acesso remoto de estado e de área de trabalho cruzado

Acesso remoto de estado e de área de trabalho cruzado

IBM Cloud® fornece construído em gerenciamento remoto-estado para Terraform. Os arquivos de estado Terraform são automaticamente preservados entre as execuções e são acessíveis por comandos e operações IBM Cloud®. IBM Cloud® o gerenciamento remoto de estados permite o trabalho de equipe e as operações compartilhadas da área de trabalho, com construção em bloqueio de estado impedindo operações simultâneas contra o mesmo arquivo de estado.

O construído na área de gerenciamento remoto de área de trabalho suporta um número de casos de uso Schematics

  • O compartilhamento de informações de recursos entre espaços de trabalho. Isso permite que sua infraestrutura seja quebrada em componentes menores, com informações de recurso de leitura passadas entre ambientes usando Schematics fontes de dados de estados remotos. Ambientes discretos vinculados por fontes de dados permitem que a responsabilidade por diferentes elementos de infraestrutura seja delegada a diferentes equipes com informações compartilhadas entre espaços de trabalho como recursos de leitura.
  • Integração de operações de área de trabalho e de ação com ações As informações de recurso da área de trabalho podem ser transmitidas diretamente como um Ansible inventário dinâmico sem a necessidade de criação manual de inventário do host ou de uso de scripts de inventário

Acessando estado da área de trabalho e saídas

Você pode acessar informações sobre os recursos que você gerencia em uma área de trabalho a partir de outros espaços de trabalho em sua conta usando as fontes de dados ibm_schematics_output e ibm_schematics_state.

O IBM Cloud® usa o suporte de estado do Terraform integrado local e não usa o suporte de backend do Terraform. Nenhuma configuração adicional é necessária em seu Terraform configs para ativar o gerenciamento de estado remoto do IBM Cloud®. Schematics não usa a origem de dados do Terraform remote_state, em vez disso, você usa a origem de dados ibm_schematics_output para acessar as informações.

Qual é a diferença entre a fonte de dados ibm_schematics_state e a fonte de dados remote_state ?
Ao usar a fonte de dados remote_state, você deve configurar um backend para se conectar aos seus espaços de trabalho. Com a fonte de dados ibm_schematics_state, você tem acesso automático ao backend incorporado do Schematics e pode acessar diretamente as informações do espaço de trabalho.

O que preciso fazer para acessar informações de recursos em outros espaços de trabalho?
Semelhante à origem de dados remote_state, é possível apenas acessar informações que você configurou como valores de saída em seu modelo Terraform. Por exemplo, digamos que você tenha uma área de trabalho que usou para provisionar uma VPC. Para acessar o ID da VPC, deve-se definir o ID como uma variável de saída em seu arquivo de configuração do Terraform.

Para usar a origem de dados ibm_schematics_output:

  1. Siga o exemplo no tutorial de introdução para criar um espaço de trabalho Schematics e provisionar um servidor virtual em uma VPC. À medida que você segue as instruções, revise as variáveis de saída que estão definidas no final do arquivo de configuração do Terraform, vpc.tf.

    Se você já tiver usado um arquivo de configuração do Terraform diferente em um dos espaços de trabalho, poderá usar esse espaço de trabalho para o exercício. Certifique-se de incluir valores de saída conforme descrito neste exemplo para o seu arquivo de configuração para que você possa acessar suas informações da área de trabalho posteriormente.

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

    Nesse exemplo, dois valores de saída são definidos, o sshcommand para acessar a instância de servidor virtual em sua VPC e o vpc_id.

  2. Recupere o ID da área de trabalho da VPC que você criou.

    Através do console:

    • A partir do painel da área de trabalho Ícone de link externo, selecione a área de trabalho da VPC.
    • Selecione a guia Configurações.
    • Localize o ID da área de trabalho na seção Resumo.

    Através da CLI:

    • Liste as áreas de trabalho disponíveis em sua conta.
      ibmcloud schematics workspace list
      
    • Localize o ID da área de trabalho na coluna ID de sua saída de linha de comandos.

    O uso do comando Schematics ibmcloud terraform exibe um aviso e uma mensagem de descontinuidade, pois Alias 'terraform' estão descontinuados. Use "schematics" ou "sch" em seus comandos.

  3. Crie outro arquivo de configuração do Terraform denominado remotestate.tf para acessar os parâmetros de saída do arquivo vpc.tf usando a origem de dados ibm_schematics_output. Para permitir o controle de versão desse arquivo, certifique-se de armazenar esse arquivo de configuração em um repositório GitHub ou 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 do arquivo de configuração
    Ícone de ideia Entendendo os componentes do arquivo de configuração
    data.ibm_schematics_workspace.workspace_id Insira o ID da área de trabalho da VPC em que você definiu os valores de saída que deseja acessar. Esta origem de dados é necessária para recuperar o ID do modelo da área de trabalho na origem de dados ibm_schematics_output.
    data.ibm_schematics_output.workspace_id Insira o ID da área de trabalho da VPC em que você definiu os valores de saída que deseja acessar.
    data.ibm_schematics_output.template_id Insira o data.ibm_schematics_workspace.vpc.runtime_data.0.id para referenciar o modelo do Terraform da sua área de trabalho.
    output.output_vars.value Use a sintaxe de interpolação do Terraform para acessar todos os valores de saída que você definiu no arquivo vpc.tf usando o parâmetro de saída output_values da origem de dados ibm_schematics_output. O parâmetro de saída output_values retorna todos os valores de saída como uma lista.
    output.sshcomand.value e output.vpc_id.value É possível acessar um valor específico na lista output_values ao incluir o ID do valor de saída à sua origem de dados ibm_schematics_output. Por exemplo, para acessar o vpc_id, basta usar data.ibm_schematics_output.vpc.output_values.vpc_id.
  4. Crie uma área de trabalho que aponte para o arquivo remotestate.tf em seu repositório GitHub ou GitLab. Se você desejar fazer upload de um arquivo tar (.tar) da máquina local como alternativa, use o comando ibmcloud schematics workspace upload.

  5. Execute seu código do Terraform no Schematics. Ao revisar seus logs, é possível ver os valores de saída de sua área de trabalho da VPC na seção Saída.

    Exemplo de saída

    ...
    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