diff --git a/development/Vagrantfile b/development/Vagrantfile deleted file mode 100644 index 42e1e1c..0000000 --- a/development/Vagrantfile +++ /dev/null @@ -1,92 +0,0 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - -require 'pathname' -BASE_URL = 'http://bit.ly/' -LAST_RELEASE_DATE = '2013-09-28' -LOCAL_BOXES_PATH = Pathname('../boxes/output').expand_path -def lxc_box_url(release_name) - box_name = "vagrant-lxc-#{release_name}-amd64-#{LAST_RELEASE_DATE}" - local_box_file = LOCAL_BOXES_PATH.join("#{box_name}.box") - - local_box_file.exist? ? - local_box_file.to_s : - "#{BASE_URL}/#{box_name}" -end - -BOXES = { - precise: { - lxc_url: lxc_box_url('precise'), - vbox_url: 'http://files.vagrantup.com/precise64.box' - }, - quantal: { - lxc_url: lxc_box_url('quantal'), - vbox_url: 'https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box' - }, - raring: { - lxc_url: lxc_box_url('raring'), - vbox_url: 'http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-amd64-vagrant-disk1.box' - }, - saucy: { - vbox_url: 'http://cloud-images.ubuntu.com/vagrant/saucy/current/saucy-server-cloudimg-amd64-vagrant-disk1.box' - }, - squeeze: { - lxc_url: lxc_box_url('squeeze'), - # https://gist.github.com/henare/1964037 - vbox_url: 'http://dl.dropbox.com/u/174733/debian-squeeze-64.box' - }, - wheezy: { - lxc_url: lxc_box_url('wheezy'), - vbox_url: 'http://puppet-vagrant-boxes.puppetlabs.com/debian-70rc1-x64-vbox4210.box' - }, - sid: { - lxc_url: lxc_box_url('sid'), - } -} - -Vagrant.require_plugin 'vagrant-lxc' -Vagrant.require_plugin 'vagrant-cachier' -Vagrant.require_plugin 'vagrant-pristine' - -Vagrant.configure("2") do |config| - config.vm.synced_folder "../", "/vagrant", id: 'vagrant-root', nfs: true - - config.cache.scope = :machine - - ip_suffix = 30 - BOXES.each do |box_name, box_config| - config.vm.define(box_name.to_sym) do |vm_config| - vm_config.vm.network :private_network, ip: "192.168.50.#{ip_suffix += 1}" - vm_config.vm.box = "#{box_name}64" - - if box_config[:vbox_url] - vm_config.vm.provider :virtualbox do |vb, vb_config| - vb_config.vm.box_url = box_config[:vbox_url] - vb_config.vm.hostname = 'vbox' - - vb.customize [ - "modifyvm", :id, - "--memory", '1536', - "--cpus", '2' - ] - end - end - - if box_config[:lxc_url] - vm_config.vm.provider :lxc do |lxc, lxc_config| - lxc_config.vm.box_url = box_config[:lxc_url] - lxc_config.vm.hostname = 'lxc-dev-box' - - # Required to boot nested containers - lxc.customize 'aa_profile', 'unconfined' unless %w(squeeze wheezy sid).include? box_name.to_s - end - end - end - end - - config.vm.provision :puppet do |puppet| - puppet.manifests_path = "." - puppet.manifest_file = "site.pp" - puppet.options << [ '--verbose', '--debug' ] - end -end diff --git a/development/lxc-configs/lxc-dev-box b/development/lxc-configs/lxc-dev-box deleted file mode 100644 index 36b401d..0000000 --- a/development/lxc-configs/lxc-dev-box +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################### -# This file has the same configs as the built in /etc/default/lxc on Ubuntu, -# we only changed IPs to 10.0.254.* to avoid collision with LXC default 10.0.3.* -# which is likely to be running from the host machine -############################################################################### - - -# MIRROR to be used by ubuntu template at container creation: -# Leaving it undefined is fine -#MIRROR="http://archive.ubuntu.com/ubuntu" -# or -#MIRROR="http://:3142/archive.ubuntu.com/ubuntu" - -# LXC_AUTO - whether or not to start containers symlinked under -# /etc/lxc/auto -LXC_AUTO="true" - -# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your -# containers. Set to "false" if you'll use virbr0 or another existing -# bridge, or mavlan to your host's NIC. -USE_LXC_BRIDGE="true" - -# If you change the LXC_BRIDGE to something other than lxcbr1, then -# you will also need to update your /etc/lxc/lxc.conf as well as the -# configuration (/var/lib/lxc//config) for any containers -# already created using the default config to reflect the new bridge -# name. -# If you have the dnsmasq daemon installed, you'll also have to update -# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. -LXC_BRIDGE="lxcbr0" -LXC_ADDR="10.0.253.1" -LXC_NETMASK="255.255.255.0" -LXC_NETWORK="10.0.253.0/24" -LXC_DHCP_RANGE="10.0.253.2,10.0.253.254" -LXC_DHCP_MAX="253" - -LXC_SHUTDOWN_TIMEOUT=120 diff --git a/development/lxc-configs/sid b/development/lxc-configs/sid deleted file mode 100644 index aeec5c3..0000000 --- a/development/lxc-configs/sid +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################### -# This file has the same configs as the built in /etc/default/lxc on Ubuntu, -# we only changed IPs to 10.0.254.* to avoid collision with LXC default 10.0.3.* -# which is likely to be running from the host machine -############################################################################### - - -# MIRROR to be used by ubuntu template at container creation: -# Leaving it undefined is fine -#MIRROR="http://archive.ubuntu.com/ubuntu" -# or -#MIRROR="http://:3142/archive.ubuntu.com/ubuntu" - -# LXC_AUTO - whether or not to start containers symlinked under -# /etc/lxc/auto -LXC_AUTO="true" - -# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your -# containers. Set to "false" if you'll use virbr0 or another existing -# bridge, or mavlan to your host's NIC. -USE_LXC_BRIDGE="true" - -# If you change the LXC_BRIDGE to something other than lxcbr1, then -# you will also need to update your /etc/lxc/lxc.conf as well as the -# configuration (/var/lib/lxc//config) for any containers -# already created using the default config to reflect the new bridge -# name. -# If you have the dnsmasq daemon installed, you'll also have to update -# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. -LXC_BRIDGE="lxcbr0" -LXC_ADDR="10.0.251.1" -LXC_NETMASK="255.255.255.0" -LXC_NETWORK="10.0.251.0/24" -LXC_DHCP_RANGE="10.0.253.2,10.0.251.254" -LXC_DHCP_MAX="253" - -LXC_SHUTDOWN_TIMEOUT=120 diff --git a/development/lxc-configs/squeeze b/development/lxc-configs/squeeze deleted file mode 100644 index cb65047..0000000 --- a/development/lxc-configs/squeeze +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################### -# This file has the same configs as the built in /etc/default/lxc on Ubuntu, -# we only changed IPs to 10.0.254.* to avoid collision with LXC default 10.0.3.* -# which is likely to be running from the host machine -############################################################################### - - -# MIRROR to be used by ubuntu template at container creation: -# Leaving it undefined is fine -#MIRROR="http://archive.ubuntu.com/ubuntu" -# or -#MIRROR="http://:3142/archive.ubuntu.com/ubuntu" - -# LXC_AUTO - whether or not to start containers symlinked under -# /etc/lxc/auto -LXC_AUTO="true" - -# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your -# containers. Set to "false" if you'll use virbr0 or another existing -# bridge, or mavlan to your host's NIC. -USE_LXC_BRIDGE="true" - -# If you change the LXC_BRIDGE to something other than lxcbr1, then -# you will also need to update your /etc/lxc/lxc.conf as well as the -# configuration (/var/lib/lxc//config) for any containers -# already created using the default config to reflect the new bridge -# name. -# If you have the dnsmasq daemon installed, you'll also have to update -# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. -LXC_BRIDGE="lxcbr0" -LXC_ADDR="10.0.250.1" -LXC_NETMASK="255.255.255.0" -LXC_NETWORK="10.0.250.0/24" -LXC_DHCP_RANGE="10.0.253.2,10.0.250.254" -LXC_DHCP_MAX="253" - -LXC_SHUTDOWN_TIMEOUT=120 diff --git a/development/lxc-configs/vbox b/development/lxc-configs/vbox deleted file mode 100644 index 2d66a5e..0000000 --- a/development/lxc-configs/vbox +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################### -# This file has the same configs as the built in /etc/default/lxc on Ubuntu, -# we only changed IPs to 10.0.254.* to avoid collision with LXC default 10.0.3.* -# which is likely to be running from the host machine -############################################################################### - - -# MIRROR to be used by ubuntu template at container creation: -# Leaving it undefined is fine -#MIRROR="http://archive.ubuntu.com/ubuntu" -# or -#MIRROR="http://:3142/archive.ubuntu.com/ubuntu" - -# LXC_AUTO - whether or not to start containers symlinked under -# /etc/lxc/auto -LXC_AUTO="true" - -# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your -# containers. Set to "false" if you'll use virbr0 or another existing -# bridge, or mavlan to your host's NIC. -USE_LXC_BRIDGE="true" - -# If you change the LXC_BRIDGE to something other than lxcbr1, then -# you will also need to update your /etc/lxc/lxc.conf as well as the -# configuration (/var/lib/lxc//config) for any containers -# already created using the default config to reflect the new bridge -# name. -# If you have the dnsmasq daemon installed, you'll also have to update -# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. -LXC_BRIDGE="lxcbr0" -LXC_ADDR="10.0.254.1" -LXC_NETMASK="255.255.255.0" -LXC_NETWORK="10.0.254.0/24" -LXC_DHCP_RANGE="10.0.254.2,10.0.254.254" -LXC_DHCP_MAX="253" - -LXC_SHUTDOWN_TIMEOUT=120 diff --git a/development/lxc-configs/wheezy b/development/lxc-configs/wheezy deleted file mode 100644 index 233821d..0000000 --- a/development/lxc-configs/wheezy +++ /dev/null @@ -1,37 +0,0 @@ -############################################################################### -# This file has the same configs as the built in /etc/default/lxc on Ubuntu, -# we only changed IPs to 10.0.254.* to avoid collision with LXC default 10.0.3.* -# which is likely to be running from the host machine -############################################################################### - - -# MIRROR to be used by ubuntu template at container creation: -# Leaving it undefined is fine -#MIRROR="http://archive.ubuntu.com/ubuntu" -# or -#MIRROR="http://:3142/archive.ubuntu.com/ubuntu" - -# LXC_AUTO - whether or not to start containers symlinked under -# /etc/lxc/auto -LXC_AUTO="true" - -# Leave USE_LXC_BRIDGE as "true" if you want to use lxcbr0 for your -# containers. Set to "false" if you'll use virbr0 or another existing -# bridge, or mavlan to your host's NIC. -USE_LXC_BRIDGE="true" - -# If you change the LXC_BRIDGE to something other than lxcbr1, then -# you will also need to update your /etc/lxc/lxc.conf as well as the -# configuration (/var/lib/lxc//config) for any containers -# already created using the default config to reflect the new bridge -# name. -# If you have the dnsmasq daemon installed, you'll also have to update -# /etc/dnsmasq.d/lxc and restart the system wide dnsmasq daemon. -LXC_BRIDGE="lxcbr0" -LXC_ADDR="10.0.252.1" -LXC_NETMASK="255.255.255.0" -LXC_NETWORK="10.0.252.0/24" -LXC_DHCP_RANGE="10.0.253.2,10.0.252.254" -LXC_DHCP_MAX="253" - -LXC_SHUTDOWN_TIMEOUT=120 diff --git a/development/site.pp b/development/site.pp deleted file mode 100644 index 15de070..0000000 --- a/development/site.pp +++ /dev/null @@ -1,151 +0,0 @@ -Exec { path => [ '/bin/', '/sbin/' , '/usr/bin/', '/usr/sbin/', '/usr/local/bin'] } - -stage { 'preinstall': - before => Stage['main'] -} - -class apt_get_update { - exec { 'apt-get -y update': - unless => "test -f /etc/default/lxc" - } -} -class { 'apt_get_update': - stage => preinstall -} - -# Because I'm lazy ;) -exec { - 'echo "alias be=\"bundle exec\"" >> /home/vagrant/.bashrc': - unless => 'grep -q "bundle exec" /home/vagrant/.bashrc'; - - 'echo "export VAGRANT_DEFAULT_PROVIDER=lxc" >> /home/vagrant/.bashrc': - unless => 'grep -q "VAGRANT_DEFAULT_PROVIDER" /home/vagrant/.bashrc'; - - 'echo "cd /vagrant" >> /home/vagrant/.bashrc': - unless => 'grep -q "cd /vagrant" /home/vagrant/.bashrc'; -} - -# Overwrite LXC default configs -exec { - 'config-lxc': - # We need to do this otherwise IPs will collide with the host's lxc dhcp server. - # If we install the package prior to setting this configs the container will go crazy. - command => "cp /vagrant/development/lxc-configs/${hostname} /etc/default/lxc" - ; -} - -# Install dependencies -package { - [ 'libffi-dev', 'bsdtar', 'exuberant-ctags', 'ruby1.9.1-dev', 'htop', 'git', - 'build-essential', 'redir', 'curl', 'vim', 'btrfs-tools', 'psmisc' ]: - ensure => 'installed' - ; - - 'lxc': - require => Exec['config-lxc'] - ; - - 'bundler': - ensure => 'installed', - provider => 'gem' - ; -} - -# Upgrade kernel if needed -package { - [ 'linux-image-generic', 'linux-headers-generic' ]: - ensure => 'latest' -} - -# Make sure we can create and boot nested containers -if $hostname == 'vbox' { - package { 'apparmor-utils': } - exec { 'aa-complain /usr/bin/lxc-start': } -} - -# Allow gems to be installed on vagrant user home avoiding "sudo"s -# Tks to http://wiki.railsplayground.com/railsplayground/show/How+to+install+gems+and+non+root+user -file { - '/home/vagrant/gems': - ensure => directory, - owner => 'vagrant', - group => 'vagrant' - ; - - '/home/vagrant/.gemrc': - content => ' ---- -:verbose: true -gem: --no-ri --no-rdoc -:update_sources: true -:sources: -- http://gems.rubyforge.org -- http://gems.github.com -:backtrace: false -:bulk_threshold: 1000 -:benchmark: false -gemhome: /home/vagrant/gems -gempath: -- /home/vagrant/gems -- /var/lib/gems/1.9.1 -' -} -exec { - 'set-gem-paths': - command => 'cat << EOF >> /home/vagrant/.profile -export GEM_HOME=/home/vagrant/gems -export GEM_PATH=/home/vagrant/gems:/var/lib/gems/1.9.1 -export PATH=$PATH:/home/vagrant/gems/bin -EOF', - unless => 'grep -q "GEM_HOME" /home/vagrant/.profile' -} - -# Bundle! -exec { - 'su -l vagrant -c "cd /vagrant && bundle install"': - # We are checking for guard-rspec here but it could be any gem... - unless => 'gem list guard | grep -q rspec', - cwd => '/vagrant', - require => [ - Exec['set-gem-paths'], - File['/home/vagrant/gems', '/home/vagrant/.gemrc'], - Package['bundler'] - ] -} - -# Setup vagrant default ssh key -file { - '/home/vagrant/.ssh': - ensure => directory, - owner => 'vagrant', - group => 'vagrant' -} -exec { - 'download-private-key': - command => 'wget https://raw.github.com/mitchellh/vagrant/master/keys/vagrant -O /home/vagrant/.ssh/id_rsa', - creates => '/home/vagrant/.ssh/id_rsa', - require => File['/home/vagrant/.ssh'], - user => 'vagrant' - ; - - 'wget https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O /home/vagrant/.ssh/id_rsa.pub': - creates => '/home/vagrant/.ssh/id_rsa.pub', - require => File['/home/vagrant/.ssh'], - user => 'vagrant' - ; -} -file { - '/home/vagrant/.ssh/id_rsa': - ensure => 'present', - mode => '0600', - require => Exec['download-private-key'] -} - -# Passwordless sudo wrapper script -file { - '/usr/bin/lxc-vagrant-wrapper': - ensure => 'present', - mode => '0755', - content => "#!/usr/bin/env ruby -exec ARGV.join(' ')" -}