Sobre a Configuração do Terraform em Sistemas Windows

Para usar o Terraform para criar componentes do Oracle Cloud Infrastructure, você deve fazer download e instalar o Terraform. Você também fará o download dos módulos Terraform que criam os arquivos de configuração que você usará para criar os componentes de infraestrutura necessários.

O sistema no qual você instala o Terraform e armazena os módulos do Teraform pode estar no local ou na nuvem. Por conveniência, recomendaremos isso como seu sistema local ou seu host local.

Antes de executar o Terraform:

  • Gere um par de chaves SSH usado para permitir que você acesse suas instâncias do Compute

  • Gere uma chave de assinatura de API usada para autenticar chamadas de API feitas pelo Terraform

  • Defina as variáveis do ambiente usadas pelo Terraform para autenticar o acesso e executar seus planos

Após concluir estas etapas, você está pronto para aplicar os arquivos de configuração Terraform a fim de criar os componentes de infraestrutura no Oracle Cloud Infrastructure.

Instalar Terraform

Para instalar o Terraform em um sistema Windows, faça download do pacote apropriado no site Terraform.

  1. Vá para https://www.terraform.io/downloads.html .
  2. Faça download do pacote aplicável para seu sistema local.
  3. Extraia o pacote para a pasta C:\Program Files (x86).
    Este caminho é usado como um exemplo. No entanto, você também pode o executável Terraform para qualquer outro local do sistema local.
  4. Atualize a variável de ambiente do caminho para incluir a pasta em que o executável do Terraform está localizado.
    1. Vá para o Painel de Controle.
    2. Clique em Sistema.
    3. Em um sistema Windows 10, clique em Configurações avançadas do sistema. Essa opção pode variar em diferentes versões do Windows.
      A guia Avançado da janela Propriedades do Sistema é exibida.
    4. Clique em Variáveis de Ambiente próximo à parte inferior da janela.
      A janela Variáveis de Ambiente é exibida.
    5. No painel Variáveis do sistema , clique em Caminho e, em seguida, clique em Editar.
    6. Clique em Novo. Adicione o caminho à pasta em que o executável do Terraform está localizado.
    7. Clique em OK para salvar as alterações e, em seguida, clique em OK para sair das janelas Variáveis de Ambiente . Em seguida, clique em OK novamente para sair da janela Propriedades do Sistema .
  5. Para verificar sua instalação e verificar a versão, inicie o Windows PowerShell e digite: terraform -version.
    Você verá a versão Terraform exibida na saída. Por exemplo: Terraform v0.11.8

Fazer Download dos Módulos Terraform

Para começar a criar componentes de infraestrutura no Oracle Cloud Infrastructure usando o Terraform, faça download dos módulos Terraform.

  1. Use o Git ou um web browser para clonar ou fazer download dos módulos Terraform no sistema local. Clique em Fazer Download do Código na navegação à esquerda do link para o repositório Git.
  2. Descompacte ou extraia os módulos Terraform para qualquer pasta no sistema local.
  3. Inicie o Windows PowerShell e navegue até a pasta onde os módulos Terraform estão localizados. Digite terraform init. Isso também fará o download do provedor do Oracle Cloud Infrastructure para o Terraform.
    O Terraform inicializa os módulos juntamente com o plug-in do provedor OCI. Quando a inicialização estiver concluída, você verá a mensagem Terraform has been successfully initialized!

Gerar um Par de Chave SSH para Acessar os Hosts da Bastion

Um par de chaves SSH é usado para permitir que você acesse com segurança instâncias criadas em sub-redes públicas. Você gera um par de chaves SSH em seu host local. Os módulos Terraform adicionam a chave pública SSH aos hosts do bastion. Quando precisar se conectar ao host bastion pela Internet pública, forneça a chave privada SSH para autenticar o acesso.

Você pode gerar um par de chaves SSH usando o PuTTYgen. Não defina uma frase-senha para sua chave SSH.

  1. Inicie o PuTTYgen.
  2. Aceite o tipo de chave padrão do SSH-2 RSA e defina o Número de bits em uma chave gerada para 2048, se ainda não estiver definido.
  3. Clique em Gerar e, em seguida, mova o mouse sobre a área em branco para gerar a aleatoriedade.
    A chave é gerada e seu valor aparece em Chave pública para colar no arquivo authorized_keys do OpenSSH.
  4. Clique em Salvar chave privada. Será solicitado que você confirme que deseja salvar a chave sem uma frase-senha. Clique em Sim. Você pode armazenar esta chave em qualquer local, mas para simplificar, armazene-a na mesma pasta em que os módulos Terraform estão localizados.
  5. Em seguida, para salvar a chave pública, selecione toda a chave gerada que aparece na chave Pública para colar no campo do arquivo authorized_keys do OpenSSH , copiá-la e colá-la em um arquivo de texto. Salve este arquivo na mesma localização da chave privada. Não use o botão Salvar chave pública porque ela não salva a chave no formato OpenSSH.
