diff options
| author | mo khan <mo@mokhan.ca> | 2015-11-24 21:52:23 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2015-11-24 21:52:23 -0700 |
| commit | bf8ccb65981cc2e731ce7c80cb8761ea9b521cd3 (patch) | |
| tree | a2463a0e90678a4fc4d2bca255cef6600eed5489 | |
| parent | 266e990e560f32d26f0ba1fb59a062cf42a5a138 (diff) | |
add a vagrant recipe.
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | Vagrantfile | 24 | ||||
| -rw-r--r-- | config/chef_apply.rb | 132 |
3 files changed, 158 insertions, 0 deletions
@@ -13,3 +13,5 @@ /tmp vendor/bundle .env +.env.local +.vagrant diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..eab495a --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,24 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# https://docs.vagrantup.com/v2/vmware/kernel-upgrade.html +$fix_vmware_tools_script = <<SCRIPT +sed -i.bak 's/answer AUTO_KMODS_ENABLED_ANSWER no/answer AUTO_KMODS_ENABLED_ANSWER yes/g' /etc/vmware-tools/locations +sed -i 's/answer AUTO_KMODS_ENABLED no/answer AUTO_KMODS_ENABLED yes/g' /etc/vmware-tools/locations +SCRIPT + +Vagrant.configure("2") do |config| + config.vm.box = "phusion/ubuntu-14.04-amd64" + config.vm.network :forwarded_port, guest: 3000, host: 3000 + config.vm.provision :shell, inline: $fix_vmware_tools_script + config.vm.provision :chef_apply do |chef| + chef.recipe = File.read("config/chef_apply.rb") + chef.install = "force" + chef.version = "latest" + end + config.vm.provider :vmware_fusion do |vm| + vm.vmx["memsize"] = "2048" + vm.vmx["numvcpus"] = "2" + end + config.ssh.forward_agent = true +end diff --git a/config/chef_apply.rb b/config/chef_apply.rb new file mode 100644 index 0000000..a73b826 --- /dev/null +++ b/config/chef_apply.rb @@ -0,0 +1,132 @@ +execute "apt-get update -y" +execute "apt-get upgrade -y" + +packages = %w{ + bison + build-essential + curl + exuberant-ctags + flex + g++ + git-core + gperf + libcurl4-openssl-dev + libffi-dev + libfontconfig1-dev + libfreetype6 + libicu-dev + libjpeg-dev + libpng-dev + libreadline-dev + libsqlite3-dev + libssl-dev + libx11-dev + libxext-dev + libxml2-dev + libxslt1-dev + libyaml-dev + memcached + perl + python + python-software-properties + software-properties-common + sqlite3 + unzip + zlib1g-dev +} + +package packages + +phantomjs = "phantomjs-1.9.8-linux-x86_64" +remote_file "/tmp/#{phantomjs}.tar.bz2" do + source "https://bitbucket.org/ariya/phantomjs/downloads/#{phantomjs}.tar.bz2" + action :create +end + +bash "install_phantomjs" do + cwd "/tmp" + not_if { ::Dir.exist?("/usr/local/share/#{phantomjs}") } + code <<-SCRIPT + tar xvjf #{phantomjs}.tar.bz2 + mv #{phantomjs} /usr/local/share + SCRIPT +end + +link "/usr/local/bin/phantomjs" do + to "/usr/local/share/#{phantomjs}/bin/phantomjs" +end + +bash "install postgres" do + user "root" + not_if { ::File.exist?("/etc/apt/sources.list.d/pgdg.list") } + code <<-SCRIPT + echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list + wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc \ + | apt-key add - + apt-get update -y + apt-get install -y postgresql-9.4 libpq-dev \ + postgresql-contrib-9.4 postgresql-client-common + SCRIPT +end + +execute "curl -sL https://deb.nodesource.com/setup | bash -" +package "nodejs" + +sql = "SELECT 1 FROM pg_roles WHERE rolname='vagrant'" +create_user = "createuser -s -e -w vagrant" +execute "psql postgres -tAc \"#{sql}\" | grep -q 1 || #{create_user}" do + user "postgres" +end + +sql = "SELECT 1 FROM pg_roles WHERE rolname='vagrant'" +execute "createdb" do + user "vagrant" + not_if { "psql postgres -tAc \"#{sql}\" | grep -q 1" } +end + +git "/usr/local/rbenv" do + repository "https://github.com/sstephenson/rbenv.git" +end + +file "/etc/profile.d/rbenv.sh" do + content <<-CONTENT +export RBENV_ROOT="/usr/local/rbenv" +export PATH="/usr/local/rbenv/bin:$PATH" +eval "$(rbenv init -)" +CONTENT +end + +directory "/usr/local/rbenv/plugins" +git "/usr/local/rbenv/plugins/ruby-build" do + repository "https://github.com/sstephenson/ruby-build.git" +end + +bash "install_ruby" do + user "root" + not_if { ::File.exist?("/usr/local/rbenv/shims/ruby") } + code <<-EOH +source /etc/profile.d/rbenv.sh +rbenv install 2.2.3 +rbenv global 2.2.3 +EOH +end + +bash "install_bundler" do + user "root" + code <<-EOH +source /etc/profile.d/rbenv.sh +gem install bundler --no-ri --no-rdoc +EOH +end + +execute "cp .env.example .env.local" do + user "vagrant" + cwd "/vagrant" + not_if { ::File.exist?("/vagrant/.env.local") } +end + +["rabbitmq-server", "postgresql"].each do |service_name| + service service_name do + action [:enable, :start] + end +end |
