57 lines
1.5 KiB
Bash
Executable File
57 lines
1.5 KiB
Bash
Executable File
#!/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
|