10
respostas

Usando Terraform numa Oracle VM

Ola, boa tarde!

Existe alguma restricao em se usar o terraform numa VM com Linux?

eu tenho usado o Vagrant pra criar uma maquina linux com a imagem "ubuntu/bionic64". Consegui instalar o terraform sem maiores problemas (o mais constante tem sido que qlq arquivo que baixo pela VM tem vindo corrompido, entao eu baixo no meu host e deixo numa pasta compartilhada para ser usado), consigo rodar o terraform init, mas o terraform plan da erro falando que nao consegue completar o handshake.

Tentei utilizar diferentes configuracoes daqui do forum, mas nenhuma funcionou. Minha proxima tentativa eh subir um docker com linux e tentar por la, mas nao estou com muita confianca de que va dar certo porque ha um relato aqui no forum de alguem que fez e teve problemas tb.

Se algum instrutor puder tentar replicar essa configuracao, eu ficaria grato.

Vagrant.configure("2") do |config|
    config.vm.box = "ubuntu/bionic64"

    config.vm.define "terraform_ubuntu" do |terraform|

        terraform.vm.provider "virtualbox" do |vb|
            vb.name = "ubuntu_terraform"
        end

        terraform.vm.network "public_network", ip: "192.168.0.36"

        terraform.vm.provision "shell",
          inline: "apt-get update && \
            apt-get install zip unzip "

    end
end

Obrigado

10 respostas

Olá Samuel, tudo bem? Particularmente não tentei usar o Terraform por dentro de uma máquina virtual, mas você poderia colocar aqui o erro que aconteceu para a gente tentar entender o problema e ver algum solução possível?! Outra coisa, como você está usando uma máquina virtual talvez precise mudar a configuração de rede da máquina para que ela utilize a mesma conexão que a máquina física, no caso usando o tipo de conexão NAT.

Aguardo retorno!

Oi Jonilson, desculpa a demora, eu estou tendo alguns problemas para conseguir montar meu provisionamento todo usando o Vagrant (parece que as vezes a memoria esta corrompida e outras vezes preciso rodar os comandos na mao).

Mas vamos ao erro que encontro com o terraform:

quando rodo terraform init, tudo ok.

vagrant@ubuntu-bionic:/vagrant/terraform$ terraform init

Initializing the backend...

Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 3.0"...
- Installing hashicorp/aws v3.6.0...
- Installed hashicorp/aws v3.6.0 (signed by HashiCorp)

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

ao rodar terraform plan

vagrant@ubuntu-bionic:/vagrant/terraform$ terraform plan

Error: Could not load plugin


Plugin reinitialization required. Please run "terraform init".

Plugins are external binaries that Terraform uses to access and manipulate
resources. The configuration provided requires plugins which can't be located,
don't satisfy the version constraints, or are otherwise incompatible.

Terraform automatically discovers provider requirements from your
configuration, including providers used in child modules. To see the
requirements and constraints, run "terraform providers".

e ate agora sem sucesso para solucionar esse problema.

meu arquivo main.tf

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

resource "aws_instance" "dev" {
  count = 1
  ami = "ami-00ea3ade739217b29"
  instance_type = "t2.micro"
  key_name = "terraform-aws"
  tags = {
    Name = "dev${count.index}"
  }
}

Pode ser que esses problemas com memoria da sua máquina virtual estejam atrapalhando, porque aparentemente o Terraform consegue fazer o download corretamente dos plugins, porém quando vai executar o comando terraform plan ele não encontra os plugins, então o que você pode fazer é executar o comando terraform init e logo em seguida acessar o diretório:

~/.terraform.d/plugins

E verificar se os plugins estão ou não salvos no diretório, esse diretório segundo a comunidade do Terraform é onde os plugins são salvos por padrão.

Verifica isso e fala pra gente o resultado!

Ola Jonilson!

Essa eh a estrutura que eu tenho antes do comando

vagrant@ubuntu-bionic:~$ ls ~/.terraform.d/
checkpoint_cache  checkpoint_signature

e ela continua a mesma apos o terraform init

vagrant@ubuntu-bionic:/vagrant/terraform_files$ terraform init

Initializing the backend...

Initializing provider plugins...
- Using previously-installed hashicorp/aws v3.6.0

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
vagrant@ubuntu-bionic:/vagrant/terraform_files$ ls ~/.terraform.d/
checkpoint_cache  checkpoint_signature

Continuo sem muita ideia de qual pode ser o problema.

Samuel, você poderia testar em outra máquina virtual ou então na sua máquina física, talvez o problema seja que o Terraform não está conseguindo persistir os arquivos na máquina, tenta essa alternativa e fala o resultado!

Oi Jonilson,

para efeitos de estudo eu posso realizar o teste, mas ainda nao resolve meu problema que era criar um provisionamento de uma maquina linux com terraform configurado.

Gostaria de descobrir se alguem mais tem esse problema ao tentar fazer o mesmo que eu fiz.

Samuel, eu acho válido esse tipo de teste porque pode acontecer algo como aconteceu com o Anderson nesse outro tópico, tentamos de diversas formas porém sem sucesso, quando ele fez o teste em uma máquina física diferente funcionou corretamente, porém não conseguimos determinar a causa do problema na máquina que ele estava usando, poderia ser um firewall, um antivírus ou alguma outra aplicação dando algum tipo de conflito. Espero ter explicado motivo de ter pedido que você realizasse o teste em outra máquina virtual e também se possível em outra máquina física.

Claro, no momento eu nao tenho outra maquina que possa testar, mas assim que conseguir eu coloco uma atualizacao do resultado.

Acabei de conseguir instalar um ubuntu 18.10 e testar meu codigo e tudo funcionou normalmente.

Imagino que estou existe algum problema na VM porque venho tendo problemas quando tento instalar outras imagens do Ubuntu nela, mas ainda nao sei a razao disso acontecer.

Que legal que conseguiu identificar o problema, infelizmente também não consigo ti dizer qual é o problema da VM com exatidão. Mas agora você você consegue executar os procedimentos no Ubuntu, e particularmente nessa parte de DevOps sistemas Linux tem mais vantagens.

Espero ter ajudado e bons estudos!