Vagrant e AWS – Uma máquina ativa foi encontrada com um provedor diferente

Se você estiver tentando usar outro provedor com sua máquina vagrant atual, provavelmente receberá este erro:

Uma máquina ativa foi encontrada com um provedor diferente. O Vagrant
atualmente permite que cada máquina seja criada com apenas um único
provedor de cada vez. Uma versão futura removerá essa limitação.
Até então, destrua a máquina existente para criar um novo
provedor.

O truque é criar outra máquina, mas configurá-la para não inicializar com a máquina padrão.

config.vm.define "aws", autostart: false do |aws_vm|
end

Agora, esta máquina não iniciará quando você fizer isso vagrant up, mas começará quando você fizer isso vagrant up aws.

Em seguida, você pode adicionar a imagem fictícia para que ela não tente iniciar sua máquina no aws.

aws_vm.vm.box = "dummy"

Então, dentro desse bloco, você pode adicionar os detalhes do seu provedor de aws, e ficaria mais ou menos assim:

config.vm.define "aws", autostart: false do |aws_vm|
aws_vm
.vm.box = "dummy"
aws_vm
.vm.provider :aws do |aws, override|
aws
.access_key_id = "XXXX"
aws
.secret_access_key = "XXXX"
aws
.keypair_name = "XX"
aws
.instance_type = "m3.medium"
aws
.security_groups = ["Vagrant"]

aws
.region = "eu-west-1"

aws
.ami = "ami-f0b11187" // Ubuntu

override.ssh.username = "ubuntu"
override.ssh.private_key_path = "~/XX/XX.pem"
end
end

Agora você pode ter seu VirtuelBox em execução e girar outra caixa idêntica no Amazon EC2 .

Você executa o comando assim:
vagrant up aws --provider=aws

Se você estiver girando uma máquina pela primeira vez no EC2, lembre-se de criar um grupo de segurança que permite a entrada e a saída de ssh e adicione a porta 80 para o tráfego da web.