Articles

migrar Estado para Terraform Cloud

Posted by admin

como usuário atual da Terraform CLI, você é responsável por manter um arquivo de Estado como uma fonte de verdade para sua infraestrutura de nuvem. Você pode migrar seu arquivo de Estado local para o Terraform Cloud sem interromper ou recriar sua infraestrutura existente.Aviso: ao enviar um arquivo de Estado para o Terraform Cloud usando as etapas deste tutorial, sempre use a mesma versão do Terraform CLI que você usou para criar os recursos. Usar uma versão mais recente do Terraform pode atualizar o arquivo de estado e causar corrupção de arquivo de Estado.

“pré-Requisitos

Este tutorial pressupõe que você tenha o seguinte:

  • O Terraform CLI instalado localmente
  • Um Terraform conta de Nuvem

Observação: como o remote back-end não era suportado na versão mais antiga de Transformar, você deve usar 0.11.13 ou superior, a fim de migrar seu estado para Transformar em Nuvem. Os trechos deste tutorial usam a sintaxe 0.12.

se você não tiver o Terraform instalado localmente, poderá concluir este tutorial em um laboratório interativo a partir do navegador da web. Lança-o aqui.

“crie um estado

comece clonando este repositório GitHub.

$ git clone https://github.com/hashicorp/learn-state-migration

Copie

em seguida, mude para o diretório.

$ cd learn-state-migration

Copie

revise o arquivo main.tf no diretório de trabalho para obter uma visão geral dos recursos que você está prestes a criar. Essa configuração usa o recurso random_pet para gerar e gerar um nome de animal de estimação Aleatório com um determinado número de palavras. O comprimento do nome é determinado pelo valor da variável name_length, que é padrão 3.

em uma configuração do mundo real, você pode ter variáveis adicionais, como credenciais do cloud platform definidas em um arquivo .tfvars. Abordaremos como definir esses valores no espaço de trabalho do Terraform Cloud mais tarde neste tutorial, depois de migrar o arquivo de Estado.

## Terraform configurationterraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14"}variable "name_length" { description = "The number of words in the pet name" default = "3"}resource "random_pet" "pet_name" { length = var.name_length separator = "-"}output "pet_name" { value = random_pet.pet_name.id}

Copiar

Inicializar o diretório.

$ terraform init

Copie

depois que o Terraform inicializar, aplique a configuração e aprove a execução digitando “sim” no prompt.

$ terraform apply

cópia

Terraform irá produzir um nome de animal de estimação gerado aleatoriamente de três palavras.

“configure o back-end remoto

agora que você tem um arquivo de Estado local, você precisa criar um bloco de código de back-end em sua configuração. Os Backends informam ao Terraform onde carregar e salvar seu arquivo de Estado.O Terraform usa o back-end local por padrão se você não definir explicitamente um bloco de código de back-end em sua configuração. O back-end local salva seu estado como um arquivo terraform.tfstate no diretório onde você executa terraform apply. Para migrar arquivos de Estado para o Terraform Cloud, defina um back-end remote em sua configuração adicionando um novo bloco de código ao início do arquivo main.tf.

terraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14" backend "remote" { hostname = "app.terraform.io" organization = "<YOUR-ORG-NAME>" workspaces { name = "state-migration" } }}

Copie

substitua os valores de atributo da organização e dos espaços de trabalho pelo nome da sua organização do Terraform Cloud e pelo nome do espaço de trabalho desejado. Embora a organização definida na estrofe de back-end já deva existir, o espaço de trabalho não precisa; o Terraform Cloud irá criá-lo, se necessário. Se você optar por usar um espaço de trabalho que já existe, o espaço de trabalho não deve ter nenhum estado existente.

Nota: Se você estiver familiarizado com a execução do Terraform usando a CLI, você pode ter usado espaços de trabalho Terraform. Terraform Cloud workspaces se comportam de maneira diferente do Terraform CLI workspaces. Os espaços de trabalho do Terraform CLI permitem que vários arquivos de Estado existam em um único diretório, permitindo que você use uma configuração para vários ambientes. Os espaços de trabalho do Terraform Cloud contêm tudo o que é necessário para gerenciar um determinado conjunto de infraestrutura e funcionam como diretórios de trabalho separados.

“autenticar com Terraform Cloud

