Remote state - Erro #78
Replies: 1 comment
-
Bom dia meu caro @eduardosramos Claro, vamos lá: O Terraform precisa do arquivo de estado (state) para poder saber quando deve criar/alterar/destruir algum recurso no cloud provider. Se você não especificar nenhum backend dentro do bloco terraform, o Terraform vai assumir que você quer salvar o arquivo de state na máquina que está rodando o Terraform (no seu caso, o seu computador/laptop mas poderia ser uma máquina de CI/CD). Exemplo do arquivo de state local (terraform.tfstate): Abaixo o Terraform não está utilizando um backend: terraform {
required_version = "0.14.4"
required_providers {
aws = {
source = "hashicorp/aws"
version = "3.23.0"
}
}
} Com o remote state você seta um backend para ser utilizado pelo Terraform e todos que forem executar aquelas configurações precisam consultar o arquivo de state nesse lugar remoto, ou seja, na nuvem. Dessa forma todos terão acesso ao estado mais recente sempre (existe o lock para garantir que não haja alterações simultâneas no arquivo de state). Terraform utilizando o backend: terraform {
required_version = "0.14.4"
required_providers {
aws = {
source = "hashicorp/aws"
version = "3.23.0"
}
}
backend "s3" {}
} backend.hcl bucket = "tfstate-xxxxxxx"
key = "dev/01-usando-remote-state/terraform.tfstate"
region = "eu-central-1" Como executar o comando terraform init terraform init -backend=true -backend-config="backend.hcl" No exemplo do vídeo existem duas coisas que precisam ser levadas em consideração. A pasta específica para o recurso, no caso um bucket, que será utilizado para armazenar os arquivos de remote states das suas configurações Terraform. Neste passo você poderia muito bem criar o bucket na mão, pois é apenas um recurso e geralmente não precisa de manutenção ou atualização. A segunda pasta é para os recursos que serão criados utilizando esse o local remoto para salvar o arquivo de state. Estrutura das pastas:
A única diferença entre usar um state local e remoto é que o segundo fica na nuvem, de resto é tudo a mesma coisa. No erro que você postou acima me parece que o Terraform está tentando acessar um recurso mas não tem permissão. Você precisa verificar se está passando as configurações corretas para ele. No meu caso específico eu utilizo um profile diferente do padrão, vale verificar se você está passando ou não esse profile (se o seu for default, não precisa passar). Espero que esteja mais claro agora. Abraço. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Bom dia, professor.
Não consegui entender a dinâmica da utilização do remote state por completo. Na aula diz que já iniciou o ec2 conforme ensinamentos das aulas anteriores. No entanto, ao acompanhar passo a passo esta aula não consegui replicar para meu ambiente.
Criei a pasta 01-remote state > dentro dela as demais (preferi ir copiando os códigos na mão para ganhar habilidade) > entrei na pasta 00-remote-state-bucket e criei o bucket (foi sem a pasta dev) > fui em seguida na pasta 01-usando-remote-state e ao iniciar ele pede a região e dá pau:
➜ 01-usando-remote-state terraform init
Initializing the backend...
Backend configuration changed!
Terraform has detected that the configuration specified for the backend
has changed. Terraform will now check for existing state in the backends.
bucket
The name of the S3 bucket
Enter a value: tfstate-xxxxxxxxxxxx
key
The path to the state file inside the bucket
Enter a value: dev/01-usando-remote-state/terraform.tfstate
region
AWS region of the S3 Bucket and DynamoDB Table (if used).
Enter a value: us-east-1
Error: error configuring S3 Backend: error validating provider credentials: error calling sts:GetCallerIdentity: SignatureDoesNotMatch: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
status code: 403, request id: 295c6e9b-df1b-4371-bc92-4d7eca21eb67
Li o erro acima e vi que teria que deletar o .terraform e o lock dele mas não adiantou.
hashicorp/terraform-provider-aws#14873
Há como enviar um passo a passo?
Muito obrigado.
Beta Was this translation helpful? Give feedback.
All reactions