#!/usr/bin/env bash copy_template() { cp -f ../../templates/$1 ./$2 } write_inventory_group() { local fmt="[$1]\n" for ((i=$2; i<$2+$3; i++)) do fmt+="192.168.56.$i\n" done echo -e $fmt >> ./inventory } # Take customer inputs read -p "Klantnaam: " customerName # read -p "IpInt: " ipAddr # read -p "Number of webservers: " numWebserver # read -p "Number of loadbalancers: " numLoadbalancers # read -p "Number of postgresql instances: " numPostgresql ipAddr=15 numWebserver=0 numLoadbalancers=0 numPostgresql=1 # Create customer directory and cd mkdir -p ./customers/$customerName && cd $_ # Copy and fill-in necessary templates copy_template ./Vagrantfile.template ./Vagrantfile sed -i "s/#{customerName}/$customerName/" ./Vagrantfile sed -i "s/#{ipAddr}/$ipAddr/" ./Vagrantfile sed -i "s/#{numWebserver}/$numWebserver/" ./Vagrantfile sed -i "s/#{numLoadbalancers}/$numLoadbalancers/" ./Vagrantfile sed -i "s/#{numPostgresql}/$numPostgresql/" ./Vagrantfile copy_template ./ansible.cfg.template ./ansible.cfg # Generate ansible inventory file. ipOffset=$ipAddr write_inventory_group "webserver" $ipOffset $numWebserver ((ipOffset+=numWebserver)) write_inventory_group "loadbalancer" $ipOffset $numLoadbalancers ((ipOffset+=numLoadbalancers)) write_inventory_group "postgresql" $ipOffset $numPostgresql ((ipOffset+=numPostgresql)) # Generate a new seperate ssh key for the customer mkdir -p ./.ssh/ ssh-keygen -t rsa -b 2048 -f ./.ssh/id_rsa # Provision and configure machines vagrant up ansible-playbook ../../site.yml