agora que você definiu seu back-end, você deve autenticar com Terraform Cloud para prosseguir com a inicialização. Para autenticar com o Terraform Cloud, execute o subcomando terraform login e siga as instruções para fazer login.

Nota: Se você estiver usando uma versão do Terraform antes de 0.12.21, o comando terraform login não está disponível. Em vez disso, configure um arquivo de configuração CLI para autenticar.

$ terraform loginTerraform will request an API token for app.terraform.io using your browser.If login is successful, Terraform will store the token in plain text inthe following file for use by subsequent commands: /Users/username/.terraform.d/credentials.tfrc.jsonDo you want to proceed? Only 'yes' will be accepted to confirm. Enter a value:

Copie

responda ao prompt de confirmação com um yes.

para obter instruções mais detalhadas sobre como fazer login, consulte o tutorial de login.

“migre o arquivo de Estado

depois de autenticar o back-end remote, você está pronto para migrar seu arquivo de Estado local para o Terraform Cloud. Para iniciar a migração, reinicialize. Isso faz com que o Terraform reconheça sua configuração de back-end alterada.

$ terraform initInitializing the backend...Do you want to copy existing state to the new backend? Pre-existing state was found while migrating the previous "local" backend to the newly configured "remote" backend. No existing state was found in the newly configured "remote" backend. Do you want to copy this state to the new "remote" backend? Enter "yes" to copy and "no" to start with an empty state. Enter a value:

copiar

durante a reinicialização, o Terraform apresenta um prompt dizendo que copiará o arquivo de Estado para o novo back-end. Digite yes e o Terraform migrará o estado de sua máquina local para o Terraform Cloud.

“Configure o espaço de trabalho do Terraform Cloud

depois de migrar seu estado para o Terraform Cloud, faça login na interface do Usuário da web do Terraform Cloud, encontre o nome do seu espaço de trabalho conforme definido em sua configuração de back-end e clique nele. Navegue até a guia “Estados” da área de trabalho e veja sua primeira ação na área de trabalho.

uma visualização da guia "Estados" na área de trabalho do Terraform Cloud

lembre-se de que sua configuração tem uma variável que você precisa adicionar ao newworkspace. Clique na guia ” Variáveis “na área de trabalho e depois em”Adicionar variável”.Digite o nome da variável, name_length, como a chave. Em seguida, insira um newvalue, 5 e salve a variável.

 a guia Variáveis do Terraform Cloud workspace com uma variável adicionada

para configurações do mundo real, adicione credenciais do cloud platform e quaisquer outras variáveis de configuração ao workspace também.

“Inicie uma execução no novo espaço de trabalho

depois de verificar se o estado foi migrado para o espaço de trabalho do Terraform Cloud, remova o arquivo de Estado local.

$ rm terraform.tfstate

Copiar

Aplicar uma nova execução.

$ terraform apply

cópia

Terraform irá transmitir logs do Terraform Cloud e fornecer um link para a execução na interface do usuário do Terraform Cloud. Você define um novo valor para a variável name_length, portanto, o recurso será substituído por um correspondente aos novos parâmetros.

Imagem de uma corrida de espera de confirmação, o log indica que o recurso vai ser substituído

“Próximos passos

Destruir os recursos que você criou para este tutorial clicando primeiro a opção”Configurações” no Terraform Nuvem área de trabalho, selecionando “Destruição andDeletion”, assegurando a “Permitir a destruir os planos de” caixa de verificação está marcada, e thenclicking “Fila de destruir o plano”.

depois que os recursos forem destruídos, retorne à página “destruição e exclusão” e clique em “Excluir do Terraform Cloud” para excluir o espaço de trabalho.

neste tutorial, você migrou um arquivo de Estado de sua máquina local para um espaço de trabalho do Terraform Cloud. Para saber como migrar os arquivos de Estado de vários espaços de trabalho locais ou restringir o acesso do espaço de trabalho a uma equipe específica, consulte a documentação a seguir.

  • Estado de migração de vários espaços de trabalho locais
  • Gerenciando o acesso ao espaço de trabalho

se você tiver um grande número de arquivos de Estado que gostaria de migrar para o Terraform Cloud, considere usar a API do Terraform Cloud para fazer isso. Para obter informações sobre o upload de versões de estado usando a API, consulte a documentação da API de versão de Estado.

Related Post

Leave A Comment