Vagrant + Packer + AWS + Virtual box: The box you attempted to add doesn't match the provider you specified.

406 views
Skip to first unread message

Miguel David

unread,
Oct 15, 2016, 4:09:16 PM10/15/16
to Vagrant
Hi,

Firstly apologies if this came up already. I was not able to find it with Google searches.
This is a packer-vagrant mixed issue, so I know that it could be also in packer's group.

What I am trying to do is to use packer to create an AWS instance, provision it (with ansible), generate an AWS AMI and postprocessing would generate a vagrant box.
The whole process runs smoothly, but when I try to vagrant up that box I get "The box you attempted to add doesn't match the provider you specified.".

Here is the relevant code from packer's json:

{
  "variables": {
    ...
  },
  "builders": [
    {
      "type": "amazon-ebs",
      "access_key": "{{user `aws_access_key`}}",
      "secret_key": "{{user `aws_secret_key`}}",
      "region": "{{user `region`}}",
      "source_ami": "{{user `source_ami`}}",
      "instance_type": "{{user `size`}}",
      "ssh_username": "{{user `user`}}",
      "ami_name": "{{user `temp_box`}}",
      "ami_description": "{{user `ami_desc`}}",
      "ami_regions": [
        "eu-west-1",
        "eu-central-1"
      ],
      "associate_public_ip_address": true,
      "force_deregister": true,
      "run_tags": {
        "type": "packertempinstance"
      },
      "tags": {
        "type": "packerimage",
        "tag2": "stuff"
      },
      "temporary_key_pair_name": "{{user `tmp_keypair`}}"
    }
  ],
  "provisioners": [
    {
      "type": "shell",
      "inline": [
        "while [ ! -f /var/lib/cloud/instance/boot-finished ]; do echo 'Waiting for cloud-init...'; sleep 1; done"
      ]
    },
    {
      "type": "shell",
      "execute_command": "echo 'packer' | {{.Vars}} sudo -S -E bash '{{.Path}}'",
      "inline": ["apt install python-minimal aptitude -y"]
    },
    {
      "type": "ansible",
      "playbook_file": "./playbook.yml",
      "groups": ["all", "app"],
      "ssh_host_key_file": "/Users/myuser/.ssh/mykey.pem",
      "extra_arguments": "-v",
      "ansible_env_vars": [ "ANSIBLE_HOST_KEY_CHECKING=False" ]
    },
    {
      "type": "shell",
      "execute_command": "echo 'packer' | {{.Vars}} sudo -S -E bash '{{.Path}}'",
      "script": "cleanup.sh"
    }
  ],
  "post-processors": [
    {
      "type": "vagrant",
      "keep_input_artifact": true,
      "output": "modified-xenial.box"
    }
  ]
}

When the modified-xenial.box is generated I'm adding it as a box:
# vagrant box add mybox `pwd`/modified-xenial.box
And then:
# vagrant init mybox -m

At this point I have a Vagrantfile like this:

$ cat Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.box = "mybox"
  config.vm.box_url = ["file:///Users/myuser/Dev/modified-xenial.box"]
end

However, when I vagrant up it I get this:

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'mybox' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Box file was not detected as metadata. Adding it directly...
==> default: Adding box 'mybox' (v0) for provider: virtualbox
    default: Unpacking necessary files from: file:///Users/myuser/Dev/modified-xenial.box
The box you attempted to add doesn't match the provider you specified.

Provider expected: virtualbox
Provider of box: aws

I understand that the original box was built using AWS's builder from packer, but the postprocessor should generate a vagrant/Virtualbox friendly box, right?

Any help into what I am doing wrong is appreciated.

Cheers,
Miguel

Alvaro Miranda Aguilera

unread,
Oct 15, 2016, 4:18:40 PM10/15/16
to vagra...@googlegroups.com
hello

by default Vagrant up witll try virtualbox.

as you can see here:

Provider expected: virtualbox
Provider of box: aws

try:
vagrant up --provider aws

and make sure you have the aws plugin

vagrant plugin list
vagrant plugin install vagrant-aws

Thanks
Alvaro.

--
This mailing list is governed under the HashiCorp Community Guidelines - https://www.hashicorp.com/community-guidelines.html. Behavior in violation of those guidelines may result in your removal from this mailing list.
 
GitHub Issues: https://github.com/mitchellh/vagrant/issues
IRC: #vagrant on Freenode
---
You received this message because you are subscribed to the Google Groups "Vagrant" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vagrant-up+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vagrant-up/2b502110-c2b5-43a5-8833-32b58d8af338%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
Alvaro

Miguel David

unread,
Oct 15, 2016, 5:56:25 PM10/15/16
to vagra...@googlegroups.com, Alvaro Miranda Aguilera
Hi Alvaro,

Thanks for replying. 

When I do "vagrant up --provider=aws” it tries to create a VM on Amazon’s servers (as expected).
$ vagrant up --provider=aws
Bringing machine 'default' up with 'aws' provider...
==> default: Warning! The AWS provider doesn't support any of the Vagrant
==> default: high-level network configurations (`config.vm.network`). They
==> default: will be silently ignored.
==> default: Warning! You didn't specify a keypair to launch your instance with.
==> default: This can sometimes result in not being able to access your instance.
==> default: Launching an instance with the following settings...
==> default:  -- Type: m3.medium
==> default:  -- AMI: ami-5b49b734
==> default:  -- Region: eu-central-1
==> default:  -- Block Device Mapping: []
==> default:  -- Terminate On Shutdown: false
==> default:  -- Monitoring: false
==> default:  -- EBS optimized: false
==> default:  -- Source Destination check:
==> default:  -- Assigning a public IP address in a VPC: false
==> default:  -- VPC tenancy specification: default
There was an error talking to AWS. The error message is shown...

What I am trying to do is to vagrant up a local virtual machine besides the AWS AMI, not an EC2 instance.

I hope this clears up my goal here. Help?

--
Miguel

To unsubscribe from this group and stop receiving emails from it, send an email to vagrant-up+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/vagrant-up/CAHqq0exY3vGwj%3DYuW5DOnj09yBfZPQtkFxkq-BDYdzKj%3DG_mTA%40mail.gmail.com.

Selenium Framework

unread,
Dec 3, 2016, 9:57:01 PM12/3/16
to Vagrant, migue...@gmail.com
Hi,
I am running into same issue and my expectation is to be able to launch a virtualbox instance from the .box file that got created (because I had a post processor step in packer file). 
If an aws ec2 instance is being created , then why would I need to create a "vagrant/virtualbox" post processor in first place. I already have the ami created right ? Below is my packer template.

Enter code here...{
  "variables": {
    "aws_access_key": "",
    "aws_secret_key": ""
  },
  "builders": [{
    "type": "amazon-ebs",
    "access_key": "{{user `aws_access_key`}}",
    "secret_key": "{{user `aws_secret_key`}}",
    "region": "us-east-1",
    "source_ami": "ami-fce3c696",
    "instance_type": "t2.micro",
    "ssh_username": "ubuntu",
    "ami_name": "packer-example {{timestamp}}"
  }],
  "provisioners": [{
    "type": "shell",
    "inline": [
      "sleep 30",
      "sudo apt-get update",
      "sudo apt-get install -y redis-server"
    ]
  }],
  "post-processors": ["vagrant"]
}



Reply all
Reply to author
Forward
0 new messages