Agora você gerou e armazenou seu par de chaves SSH em seu sistema local. Certifique-se de que você anote o local onde este par de chaves está armazenado.

Gerar um Par de Chaves SSH para Acessar Outras Instâncias

Os hosts bash são usados para ativar o encaminhamento SSH para outras instâncias que não têm endereços IP públicos e não permitem acesso na internet pública. Para acessar com segurança outras instâncias do host de bastecimento, use um par de chaves SSH onde a chave pública armazenada em instâncias de sub-redes privadas corresponde a uma chave privada armazenada em sua máquina local.

O par de chaves SSH usado para permitir o acesso do host de bastion para outras instâncias deve ser gerado usando um utilitário como OpenSSL ou ssh-keygen. Você não pode usar um par de chaves SSH gerado no Windows usando o PuTTY, porque o formato .ppk usado pelo PuTTY não é suportado no Oracle Linux ou em outros sistemas operacionais semelhantes ao UNIX. Lembre-se de que o host bastion, que encaminha o tráfego SSH para outras instâncias, usa uma imagem do Oracle Linux.

  1. Inicie o Git Bash.
  2. Digite: ssh-keygen -t rsa -N "" -b 2048 -C "<key_name>" -f <path/root_name>
    Neste comando:
    • -t rsa especifica que a chave deve ser gerada usando o algoritmo RSA

    • -N "" especifica a frase-senha que você deseja associar a esta chave. Não informe nada entre as aspas. A chave é criada sem uma frase-senha.

    • -b 2048 especifica que você deseja gerar uma chave de 2048bits. Esse é o valor padrão e também é o valor mínimo recomendado.

    • -C "<key_name>" especifica o nome deste par de chaves.

    • -f <path/root_name> especifica o local onde a chave é salva e o nome da raiz para a chave pública e privada. A chave pública tem .pub anexado ao nome da raiz.

O par de chaves SSH é gerado e salvo no local especificado. Anote este local.

Gerar uma Chave de Assinatura de API

Você deve fornecer um par de chaves RSA no formato Privacy Enhanced Mail (PEM) para autenticar seu script Terraform com o Oracle Cloud Infrastructure. Observe que esta chave de assinatura de API não é igual ao par de chaves SSH que você usa para acessar suas instâncias. Você pode gerar esse par de chaves usando OpenSSL no Git Bash. Você já deverá ter instalado o Git Bash em seu sistema local.

  1. Inicie o Git Bash.
  2. Crie uma pasta oculta para armazenar a chave do PEM. Você pode armazenar a chave PEM em qualquer local, mas para simplificar, criar esta pasta na pasta onde os módulos Terraform estão localizados. Certifique-se de que você anote o local onde armazena o par de chaves. Navegue até esse local e insira: mkdir ./.oci
  3. Para criar a chave de assinatura da API, informe: openssl genrsa -out ./.oci/key_name.pem 2048
  4. Altere as permissões na chave privada para garantir que apenas você possa ler a chave privada. Digite: chmod go-rwx ./.oci/key_name.pem
  5. Em seguida, para gerar a chave pública da chave privada fornecida, digite: openssl rsa -pubout -in ./.oci/key_name.pem -out ./.oci/key_name_public.pem
A chave de assinatura da API pública e privada é armazenada na pasta especificada.

Fazer Upload da Chave de Assinatura da API Usando a Console

Depois de gerar uma chave de assinatura de API, você deverá fazer upload da chave pública do usuário associado no Oracle Cloud Infrastructure. Na primeira vez que você fizer upload de uma chave de assinatura da API, deverá usar a Console. Subsequentemente, você também pode usar a API para fazer upload de uma chave de API.

  1. Acesse a Console do Oracle Cloud Infrastructure.
  2. Clique em Identidade e depois em Usuários.
  3. Clique no usuário para quem você deseja adicionar a chave de assinatura da API.
  4. Na página de detalhes do usuário, clique em Adicionar Chave Pública.
  5. No sistema local, inicie o Git Bash. Navegue até a pasta em que você armazenou seu par de chaves de assinatura de API.
  6. Para copiar a chave pública, informe: cat ./key_name_public.pem. O valor da chave pública é exibido. Copie este valor, incluindo as linhas -----BEGIN PUBLIC KEY----- e -----END PUBLIC KEY-----.
  7. Na Console, cole o valor da chave pública e clique em Adicionar.

Definir Variáveis de Ambiente

Os módulos Terraform fornecidos aqui permitem definir variáveis de ambiente, especificando os valores necessários em um arquivo de texto. Você pode, então, apenas originar o arquivo para garantir que todas as variáveis de ambiente necessárias sejam definidas da forma apropriada.

