diff --git a/consul/Vagrantfile b/consul/Vagrantfile index 28cccdd..e3aee59 100644 --- a/consul/Vagrantfile +++ b/consul/Vagrantfile @@ -22,21 +22,21 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.ssh.insert_key = false # Iterate through entries in YAML file to create VMs - servers.each do |servers| - config.vm.define servers["name"] do |srv| + servers.each do |server| + config.vm.define server["name"] do |srv| # Don't check for box updates srv.vm.box_check_update = false # Specify hostname and Vagrant box - srv.vm.hostname = servers["name"] - srv.vm.box = servers["box"] + srv.vm.hostname = server["name"] + srv.vm.box = server["box"] # Assign an additional static private network - srv.vm.network "private_network", ip: servers["priv_ip"] + srv.vm.network "private_network", ip: server["priv_ip"] # Specify default synced folder; requires VMware Tools - srv.vm.synced_folder ".", "/vagrant" + srv.vm.synced_folder ".", "/vagrant", disabled: true # Provision consul to the VMs srv.vm.provision "shell", path: "consul.sh" @@ -47,15 +47,15 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| # Configure VMs with RAM and CPUs per settings in servers.yml srv.vm.provider :vmware_fusion do |vmw| - vmw.vmx["memsize"] = servers["ram"] - vmw.vmx["numvcpus"] = servers["vcpu"] + vmw.vmx["memsize"] = server["ram"] + vmw.vmx["numvcpus"] = server["vcpu"] end # srv.vm.provider vmware_fusion # Configure VMs with RAM and CPUs per settings in servers.yml srv.vm.provider :vmware_appcatalyst do |vmw| - vmw.vmx["memsize"] = servers["ram"] - vmw.vmx["numvcpus"] = servers["vcpu"] - end # srv.vm.provider vmware_fusion + vmw.vmx["memsize"] = server["ram"] + vmw.vmx["numvcpus"] = server["vcpu"] + end # srv.vm.provider vmware_appcatalyst end # config.vm.define end # servers.each end # Vagrant.configure diff --git a/consul/consul.sh b/consul/consul.sh index bbd0ae3..f8103e0 100644 --- a/consul/consul.sh +++ b/consul/consul.sh @@ -4,19 +4,40 @@ sudo apt-get update # Install unzip package, needed to decompress Consul download +export DEBIAN_FRONTEND=noninteractive sudo apt-get -y install unzip -# Get Consul download -wget https://dl.bintray.com/mitchellh/consul/0.4.1_linux_amd64.zip +# Download and install Consul binary, if needed +if [[ ! -e /usr/local/bin/consul ]];then -# Decompress and remove Consul download -unzip 0.4.1_linux_amd64.zip -rm 0.4.1_linux_amd64.zip + # Download Consul + curl -kLO https://dl.bintray.com/mitchellh/consul/0.5.2_linux_amd64.zip -# Move Consul binary to location in path -sudo mv consul /usr/local/bin/ + # Decompress and remove Consul download + unzip 0.5.2_linux_amd64.zip + rm 0.5.2_linux_amd64.zip -# Create directories needed by Consul -sudo mkdir -p /etc/consul.d/{bootstrap,server} -sudo chmod -R a+rw /etc/consul.d/ + # Move Consul binary to location in path + sudo mv consul /usr/local/bin/ +fi +# Create consul user +useradd -M -d /var/consul -r -s /usr/bin/nologin consul + +# Create and configure Consul working directory +sudo mkdir -p /var/consul +if [ -d /var/consul ]; then + sudo chown -R consul:consul /var/consul +fi + +# Create and configure Consul configuration directories +sudo mkdir -p /etc/consul.d/server +if [ -d /etc/consul.d ]; then + sudo chown -R root:consul /etc/consul.d +fi + +# Move files into the correct locations +sudo mv /home/vagrant/consul.conf /etc/init/consul.conf +sudo chown root:root /etc/init/consul.conf +sudo mv /home/vagrant/config.json /etc/consul.d/server/config.json +sudo chown root:consul /etc/consul.d/server/config.json diff --git a/consul/servers.yml b/consul/servers.yml index ebe79e9..3f2907f 100644 --- a/consul/servers.yml +++ b/consul/servers.yml @@ -4,13 +4,13 @@ ram: "512" vcpu: "1" priv_ip: 192.168.1.101 -- name: consul-02 - box: slowe/ubuntu-trusty-x64 +- name: "consul-02" + box: "slowe/ubuntu-trusty-x64" ram: "512" vcpu: "1" priv_ip: 192.168.1.102 -- name: consul-03 - box: slowe/ubuntu-trusty-x64 +- name: "consul-03" + box: "slowe/ubuntu-trusty-x64" ram: "512" vcpu: "1" priv_ip: 192.168.1.103