1. Stefan Saasen
  2. spinu12

Commits

Nicola Paolucci  committed 3d14788

Vagrant setup for Atlassian Stash

  • Participants
  • Parent commits dfc484f
  • Branches stash

Comments (0)

Files changed (6)

File .gitmodules

View file
  • Ignore whitespace
+[submodule "modules/apt"]
+	path = modules/apt
+	url = git://github.com/puppetlabs/puppetlabs-apt.git
+[submodule "modules/stdlib"]
+	path = modules/stdlib
+	url = git://github.com/puppetlabs/puppetlabs-stdlib.git

File README.md

View file
  • Ignore whitespace
-# Vagrant setups for development
+# Vagrant setup for Atlassian Stash
 
-These are the 2012 Vagrant configurations for my development virtual machines. Explore branches for various setups.
+http://www.atlassian.com/software/stash/overview
 
 ## Install with
 
+- Install Vagrant: http://www.vagrantup.com
+
+- Execute:
+
     vagrant box add base http://files.vagrantup.com/precise32.box
 
-    git clone https://github.com/durdn/spinu12.git
-    
-    cd spinu12
+    git clone https://github.com/durdn/spinu12.git stash
+
+    cd stash
+
+    git co -b stash origin/stash
     
     vagrant up
     
 ## Enjoy with
 
-    vagrant ssh
+    cd /vagrant
+
+    STASH_HOME=/vagrant/stash-home /vagrant/atlassian-stash-2.0.1/bin/start-stash.sh
+
+Access local browser at http://localhost:7990/setup

File Vagrantfile

View file
  • Ignore whitespace
 # vi: set ft=ruby :
 
 Vagrant::Config.run do |config|
-  # All Vagrant configuration is done here. The most common configuration
-  # options are documented and commented below. For a complete reference,
-  # please see the online documentation at vagrantup.com.
-
-  # Every Vagrant virtual environment requires a box to build off of.
   config.vm.box = "base"
-  config.vm.provision :puppet
-
-  # The url from where the 'config.vm.box' box will be fetched if it
-  # doesn't already exist on the user's system.
-  # config.vm.box_url = "http://domain.com/path/to/above.box"
-
-  # Boot with a GUI so you can see the screen. (Default is headless)
-  # config.vm.boot_mode = :gui
-
-  # Assign this VM to a host-only network IP, allowing you to access it
-  # via the IP. Host-only networks can talk to the host machine as well as
-  # any other machines on the same network, but cannot be accessed (through this
-  # network interface) by any external networks.
-  # config.vm.network :hostonly, "192.168.33.10"
-
-  # 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
-  # physical device on your network.
-  # config.vm.network :bridged
-
-  # Forward a port from the guest to the host, which allows for outside
-  # computers to access the VM, whereas host only networking does not.
-  # config.vm.forward_port 80, 8080
-
-  # Share an additional folder to the guest VM. The first argument is
-  # an identifier, the second is the path on the guest to mount the
-  # folder, and the third is the path on the host to the actual folder.
-  # config.vm.share_folder "v-data", "/vagrant_data", "../data"
-
-  # Enable provisioning with Puppet stand alone.  Puppet manifests
-  # are contained in a directory path relative to this Vagrantfile.
-  # You will need to create the manifests directory and a manifest in
-  # the file base.pp in the manifests_path directory.
-  #
-  # An example Puppet manifest to provision the message of the day:
-  #
-  # # group { "puppet":
-  # #   ensure => "present",
-  # # }
-  # #
-  # # File { owner => 0, group => 0, mode => 0644 }
-  # #
-  # # file { '/etc/motd':
-  # #   content => "Welcome to your Vagrant-built virtual machine!
-  # #               Managed by Puppet.\n"
-  # # }
-  #
-  # config.vm.provision :puppet do |puppet|
-  #   puppet.manifests_path = "manifests"
-  #   puppet.manifest_file  = "base.pp"
-  # end
-
-  # Enable provisioning with chef solo, specifying a cookbooks path, roles
-  # path, and data_bags path (all relative to this Vagrantfile), and adding 
-  # some recipes and/or roles.
-  #
-  # config.vm.provision :chef_solo do |chef|
-  #   chef.cookbooks_path = "../my-recipes/cookbooks"
-  #   chef.roles_path = "../my-recipes/roles"
-  #   chef.data_bags_path = "../my-recipes/data_bags"
-  #   chef.add_recipe "mysql"
-  #   chef.add_role "web"
-  #
-  #   # You may also specify custom JSON attributes:
-  #   chef.json = { :mysql_password => "foo" }
-  # end
-
-  # Enable provisioning with chef server, specifying the chef server URL,
-  # and the path to the validation key (relative to this Vagrantfile).
-  #
-  # The Opscode Platform uses HTTPS. Substitute your organization for
-  # ORGNAME in the URL and validation key.
-  #
-  # If you have your own Chef Server, use the appropriate URL, which may be
-  # HTTP instead of HTTPS depending on your configuration. Also change the
-  # validation key to validation.pem.
-  #
-  # config.vm.provision :chef_client do |chef|
-  #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
-  #   chef.validation_key_path = "ORGNAME-validator.pem"
-  # end
-  #
-  # If you're using the Opscode platform, your validator client is
-  # ORGNAME-validator, replacing ORGNAME with your organization name.
-  #
-  # IF you have your own Chef Server, the default validation client name is
-  # chef-validator, unless you changed the configuration.
-  #
-  #   chef.validation_client_name = "ORGNAME-validator"
+  config.vm.forward_port 7990, 7990
+  config.vm.provision :puppet, :module_path => "modules", :options => "--verbose --debug" do |puppet|
+    puppet.manifests_path = "manifests"
+    puppet.manifest_file  = "default.pp"
+  end
 end