Antes de começar, efetue log-in na Console do Oracle Cloud Infrastructure. Você usará a Console para encontrar as seguintes informações.

  • O ID Oracle Cloud Infrastructure do tenancy (OCID)

  • O OCID do usuário

  • A impressão digital da chave de assinatura da API que você deseja usar

  • A região

  • O OCID do compartimento

Certifique-se também de conhecer o local onde sua chave de assinatura de API e seu par de chaves SSH estão armazenados no seu sistema local.

  1. No sistema local, navegue até o diretório onde os módulos Terraform estão localizados.
  2. Abra o arquivo env-vars.ps1 em um editor de texto.
  3. O arquivo env-vars tem várias seções. Inicie com a seção de detalhes da autenticação.
    1. Informe o OCID do tenancy. Você pode localizar o OCID da locação na parte inferior da Console do Oracle Cloud Infrastructure. É uma string semelhante a: ocid1.tenancy.oc1..aaaaa.... Cole esse valor no arquivo env-vars.
    2. Informe o OCID do usuário. Para localizar o usuário OCID, na Console do Oracle Cloud Infrastructure, clique em Identidade e, em seguida, clique em Usuários. A lista de usuários é exibida, juntamente com o OCID do usuário. Clique em Copiar abaixo do nome do usuário para copiar o OCID necessário para o usuário. Cole esse valor no arquivo env-vars.
    3. Informe a impressão digital da chave de assinatura da API. Na Console do Oracle Cloud Infrastructure, na página Usuários , clique no usuário para exibir a página de detalhes do usuário. Copie a impressão digital da chave da API da chave listada na seção Chaves da API . Cole esse valor no arquivo env-vars.
    4. Digite o caminho completo e o nome do arquivo da chave privada da API em seu sistema local.
  4. Na seção de região do arquivo env-vars, informe a região na qual você deseja criar os componentes de infraestrutura. A região que você está exibindo no momento é exibida na parte superior da Console do Oracle Cloud Infrastructure. Você também pode usar a Console para encontrar outras regiões às quais tem acesso.
  5. Na seção compartimento do arquivo env-vars, informe o OCID do compartimento no qual você deseja criar os componentes de infraestrutura. Certifique-se de que o usuário especificado anteriormente pertença a um grupo que tenha as permissões necessárias para o compartimento especificado aqui. Para localizar o OCID de compartimento, vá para a Console do Oracle Cloud Infrastructure. Clique em Identidade e, em seguida, clique em Compartimentos. A lista de compartimentos é exibida, junto com o OCID do compartimento. Clique em Copiar abaixo do nome do compartimento para copiar o OCID do compartimento necessário. Cole esse valor no arquivo env-vars.
  6. Nas seções de chaves públicas/privadas do arquivo env-vars, informe o caminho completo e o nome do arquivo da chave pública SSH e a chave privada SSH em seu sistema local. Certifique-se de que as chaves públicas e privadas especificadas para uso nos hosts do bastion sejam o par de chaves que você criou usando o PuTTY e as chaves que você especificar para uso nas outras instâncias são o par de chaves que você criou usando ssh-keygen.
  7. Verifique se você informou todos os valores corretamente. Se você omitiu um valor, será solicitado a inserir ao executar o Terraform. Se você tiver informado valores incorretos, o Terraform apresentará erros. Quando estiver satisfeito com que todos os valores estejam corretos, salve e feche o arquivo env-vars.
  8. Para definir as variáveis de ambiente especificadas no arquivo env-vars, inicie o Windows PowerShell, navegue até a pasta em que os módulos Terraform estão localizados e informe: env-vars.ps1
    Isso executa o arquivo env-vars.ps1, que define todas as variáveis especificadas nesse arquivo para a sessão atual.
  9. Para verificar se as variáveis de ambiente foram definidas, informe: dir env:
    Isso lista todas as variáveis do ambiente. Você pode exibir as variáveis TF_VAR para verificar se seus valores foram definidos conforme esperado.

Verifique a Configuração do Terraform

Depois de definir todas as variáveis de ambiente necessárias, verifique se você está pronto para executar o Terraform.

  • Inicie o Windows PowerShell e navegue até a pasta onde os módulos Terraform estão localizados. Digite: terraform plan
    A saída deste comando mostra o plano de execução de todas as configurações em todos os módulos no diretório atual. Esta saída descreve as ações que o Terraform levará para alterar a infraestrutura atual para corresponder às configurações. Quando nenhum componente tiver sido criado no momento, a saída mostrará a lista de componentes que serão criados quando você executar terraform apply. Este comando não cria nenhum componente e é seguro para ser executado se você quiser verificar se sua configuração foi bem-sucedida e se todos os valores de autenticação necessários foram armazenados corretamente nas variáveis de ambiente apropriadas.