Olá Guilherme, tudo bem?
Infelizmente, não consegui entender nas configurações do Vagrantfile como que a ferramenta consegue identificar em tempo de execução para qual provider as configurações do ambiente estão relacionados.
Quando digito a seguinte linha de comando
➜ aws git:(master) ✗ vagrant up aws_web
Bringing machine 'aws_web' up with 'aws' provider...
==> aws_web: Warning! The AWS provider doesn't support any of the Vagrant
==> aws_web: high-level network configurations (`config.vm.network`). They
==> aws_web: will be silently ignored.
==> aws_web: Starting the instance...
==> aws_web: Waiting for instance to become "ready"...
==> aws_web: Waiting for SSH to become available...
==> aws_web: Machine is booted and ready for use!
com apenas o nome da máquina (aws_web) ele consegue inferir qual provider está relacionado.
A mesma coisa acontece com o comando para subir do virtualbox (web)
➜ aws git:(master) ✗ vagrant up web
Bringing machine 'web' up with 'virtualbox' provider...
==> web: Checking if box 'ubuntu/bionic64' is up to date...
==> web: Clearing any previously set forwarded ports...
==> web: Clearing any previously set network interfaces...
==> web: Preparing network interfaces based on configuration...
web: Adapter 1: nat
web: Adapter 2: hostonly
==> web: Forwarding ports...
web: 22 (guest) => 2222 (host) (adapter 1)
==> web: Running 'pre-boot' VM customizations...
==> web: Booting VM...
==> web: Waiting for machine to boot. This may take a few minutes...
web: SSH address: 127.0.0.1:2222
web: SSH username: vagrant
web: SSH auth method: private key
Em que momento foram feitos os relacionamentos das configurações da máquina com os seus respectivos providers.
Segue arquivo completo do Vagrantfile
#vagrant plugin install vagrant-aws
#vagrant box add --force dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
#vagrant up aws_web --provider=aws
#vagrant destroy -f aws_web
Vagrant.configure("2") do |config|
config.vm.provider "aws"
config.vm.provider :aws do |aws, override|
#dados do access key
aws.access_key_id = ""
aws.secret_access_key = ""
#a identificacao da AMI, abaixo é Ubuntu 18.04
aws.ami = "ami-0ac019f4fcb7cb7e6"
#nome do security group
aws.security_groups = ['devops-vagrant']
#nome do arquivo pem
aws.keypair_name = "devops-key"
#nome do usuario, no caso do Ubuntu é ubuntu
override.ssh.username = "ubuntu"
#caminho e nome do arquivo pem
override.ssh.private_key_path = "devops-key.pem"
end
#novo ambiente aws_web, agora com puppet
config.vm.define :aws_web do |aws_web_config|
aws_web_config.vm.box = "dummy"
aws_web_config.vm.synced_folder '.', '/vagrant', type: "rsync"
aws_web_config.vm.provider :aws do |aws|
aws.tags = { 'Name' => 'MusicJungle (vagrant)'}
end
aws_web_config.vm.provision "shell", path: "manifests/bootstrap.sh"
aws_web_config.vm.provision "puppet" do |puppet|
puppet.manifest_file = "web.pp"
puppet.synced_folder_type = "rsync"
end
end
config.vm.provider "virtualbox"
config.vm.define :web do |web_config|
#usando ubuntu 18.04
web_config.vm.box = "ubuntu/bionic64"
web_config.vm.network "private_network", ip: "192.168.50.10"
web_config.vm.provisi