diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c336b6e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +repos/ +.vagrant/ diff --git a/Vagrantfile b/Vagrantfile index ea34184..a1b56f1 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,71 +1,106 @@ # -*- mode: ruby -*- # vi: set ft=ruby : -# All Vagrant configuration is done below. The "2" in Vagrant.configure -# configures the configuration version (we support older styles for -# backwards compatibility). Please don't change it unless you know what -# you're doing. Vagrant.configure("2") do |config| - # The most common configuration options are documented and commented below. - # For a complete reference, please see the online documentation at - # https://docs.vagrantup.com. + config.vm.box = "debian/contrib-jessie64" + config.vm.post_up_message = nil + config.vm.synced_folder ".", "/vagrant", disabled: true - # Every Vagrant development environment requires a box. You can search for - # boxes at https://atlas.hashicorp.com/search. - config.vm.box = "base" + config.vm.define "salt" do |node| + node.vm.hostname = "salt" + node.vm.synced_folder "repos/gvasalt/states", "/srv/salt" + node.vm.synced_folder "repos/gvasalt/pillar", "/srv/pillar" + node.vm.network "private_network", ip: "172.16.4.10" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Disable automatic box update checking. If you disable this, then - # boxes will only be checked for updates when the user runs - # `vagrant box outdated`. This is not recommended. - # config.vm.box_check_update = false + config.vm.define "mq" do |node| + node.vm.hostname = "mq" + node.vm.network "private_network", ip: "172.16.4.20" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Create a forwarded port mapping which allows access to a specific port - # within the machine from a port on the host machine. In the example below, - # accessing "localhost:8080" will access port 80 on the guest machine. - # config.vm.network "forwarded_port", guest: 80, host: 8080 + config.vm.define "syslog" do |node| + node.vm.hostname = "syslog" + node.vm.network "private_network", ip: "172.16.4.30" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Create a private network, which allows host-only access to the machine - # using a specific IP. - # config.vm.network "private_network", ip: "192.168.33.10" + config.vm.define "pgsql" do |node| + node.vm.hostname = "pgsql" + node.vm.synced_folder "repos/gvapgsql", "/srv/gvapgsql" + node.vm.network "private_network", ip: "172.16.4.40" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Create a public network, which generally matched to bridged network. - # Bridged networks make the machine appear as another physical device on - # your network. - # config.vm.network "public_network" + config.vm.define "dns" do |node| + node.vm.hostname = "dns" + node.vm.network "private_network", ip: "172.16.4.50" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Share an additional folder to the guest VM. The first argument is - # the path on the host to the actual folder. The second argument is - # the path on the guest to mount the folder. And the optional third - # argument is a set of non-required options. - # config.vm.synced_folder "../data", "/vagrant_data" + config.vm.define "ldap" do |node| + node.vm.hostname = "ldap" + node.vm.synced_folder "repos/gvaldap", "/srv/gvaldap" + node.vm.network "private_network", ip: "172.16.4.60" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Provider-specific configuration so you can fine-tune various - # backing providers for Vagrant. These expose provider-specific options. - # Example for VirtualBox: - # - # config.vm.provider "virtualbox" do |vb| - # # Display the VirtualBox GUI when booting the machine - # vb.gui = true - # - # # Customize the amount of memory on the VM: - # vb.memory = "1024" - # end - # - # View the documentation for the provider you are using for more - # information on available options. + config.vm.define "file" do |node| + node.vm.hostname = "file" + node.vm.synced_folder "repos/gvafile", "/srv/gvafile" + node.vm.network "private_network", ip: "172.16.4.70" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies - # such as FTP and Heroku are also available. See the documentation at - # https://docs.vagrantup.com/v2/push/atlas.html for more information. - # config.push.define "atlas" do |push| - # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" - # end + config.vm.define "mail" do |node| + node.vm.hostname = "mail" + node.vm.network "private_network", ip: "172.16.4.80" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end - # Enable provisioning with a shell script. Additional provisioners such as - # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the - # documentation for more information about their specific syntax and use. - # config.vm.provision "shell", inline: <<-SHELL - # apt-get update - # apt-get install -y apache2 - # SHELL + config.vm.define "mysql" do |node| + node.vm.hostname = "mysql" + node.vm.synced_folder "repos/gvamysql", "/srv/gvamysql" + node.vm.network "private_network", ip: "172.16.4.90" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end + + config.vm.define "web" do |node| + node.vm.hostname = "web" + node.vm.synced_folder "repos/gvaweb", "/srv/gvaweb" + node.vm.network "private_network", ip: "172.16.4.100" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end + + config.vm.define "service" do |node| + node.vm.hostname = "service" + node.vm.synced_folder "repos/gva", "/srv/gva" + node.vm.network "forwarded_port", guest: 443, host:8443 + node.vm.network "private_network", ip: "172.16.4.110" + node.vm.post_up_message = "Use https://localhost:8443/ to access the gva web interface" + node.vm.provider "virtualbox" do |vb| + vb.memory = "256" + end + end end diff --git a/bootstrap.sh b/bootstrap.sh new file mode 100755 index 0000000..5a20980 --- /dev/null +++ b/bootstrap.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +origdir=$(dirname $(readlink -f $0)) + +mkdir -p repos +for repo in gva gvafile gvaldap gvamysql gvapgsql gvasalt gvaweb; do + if [ ! -d "$origdir/repos/$repo" ]; then + git clone ludogit:$repo "$origdir/repos/$repo" + else + cd "$origdir/repos/$repo" + git fetch --all + cd "$origdir" + fi +done +vagrant up