Adicionar interface do Terraform Orchestration em um bloco de recursos

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 4 min. de leitura
  • Depois de ativar a aplicação da loja Terraform para Cloud Provisioning and Governance, para oferecer suporte a operações baseadas em nuvem para provedores de nuvem usando o Terraform Open Source Edition. Adicione a interface do Terraform Orchestration no bloco de recursos para executar operações baseadas em nuvem por meio de modelos do Terraform.

    Antes de Iniciar

    Função necessária: sn_cmp.cmp_root_admin, sn_cmp.cloud_service_designer

    Procedimento

    1. No Portal de administração de nuvem, navegue até Design > Bloco de Recursos.
    2. Clique no bloco de recursos, por exemplo, Azure Datacenter.
    3. Mova o estado do bloco de recursos de Publicado para Rascunho para torná-lo editável.
    4. Navegar até Informações gerais > Interface de Convidadoe, em seguida, clique em Novo.
    5. Pesquise e selecione a Interface de orquestração do Terraform na lista Interface de convidado e clique em Enviar.
    6. Clique na guia Operações.
    7. Na guia Parâmetrosde entrada, navegue até Interface e selecione Terraform Orchestration Interface
    8. Na guia Parâmetros de entrada, configure as entradas da operação de CAPI.

      Na interface CAPI, que neste caso é a Interface de Orquestração do Terraform, abra o método CreateStack. As entradas do CAPI são exibidas na guia Entrada, onde você cria parâmetros.

      A guia Parâmetros de entrada é onde os usuários inserem valores. Você pode mapear esses parâmetros de entrada para os parâmetros na guia Entrada. Para fazer isso, copie o valor de Mapeamento da guia Parâmetros de entrada para o campo Valor no Etapas > Entrada guia.

      Se esta etapa estiver invocando um script e esse script exigir argumentos para retornar valores, você poderá adicionar um novo parâmetro de entrada para cada argumento. Use esta sintaxe no campo Valor : ${parameter.arg1}.

    9. Clique na subguia Etapas em Operações.
    10. Clique em Adicionar etapa.
    11. Preencha os campos de formulário.
      Campo Descrição
      Tipo de Operação

      Selecione o tipo de operação.

      Invocar API em nuvem: selecione esta opção para selecionar um provedor, uma interface e um método de CAPI.

      Provedor de API

      Selecione a API que fornece as interfaces necessárias. Os provedores fazem parte da API da nuvem (CAPI).

      Por exemplo, o CAPI fornece o provedor Terraform OpenSource, que fornece a Interface de orquestração de configuração.

      Este valor aparecerá se você selecionar o tipo de operação Invocar API em nuvem.

      Interface de API Selecione a interface que tem os métodos que você deseja usar. Para este exemplo, a Interface de orquestração de configuração fornece várias interfaces ou métodos que o sistema usa durante o provisionamento.
      Método de API Selecione o método para executar a operação. Neste exemplo, ExecuteCommand é necessário para provisionar modelos de terraform.
      Versão de CAPI Insira a versão da API CAPI.
      Condição Insira uma condição opcional que deve ser atendida antes que o sistema use esta etapa.
    12. Clique em Enviar.

      As guias Processador de entrada e de resposta são exibidas para a etapa.

    13. Na guia Entrada, configure as entradas da operação de CAPI.

      Na interface de CAPI, que neste caso é a Interface de Orquestração de configuração, abra o método ExecuteCommand. As entradas do CAPI são mostradas na guia Entrada, onde você cria parâmetros.

      Lembre-se de que os parâmetros na guia Parâmetros de entrada são onde os usuários inserem valores. Você pode mapear esses parâmetros de entrada para os parâmetros na guia Entrada. Copie o valor de Mapeamento da guia Parâmetros de entrada para o campo Valor no Etapas > Entrada guia.

      Se esta etapa estiver invocando um script e esse script exigir argumentos para retornar valores, você poderá adicionar um novo parâmetro de entrada para cada argumento. Use esta sintaxe no campo Valor : ${parameter.arg1}.

      Nota:
      Mapeie os valores conforme mencionado na tabela a seguir para os seguintes parâmetros:
      Parâmetro Valor
      Parâmetrosadicionais Insira o seguinte script:
      {"ServerType":"$(Script:sn_cmp_terraform.TerraformCommandUtils.
      getConfigProviderServerTypeByName[arg=${parameter.WorkloadConfigProvider}])"}
      ConfigMgmtProviderInfo
      $(capiResolver.NodeCredentialResolver#nodeCredentialId=$(ci.sn_cmp_wl_cfg_mgmt_provider
      [name=${parameter.WorkloadConfigProvider}].credential))
      Endereço do nó
      $(ci.cmdb_ci_workload_config_provider[name=${parameter.WorkloadConfigProvider}].url)
      Script

      Para operação CreateStack

      ${CloudScript.scripts.TerraformDeploy}
      Script

      Para a operação DeleteStack

      ${CloudScript.scripts.DestroyTerraform}
    14. Na guia Processador de resposta, configure os processadores de resposta anexando scripts de recurso.
      Você teria adicionado scripts de recurso ao bloco de recursos ao criar o bloco de recursos.
    15. Na lista Operação, selecione a operação CreateStack ou DeleteStack.
    16. Clique no ícone adicionar Adicionar processador de respostapara Adicionar processador de resposta.
    17. Clique na subguia Script de recurso e em Novo.
    18. Preencha o formulário.
      Tabela 1. Novo registro
      Campo Descrição
      Nome Insira um nome (por exemplo, Create_AzureTF_Stack_Response_Processor) para o script de recurso.
      Tipo Selecione um tipo (Processador de resposta) para o script.
      Script

      Script de recurso para criar

      Insira o seguinte script:
      function processResponse (response, cloudServiceAccountId, ldc,
      						  correlationId, step, requestorContext, stackId) {
      	var responseObject = global.JSON.parse(response);
      	var tfState = global.JSON.parse(responseObject.terraform.state);
      	var processor = new sn_cmp_terraform.TerraformResponseProcessor();
      	var processedResponses = processor.processResponse(tfState, cloudServiceAccountId,  ldc,
      							   correlationId, step, requestorContext, stackId);
      	return global.JSON.stringify(processedResponses);
      }
      
      Script

      Script de recurso para exclusão

      Insira o seguinte script:
      function processResponse (response, cloudServiceAccountId, ldc,
      						  correlationId, step, requestorContext, stackId) {
      	var responseObject = global.JSON.parse(response);
      	var tfState = global.JSON.parse(responseObject.terraform.state);
      	var processor = new sn_cmp_terraform.TerraformResponseProcessor();
      	var processedResponses = processor.processResponse(tfState, cloudServiceAccountId,  ldc,
      							   correlationId, step, requestorContext, stackId);
      	return global.JSON.stringify(processedResponses);
      }
      
    19. Na lista Nome do script, selecione o script correspondente à operação selecionada e clique em Enviar.
    20. Mova o estado do bloco de recursos de Rascunho para Publicado.
      O bloco de recursos do datacenter passa do estado de rascunho para o estado publicado e você não pode fazer mais mudanças no bloco de recursos. Você só pode modificar um bloco de recursos depois de definir o status como Rascunho.