Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro: terraform apply

Olá a todos. Acompanhei todos os passos da aula 01 do curso Terraform: Automatize a infraestrutura na nuvem: baixei o terraform (Terraform v0.13.2), instalei o AWS CLI e o executei com as minhas Access key ID e Secret access key criadas na AWS, criei um par de chaves locais, copiei o par para C:\User\admin.ssh e importei a chave pública (terraform-aws.pub) para a AWS, criei o arquivo main.tf, executei os comandos ./terraform init e ./terraform plan com sucesso, mas quando tentei executar o comando ./terraform apply, recebi o seguinte erro:

Error: Error launching source instance: InvalidKeyPair.NotFound: The key pair 'terraform-aws' does not exist
        status code: 400, request id: 1a942bcc-f393-4a20-869f-0222cf2b94ea

Segue o meu main .tf:

provider "aws"{
    version = "~> 3.0"
    region  = "us-east-1"
}

resource "aws_instance" "dev" {
    count = 3
    ami = "ami-026c8acd92718196b"
    instance_type = "t2.micro"
    key_name = "terraform-aws"
    tags = {
        Name = "dev${count.index}"
    }
}

A mensagem é clara sobre a não validade da chave, mas o que mais se poderia fazer após seguir todos os passos da aula?

Abraços.

2 respostas

Olá Jullyano, tudo bem? É verdade o erro indica bem o problema, porém você está usando o Windows correto? Então me surgiu algumas dúvidas, como você gerou o par de chaves SSH? Deu algum erro no momento de gerar e importar a chave na AWS?

Outra coisa, você poderia tentar usando a seguinte configuração:

provider "aws"{
    version = "~> 3.0"
    region  = "us-east-1"
}

resource "aws_par_chave" "minhachave" {
  key_name = "minhachave"
  public_key = "${file("caminho_completo_do_arquivo_ssh_privado")}"
}

resource "aws_instance" "dev" {
    count = 3
    ami = "ami-026c8acd92718196b"
    instance_type = "t2.micro"
    key_name = "${aws_par_chave.minhachave.key_name}"
    tags = {
        Name = "dev${count.index}"
    }
}

Fico aguardando retorno!

solução!

Jonilson,

Habilitei o cliente SSH nativo do Windows em Windows -> Configurações -> Recursos Adicionais -> Cliente OpenSSH que permite que se utilize os comandos ssh em um terminal windows. Tal recurso, portanto, permitiu que eu seguisse os seguintes passos no Windows Terminal:

C:\>ssh-keygen.exe -f terraform-aws -t rsa
C:\>mv terraform-aws* C:\Users\admin\.ssh

A importação do par de chaves, bem como os comandos acima, não disparou erro algum.

Segui sua recomendação e alterei o meu main.tf:

provider "aws"{
    version = "~> 3.0"
    region  = "us-east-1"
}

resource "aws_key_pair" "terraform_aws" {
  key_name = "terraform-aws"
  public_key = "${file("C:\\Users\\user\\.ssh\\terraform-aws.pub")}"
}

resource "aws_instance" "dev" {
    count = 3
    ami = "ami-026c8acd92718196b"
    instance_type = "t2.micro"
    key_name = "${aws_key_pair.terraform_aws.key_name}"
    tags = {
        Name = "dev${count.index}"
    }
}

Também obtive sucesso após os comandos:

C:\>.\terraform init && \terraform plan && \terraform apply 

Seguem os resultados:

aws_key_pair.terraform_aws: Creating...
aws_key_pair.terraform_aws: Creation complete after 2s [id=terraform-aws]
aws_instance.dev[0]: Creating...
aws_instance.dev[1]: Creating...
aws_instance.dev[2]: Creating...
aws_instance.dev[2]: Still creating... [10s elapsed]
aws_instance.dev[1]: Still creating... [10s elapsed]
aws_instance.dev[0]: Still creating... [10s elapsed]
aws_instance.dev[1]: Still creating... [20s elapsed]
aws_instance.dev[2]: Still creating... [20s elapsed]
aws_instance.dev[0]: Still creating... [20s elapsed]
aws_instance.dev[0]: Creation complete after 29s [id=i-0e125566a13d5da43]
aws_instance.dev[1]: Still creating... [30s elapsed]
aws_instance.dev[2]: Still creating... [30s elapsed]
aws_instance.dev[1]: Still creating... [40s elapsed]
aws_instance.dev[2]: Still creating... [40s elapsed]
aws_instance.dev[1]: Creation complete after 40s [id=i-0ca16d93a6dd06643]
aws_instance.dev[2]: Creation complete after 40s [id=i-0753fa222eee736a8]

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

Mudei a Região para us-east-1 no meu painei EC2 e encontrei as instâncias criadas pelo Terraform na conta da AWS utilizada.

Agradeço pelo suporte.

Abraços.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software