File manifests/default.pp

View file
  • Ignore whitespace
+define append_if_no_such_line($file, $line, $refreshonly = 'false') {
+   exec { "/bin/echo '$line' >> '$file'":
+      unless      => "/bin/grep -Fxqe '$line' '$file'",
+      path        => "/bin",
+      refreshonly => $refreshonly,
+   }
+}
+
 class must-have {
+  include apt
+  apt::ppa { "ppa:webupd8team/java": }
+
   exec { 'apt-get update':
-    command => '/usr/bin/apt-get update'
+    command => '/usr/bin/apt-get update',
+    require => Apt::Ppa["ppa:webupd8team/java"],
   }
 
   package { ["vim",
              "tmux",
              "curl",
              "git-core",
-             "bash"]:
+             "bash",
+             "oracle-java7-installer"]:
     ensure => present,
     require => Exec["apt-get update"],
   }
 
   exec {
+    "accept_license":
+    command => "echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections && echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections",
+    cwd => "/home/vagrant",
+    user => "vagrant",
+    path    => "/usr/bin/:/bin/",
+    before => Package["oracle-java7-installer"],
+    logoutput => true,
+  }
+
+  exec {
     "install_cfg":
     command => "curl -Lks git.io/cfg | HOME=/home/vagrant bash",
     cwd => "/home/vagrant",
     logoutput => true,
     creates => "/home/vagrant/.cfg",
   }
-} 
+
+  exec {
+    "download_stash":
+    command => "curl -L http://www.atlassian.com/software/stash/downloads/binary/atlassian-stash-2.0.1.tar.gz | tar zx",
+    cwd => "/vagrant",
+    user => "vagrant",
+    path    => "/usr/bin/:/bin/",
+    require => Exec["install_cfg"],
+    logoutput => true,
+    creates => "/vagrant/atlassian-stash-2.0.1",
+  }
+
+  exec {
+    "create_stash_home":
+    command => "mkdir -p /vagrant/stash-home",
+    cwd => "/vagrant",
+    user => "vagrant",
+    path    => "/usr/bin/:/bin/",
+    require => Exec["download_stash"],
+    logoutput => true,
+    creates => "/vagrant/stash-home",
+  }
+
+  append_if_no_such_line{ motd:
+    file => "/etc/motd",
+    line => "Run Stash with: STASH_HOME=/vagrant/stash-home /vagrant/atlassian-stash-2.0.1/bin/start-stash.sh"
+  }
+}
 
 include must-have

Submodule modules/apt

  • Ignore whitespace
+Subproject commit 69262bfcb329e3126477f8308fd6057c15161ba6

Submodule modules/stdlib

  • Ignore whitespace
+Subproject commit 2df66c041109ecca1099bf3977657572cc32ad24