Projetos que incluem configurações do Terraform exigem acesso a um ambiente de execução do Terraform que você integra com o produto Cloud Assembly no local.

Como adicionar um tempo de execução do Terraform

O ambiente de tempo de execução consiste em um cluster Kubernetes que executa comandos da CLI do Terraform para executar as operações solicitadas. Além disso, o tempo de execução coleta logs e retorna os resultados de comandos da CLI do Terraform.

O produto vRealize Automation no local exige que os usuários configurem seu próprio cluster Kubernetes de tempo de execução do Terraform. Só há suporte para um tempo de execução do Terraform por organização. Todas as implantações do Terraform para essa organização usam o mesmo tempo de execução.

  1. Verifique se você tem um cluster Kubernetes para executar a CLI do Terraform.
    • Todos os usuários podem fornecer um arquivo Kubeconfig para executar a CLI do Terraform em um cluster Kubernetes não gerenciado.
    • Os usuários de licenças Enterprise têm a opção de executar a CLI do Terraform em um cluster Kubernetes gerenciado pelo vRealize Automation.

      No Cloud Assembly, acesse Infraestrutura > Recursos > Kubernetes e verifique se você tem um cluster Kubernetes. Consulte Como trabalhar com o Kubernetes no Cloud Assembly se você precisar adicionar um.

  2. Se o cluster Kubernetes foi adicionado ou modificado recentemente, aguarde sua coleta de dados ser concluída.

    A coleta de dados recupera a lista de namespaces e outras informações e pode levar até 5 minutos, dependendo do provedor.

  3. Após a conclusão da coleta de dados, acesse Infraestrutura > Conexões > Integrações > Adicionar Integração e selecione o cartão Tempo de Execução do Terraform.
  4. Insira configurações.
    Figura 1. Exemplo de integração de tempo de execução do Terraform
    Exemplo de integração de tempo de execução do Terraform para usuários de licenças Advanced
    Configuração Descrição
    Nome Dê à integração de tempo de execução um nome exclusivo.
    Descrição Explique sua finalidade.
    Integração do tempo de execução do Terraform:
    Tipo de tempo de execução (apenas Enterprise) Os usuários de licença Enterprise podem selecionar se desejam executar a CLI do Terraform em um cluster Kubernetes gerenciado pelo vRealize Automation ou um cluster Kubernetes não gerenciado.
    Kubernetes kubeconfig (todos os usuários)

    Para um cluster Kubernetes não gerenciado, cole todo o conteúdo do arquivo kubeconfig do cluster externo.

    Para usar um tempo de execução externo do Kubernetes com um servidor proxy, consulte Como adicionar suporte a proxy.

    Essa opção está disponível para todos os usuários.

    Cluster Kubernetes (somente Enterprise)

    Para o Kubernetes gerenciado pelo vRealize Automation, selecione o cluster no qual executar a CLI do Terraform.

    O cluster e seu arquivo kubeconfig devem estar acessíveis. Você pode validar o acesso a kubeconfig com um GET em /cmx/api/resources/k8s/clusters/{clusterId}/kube-config.

    Essa opção está disponível apenas para licenças Enterprise.

    Namespace do Kubernetes Selecione o namespace a ser usado no cluster para a criação de pods que executam a CLI do Terraform.
    Configurações do contêiner de tempo de execução:
    Imagem Insira o caminho para a imagem de contêiner da versão do Terraform que você deseja executar.
    Observação: O botão VALIDATE não verifica a imagem do contêiner.
    Solicitação de CPU Insira a quantidade de CPU para os contêineres em execução. O padrão é para 250 millicores.
    Limite de CPU Insira a CPU máxima permitida para os contêineres em execução. O padrão é para 250 millicores.
    Solicitação de memória Insira a quantidade de memória para os contêineres em execução. O padrão é 512 MB.
    Limite de memória Insira a memória máxima permitida para os contêineres em execução. O padrão é 512 MB.
  5. Clique em VALIDATE e ajuste as configurações conforme necessário.
  6. Clique em Adicionar.

As configurações são armazenadas em cache. Depois de adicionar a integração, você pode modificar as configurações, como o cluster ou o namespace, mas pode levar até 5 minutos para que uma alteração seja detectada e para que a CLI do Terraform seja executada sob as novas configurações.

Solucionando problemas com o tempo de execução do Terraform

Alguns problemas de implantação de configuração do Terraform podem estar relacionados à integração do tempo de execução.

Problema Causa Resolução
A validação falha com um erro informando que o namespace é inválido. Você modificou o cluster, mas deixou o namespace anterior na interface do usuário. Sempre selecione um namespace novamente depois de modificar a seleção do cluster.
A lista suspensa de namespaces está vazia ou não lista namespaces recém-adicionados. A coleta de dados para o cluster não foi concluída. A coleta de dados leva até 5 minutos depois de inserir ou modificar o cluster e até 10 minutos ao inserir ou modificar o namespace. Para um novo cluster com namespaces existentes, aguarde até 5 minutos para que a coleta de dados seja concluída.

Para um novo namespace em um cluster existente, aguarde até 10 minutos para que a coleta de dados seja concluída.

Se o problema persistir, remova o cluster e, em seguida, adicione-o novamente em Infraestrutura > Recursos > Kubernetes.

Os contêineres da CLI do Terraform estão criados em um cluster anterior, em um namespace anterior ou em configurações de tempo de execução anteriores, mesmo depois que a conta de integração foi atualizada. O cliente de API do Kubernetes usado pelo vRealize Automation foi armazenado em cache por 5 minutos. As alterações podem precisar de até 5 minutos para entrar em vigor.
A validação ou uma operação de implantação do Terraform falha com um erro informando que o kubeconfig não está disponível. Às vezes, esses erros ocorrem porque o cluster não está acessível a partir do vRealize Automation.

Em outros casos, as credenciais do usuário, os tokens ou os certificados são inválidos.

O erro de kubeconfig pode ocorrer por várias razões e pode exigir um compromisso com o suporte técnico para solução de problemas.

Como adicionar suporte a proxy

Para que o cluster de tempo de execução externo do Kubernetes se conecte por meio de um servidor proxy, siga estas etapas.

  1. Faça login no servidor do seu cluster Kubernetes externo.
  2. Crie uma pasta vazia.
  3. Na nova pasta, adicione as seguintes linhas a um novo arquivo denominado Dockerfile.
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. Modifique os valores de espaço reservado para que as variáveis de ambiente https_proxy e http_proxy incluam as configurações do servidor proxy que você usa para acessar a Internet.

    O protocolo será http ou https de acordo com o que o servidor proxy usa, que pode não corresponder ao nome da variável de ambiente https_proxy ou http_proxy.

  5. Salve e feche o Dockerfile.
  6. Na pasta vazia, execute o seguinte comando. Dependendo dos seus privilégios de conta, poderá ser necessário executar o comando no modo sudo.

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    O comando cria uma imagem local Docker custom-terraform-runtime:1.0.

  7. Em Cloud Assembly, em Infraestrutura > Conexões > Integrações, vá para a sua integração do tempo de execução do Terraform.
  8. Crie ou edite as configurações do contêiner de tempo de execução para usar a imagem custom-terraform-runtime:1.0:
    Imagem de proxy do tempo de execução do Terraform