Merge pull request #192 from chooper/vagrant11-providers

Fix AWS provisioning with Vagrant
This commit is contained in:
Charles Hooper 2013-03-26 20:18:09 -07:00
commit 00b81936aa
2 changed files with 49 additions and 41 deletions

8
Vagrantfile vendored
View File

@ -25,7 +25,7 @@ def v10(config)
# Assign this VM to a bridged network, allowing you to connect directly to a # Assign this VM to a bridged network, allowing you to connect directly to a
# network using the host's network device. This makes the VM appear as another # network using the host's network device. This makes the VM appear as another
# physical device on your network. # physical device on your network.
# config.vm.network :bridged #config.vm.network :bridged
# Forward a port from the guest to the host, which allows for outside # Forward a port from the guest to the host, which allows for outside
# computers to access the VM, whereas host only networking does not. # computers to access the VM, whereas host only networking does not.
@ -119,10 +119,11 @@ end
aws.keypair_name = ENV["AWS_KEYPAIR_NAME"] aws.keypair_name = ENV["AWS_KEYPAIR_NAME"]
aws.ssh_private_key_path = ENV["AWS_SSH_PRIVKEY"] aws.ssh_private_key_path = ENV["AWS_SSH_PRIVKEY"]
aws.region = "us-east-1" aws.region = "us-east-1"
aws.ami = "ami-1c1e8075" aws.ami = "ami-ae9806c7"
aws.ssh_username = "vagrant" aws.ssh_username = "ubuntu"
aws.instance_type = "t1.micro" aws.instance_type = "t1.micro"
end end
config.vm.provider :rackspace do |rs| config.vm.provider :rackspace do |rs|
config.vm.box = "dummy" config.vm.box = "dummy"
config.vm.box_url = "https://github.com/mitchellh/vagrant-rackspace/raw/master/dummy.box" config.vm.box_url = "https://github.com/mitchellh/vagrant-rackspace/raw/master/dummy.box"
@ -133,6 +134,7 @@ end
rs.flavor = /512MB/ rs.flavor = /512MB/
rs.image = /Ubuntu/ rs.image = /Ubuntu/
end end
config.vm.provider :virtualbox do |vb| config.vm.provider :virtualbox do |vb|
config.vm.box = "quantal64_3.5.0-25" config.vm.box = "quantal64_3.5.0-25"
config.vm.box_url = "http://get.docker.io/vbox/ubuntu/12.10/quantal64_3.5.0-25.box" config.vm.box_url = "http://get.docker.io/vbox/ubuntu/12.10/quantal64_3.5.0-25.box"

View File

@ -1,12 +1,26 @@
class virtualbox { class virtualbox {
Package { ensure => "installed" } Package { ensure => "installed" }
user { "vagrant":
name => "vagrant",
ensure => present,
comment => "Vagrant User",
shell => "/bin/bash",
home => "/home/vagrant",
}
file { "/home/vagrant":
mode => 644,
require => User["vagrant"],
}
# remove some files from the base vagrant image because they're old # remove some files from the base vagrant image because they're old
file { "/home/vagrant/docker-master": file { "/home/vagrant/docker-master":
ensure => absent, ensure => absent,
recurse => true, recurse => true,
force => true, force => true,
purge => true, purge => true,
require => File["/home/vagrant"],
} }
file { "/usr/local/bin/dockerd": file { "/usr/local/bin/dockerd":
ensure => absent, ensure => absent,
@ -23,9 +37,33 @@ class virtualbox {
} }
class ec2 { class ec2 {
user { "vagrant":
name => "ubuntu",
ensure => present,
comment => "Vagrant User",
shell => "/bin/bash",
home => "/home/ubuntu",
}
file { "/home/vagrant":
ensure => link,
target => "/home/ubuntu",
require => User["vagrant"],
}
} }
class rax { class rax {
user { "vagrant":
name => "ubuntu",
ensure => present,
comment => "Vagrant User",
shell => "/bin/bash",
home => "/home/ubuntu",
}
file { "/home/vagrant":
ensure => link,
target => "/home/ubuntu",
require => User["vagrant"],
}
} }
class docker { class docker {
@ -49,43 +87,17 @@ class docker {
$rax_version = inline_template("<%= %x{/usr/bin/xenstore-read vm-data/provider_data/provider} %>") $rax_version = inline_template("<%= %x{/usr/bin/xenstore-read vm-data/provider_data/provider} %>")
if ($ec2_version) { if ($ec2_version) {
$vagrant_user = "ubuntu"
include ec2 include ec2
} elsif ($rax_version) { } elsif ($rax_version) {
$vagrant_user = "vagrant"
include rax include rax
} else { } else {
# virtualbox is the vagrant default, so it should be safe to assume # virtualbox is the vagrant default, so it should be safe to assume
$vagrant_user = "vagrant"
include virtualbox include virtualbox
} }
user { "vagrant":
ensure => present,
comment => "Vagrant User",
shell => "/bin/bash",
home => "/home/vagrant",
groups => [
"sudo",
"vagrant",
"ubuntu",
],
require => [
Group["sudo"],
Group["vagrant"],
Group["ubuntu"],
],
}
group { "ubuntu":
ensure => present,
}
group { "vagrant":
ensure => present,
}
group { "sudo":
ensure => present,
}
file { "/usr/local/bin": file { "/usr/local/bin":
ensure => directory, ensure => directory,
owner => root, owner => root,
@ -112,16 +124,10 @@ class docker {
require => Exec["copy-docker-bin"], require => Exec["copy-docker-bin"],
} }
file { "/home/vagrant":
ensure => directory,
mode => 644,
require => User["vagrant"],
}
file { "/home/vagrant/.profile": file { "/home/vagrant/.profile":
mode => 644, mode => 644,
owner => "vagrant", owner => $vagrant_user,
group => "vagrant", group => "ubuntu",
content => template("docker/profile"), content => template("docker/profile"),
require => File["/home/vagrant"], require => File["/home/vagrant"],
} }