Provisionar, Configurar e Remover Recursos

Use o Terraform para implantar, alterar e remover seus recursos na nuvem de forma eficiente.

Sobre Arquivos de Estado do Terraform

O Terraform armazena informações de estado para rastrear seus recursos de infraestrutura gerenciados, mapear os recursos implantados para sua configuração, rastrear metadados e melhorar o desempenho de implantações de infraestrutura grandes.

Por default, o arquivo terraform.tfstate é armazenado no host local. Esse comportamento padrão não é ideal nos ambientes de TI nos quais vários usuários precisam criar e destruir os recursos definidos em uma determinada configuração. Para controlar a implantação e o gerenciamento de recursos em um ambiente com vários usuários, armazene os arquivos do estado do Terraform no Oracle Cloud Infrastructure Object Storage e compartilhe os arquivos de estado e bloqueie os arquivos entre todos os usuários.

Consulte Usando o Armazenamento de Objetos para Arquivos de Estado do Terraform.

Criar os Recursos

Depois de definir as variáveis no arquivo terraform.tfvars, use a CLI do Terraform para implantar os recursos definidos na configuração do Terraform.

Antes de começar, verifique se sua máquina local tem acesso à Internet. Se sua máquina local estiver protegida por um firewall, use um proxy apropriado para permitir que o Terraform atinja a internet.
  1. No computador em que você instalou o Terraform, vá até o diretório que contém o arquivo terraform.tfvars.
  2. Inicialize o Terraform, executando o seguinte comando:
    terraform init
    O comando faz download do plug-in do provedor oci e configura o diretório a ser usado pelo Terraform.
  3. Verifique se a sintaxe da configuração não tem erros:
    terraform validate
  4. Se houver um erro de sintaxe, corrija o erro e repita a etapa anterior.
    Para depurar problemas, você pode configurar o log:
    • Defina o nível de log usando a variável de ambiente TF_LOG. Os níveis de log suportados são TRACE, DEBUG, INFO, WARN ou ERROR. O nível TRACE é o mais detalhado.
    • Defina o caminho do arquivo de log usando a variável de ambiente TF_LOG_PATH.
  5. Revise os recursos definidos na configuração.
    terraform plan
    A saída mostra os detalhes de todas as ações executadas quando você aplica essa configuração e um resumo, conforme mostrado no exemplo a seguir.
    Plan: 8 to add, 0 to change, 0 to destroy.

    Observação:

    O número 8 na mensagem é um exemplo. O número real depende das definições que você definiu na configuração do Terraform.
  6. Se quiser fazer alterações, edite a configuração, valide-a e revise o plano revisado.
  7. Crie os recursos:
    terraform apply
  8. No prompt Do you want to perform these actions?, informe sim
    Como o Terraform cria cada recurso, ele exibe o status da operação.

    Quando todos os recursos são criados, a mensagem Apply complete é exibida, juntamente com o número de recursos adicionados, alterados e destruídos, conforme mostrado no exemplo a seguir.

Apply complete! Resources: 33 added, 0 changed, 0 destroyed.

Outputs:

admin_private_ip = 10.0.1.10
bastion_public_ip = 203.0.113.101
kubeconfig = export KUBECONFIG=generated/kubeconfig
ocirtoken = <sensitive>
ssh_to_admin = ssh -i /home/joe/.ssh/id_rsa -J opc@203.0.113.101 opc@10.0.1.10
ssh_to_bastion = ssh -i /home/joe/.ssh/id_rsa opc@203.0.113.101
  • A saída kubeconfig exibe o comando que você pode usar para definir a variável de ambiente KUBECONFIG no host local. Execute este comando se quiser usar a CLI kubectl do seu host local para gerenciar o cluster do Kubernetes. O comando define KUBECONFIG para o arquivo generated/kubeconfig, que o Terraform cria ao aplicar a configuração.
  • A saída ssh_to_admin exibe o comando ssh que pode ser usado para conexão com o host admin.
  • A saída ssh_to_bastion exibe o comando ssh que você pode usar para se conectar ao host bastion.

Observação:

Você pode exibir esta saída do Terraform a qualquer momento executando o comando terraform output
Sua topologia do Kubernetes no Oracle Cloud está pronta. Agora você pode implantar aplicativos conteinerizados.

Permitir que o Host de Administração Gerencie Recursos

Para permitir que o host admin gerencie recursos no compartimento, você pode designá-lo como um principal de instância. Utilize este recurso se você pretende executar comandos de CLI ou fazer chamadas de API do host admin para gerenciar recursos na topologia.

Uma instância de computação que é designada como principal de uma instância obtém sua própria identidade exclusiva. Ele pode ser autenticado usando certificados criados e designados automaticamente à instância. Os certificados são rotacionados periodicamente. Não é necessário distribuir as credenciais para o host do administrador ou rotaciona-las.

Observação:

Qualquer usuário que possa se conectar a uma instância de computação usando SSH herda os privilégios de instância privada concedidos à instância. Considere isso ao decidir se o host admin será designado como um principal de instância. Você pode desativar esse recurso ou a qualquer momento sem nenhum impacto no host admin.
  • Para designar o host admin como um principal da instância, defina o seguinte em terraform.tfvars e, em seguida, execute terraform apply.

    admin_instance_principal = true

    O host admin é membro de um grupo dinâmico, e uma instrução de política é criada para permitir que o grupo dinâmico gerencie todos os recursos no compartimento.

  • Para retirar os privilégios principais da instância do host admin, defina o seguinte em terraform.tfvars e execute terraform apply.

    admin_instance_principal = false

Ativar ou Desativar Notificações para o Host Bastion

Você pode usar o Oracle Cloud Infrastructure Notification Service para receber mensagens de status do host bastion quando as atualizações forem aplicadas ou quando o Oracle Ksplice detectar uma tentativa conhecida de exploração.

Observação:

O código Terraform nesta solução configura notificações somente quando você usa a imagem default do Oracle Autonomous Linux.
  • Para ativar as notificações para o host bastion, defina as seguintes variáveis em terraform.tfvars:

    bastion_notification_enabled = true
    bastion_notification_endpoint = "email_address"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "topic_name"

    Este é um exemplo de terraform.tfvars com as variáveis relacionadas à notificação definidas.

    bastion_notification_enabled = true
    bastion_notification_endpoint = "joe@example.com"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "bastion"
  • Se o host bastion já tiver sido criado e você quiser ativar as notificações agora, defina essas variáveis e execute novamente o terraform apply.
    • As políticas necessárias são definidas para permitir que o host bastion publique notificações.
    • Um tópico de notificação é criado e o endereço de e-mail especificado é inscrito no tópico.
    • O host bastion está configurado para enviar notificações.

    Após a criação dos recursos, você receberá um e-mail solicitando que você confirme a inscrição.

  • Para desativar as notificações, defina o seguinte em terraform.tfvars e execute terraform apply.

    bastion_notification_enabled = false
    admin_notification_enabled = false

Remover Todos os Recursos

  1. No computador em que você instalou o Terraform, vá até o diretório que contém o arquivo terraform.tfvars.
  2. Informe o seguinte comando:
    terraform destroy
    O Terraform exibe os detalhes dos recursos que serão destruídos, conforme mostrado neste exemplo:
    Plan: 0 to add, 0 to change, 12 to destroy.
  3. No prompt Do you really want to destroy all resources?, informe sim
    Como o Terraform remove cada recurso, ele exibe o status da operação.
    Após todos os recursos serem removidos, a mensagem Destroy complete será exibida, junto com o número de recursos destruídos, conforme mostrado no exemplo a seguir:
    Destroy complete! Resources: 12 destroyed.