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
:
-
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 ovpc_id
. -
Recupere o ID da área de trabalho da VPC que você criou.
Através do console:
- A partir do painel da área de trabalho
, 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. - A partir do painel da área de trabalho
-
Crie outro arquivo de configuração do Terraform denominado
remotestate.tf
para acessar os parâmetros de saída do arquivovpc.tf
usando a origem de dadosibm_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 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ídaoutput_values
da origem de dadosibm_schematics_output
. O parâmetro de saídaoutput_values
retorna todos os valores de saída como uma lista.output.sshcomand.value
eoutput.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 dadosibm_schematics_output
. Por exemplo, para acessar ovpc_id
, basta usardata.ibm_schematics_output.vpc.output_values.vpc_id
. -
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 comandoibmcloud schematics workspace upload
. -
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