Os usuários do Cloud Assembly que precisam projetar e executar integrações do Terraform enquanto estão desconectados da Internet podem configurar seu ambiente de execução seguindo este exemplo.
Esse processo pressupõe que você tenha seu próprio Registro Docker e possa acessar seus repositórios sem uma conexão com a Internet.
Criar a imagem de contêiner personalizada
- Crie uma imagem de contêiner personalizada que inclua os binários do plug-in do provedor do Terraform.
O Dockerfile a seguir mostra um exemplo de criação de uma imagem personalizada com o provedor do Terraform GCP.
O download da imagem de base
projects.registry.vmware.com/vra/terraform:latest
no Dockerfile requer acesso à Internet para o registro VMware Harbor em projects.registry.vmware.com.Configurações de firewall ou de proxy podem fazer com que a criação da imagem falhe. Pode ser necessário ativar o acesso a releases.hashicorp.com para baixar os binários do plug-in de provedor do Terraform. No entanto, você pode usar seu registro privado para fornecer os binários do plug-in como uma opção.
FROM projects.registry.vmware.com/vra/terraform:latest as final # Create provider plug-in directory ARG plugins=/tmp/terraform.d/plugin-cache/linux_amd64 RUN mkdir -m 777 -p $plugins # Download and unzip all required provider plug-ins from hashicorp to provider directory RUN cd $plugins \ && wget -q https://releases.hashicorp.com/terraform-provider-google/3.58.0/terraform-provider-google_3.58.0_linux_amd64.zip \ && unzip *.zip \ && rm *.zip # For "terraform init" configure terraform CLI to use provider plug-in directory and not download from internet ENV TF_CLI_ARGS_init="-plugin-dir=$plugins -get-plugins=false"
- Crie, marque e envie a imagem do contêiner personalizado ao seu próprio repositório Docker no seu site desconectado.
- No Cloud Assembly no seu site desconectado, em , vá para a sua integração do tempo de execução do Terraform.
- Crie ou edite as configurações do contêiner de tempo de execução para adicionar seu repositório à imagem de contêiner personalizada. O exemplo de nome de imagem de contêiner personalizada criado é
registry.ourcompany.com/project1/image1:latest
.
Hospedar a CLI do Terraform localmente
- Baixe os binários da CLI do Terraform.
- Carregue os binários da CLI do Terraform no seu servidor Web local ou FTP.
- No Cloud Assembly, acesse .
- Crie ou edite a versão do Terraform para que ela inclua a URL para os binários da CLI do Terraform hospedados no seu servidor local.
- Se o seu servidor Web ou FTP local exigir autenticação por login, selecione Autenticação Básica e insira credenciais de nome de usuário e senha que podem acessar o servidor.
Para alterar o tipo de autenticação, você deve ter a função de administrador de nuvem no Cloud Assembly.
Projetar e implantar configurações do Terraform
Com o tempo de execução em vigor, você pode adicionar arquivos de configuração do Terraform ao Git, projetar modelos de nuvem para eles e implantar.
Para começar, consulte Preparando para configurações do Terraform no Cloud Assembly.
Solução de problemas
Ao implantar, abra a implantação no Cloud Assembly. Na guia Histórico, procure eventos do Terraform e clique em Mostrar Logs à direita. Quando seu provedor do Terraform local está funcionando, as seguintes mensagens aparecem no log.
Initializing provider plugins
Terraform has been successfully initialized
Para um registro mais robusto, você pode editar manualmente o código do modelo de nuvem para adicionar TF_LOG: DEBUG
conforme mostrado no exemplo a seguir.
resources: terraform: type: Cloud.Terraform.Configuration properties: providers: - name: google # List of available cloud zones: gcp/us-west1 cloudZone: gcp/us-west1 environment: # Configure terraform CLI debug log settings TF_LOG: DEBUG terraformVersion: 0.12.29 configurationSource: repositoryId: fc569ef7-f013-4489-9673-6909a2791071 commitId: 3e00279a843a6711f7857929144164ef399c7421 sourceDirectory: gcp-simple
Criando sua própria imagem de base
Embora a VMware atualize ocasionalmente a imagem de base no projects.registry.vmware.com/vra/terraform:latest
, essa imagem pode estar desatualizada e conter vulnerabilidades.
Para criar sua própria imagem de base, use o seguinte Dockerfile.
FROM alpine:latest as final RUN apk add --no-cache git wget curl openssh