moved ansible inventory generation out of Vagrant
This commit is contained in:
parent
4bb1d838dd
commit
67efc68362
@ -1,6 +1,6 @@
|
|||||||
upstream app {
|
upstream app {
|
||||||
{% for host in groups['webserver'] %}
|
{% for host in groups['webserver'] %}
|
||||||
server {{ hostvars[host]['ipv4_address'] }}:80;
|
server {{ host }}:80;
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,14 +3,24 @@ copy_template() {
|
|||||||
cp -f ../../templates/$1 ./$2
|
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 "Klantnaam: " customerName
|
||||||
mkdir -p ./customers/$customerName && cd $_
|
|
||||||
|
|
||||||
read -p "IpInt: " ipAddr
|
read -p "IpInt: " ipAddr
|
||||||
|
|
||||||
read -p "Number of webservers: " numWebserver
|
read -p "Number of webservers: " numWebserver
|
||||||
read -p "Number of loadbalancers: " numLoadbalancers
|
read -p "Number of loadbalancers: " numLoadbalancers
|
||||||
|
|
||||||
|
# Create customer directory and cd
|
||||||
|
mkdir -p ./customers/$customerName && cd $_
|
||||||
|
|
||||||
|
# Copy and fill-in necessary templates
|
||||||
copy_template ./Vagrantfile.template ./Vagrantfile
|
copy_template ./Vagrantfile.template ./Vagrantfile
|
||||||
sed -i "s/#{customerName}/$customerName/" ./Vagrantfile
|
sed -i "s/#{customerName}/$customerName/" ./Vagrantfile
|
||||||
sed -i "s/#{ipAddr}/$ipAddr/" ./Vagrantfile
|
sed -i "s/#{ipAddr}/$ipAddr/" ./Vagrantfile
|
||||||
@ -19,9 +29,21 @@ sed -i "s/#{numLoadbalancers}/$numLoadbalancers/" ./Vagrantfile
|
|||||||
|
|
||||||
copy_template ./ansible.cfg.template ./ansible.cfg
|
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))
|
||||||
|
|
||||||
|
# Generate a new seperate ssh key for the customer
|
||||||
mkdir -p ./.ssh/
|
mkdir -p ./.ssh/
|
||||||
ssh-keygen -t rsa -b 2048 -f ./.ssh/id_rsa
|
ssh-keygen -t rsa -b 2048 -f ./.ssh/id_rsa
|
||||||
|
|
||||||
ln -s $(realpath ../../playbooks) ./
|
ln -s $(realpath ../../playbooks) ./
|
||||||
|
|
||||||
vagrant up
|
vagrant up
|
||||||
|
ansible-playbook ./playbooks/install_nginx.yml
|
||||||
|
ansible-playbook ./playbooks/install_loadbalancer.yml
|
||||||
|
@ -13,20 +13,9 @@ Vagrant.configure("2") do |config|
|
|||||||
num_webserver = #{numWebserver}
|
num_webserver = #{numWebserver}
|
||||||
num_loadbalancer = #{numLoadbalancers}
|
num_loadbalancer = #{numLoadbalancers}
|
||||||
|
|
||||||
ansible_groups = {
|
|
||||||
"loadbalancer" => [],
|
|
||||||
"webserver" => []
|
|
||||||
}
|
|
||||||
ansible_vars = {}
|
|
||||||
|
|
||||||
(1..num_webserver).each do |nth|
|
(1..num_webserver).each do |nth|
|
||||||
machine_id = "#{customerName}-bloated-debian-web%d" % [nth]
|
machine_id = "#{customerName}-bloated-debian-web%d" % [nth]
|
||||||
ansible_groups["webserver"] << machine_id
|
|
||||||
|
|
||||||
machine_ip = increment_ip()
|
machine_ip = increment_ip()
|
||||||
ansible_vars[machine_id] = {
|
|
||||||
"ipv4_address" => machine_ip
|
|
||||||
}
|
|
||||||
|
|
||||||
config.vm.define machine_id do |web|
|
config.vm.define machine_id do |web|
|
||||||
web.vm.box = "ubuntu/focal64"
|
web.vm.box = "ubuntu/focal64"
|
||||||
@ -40,25 +29,12 @@ Vagrant.configure("2") do |config|
|
|||||||
vb.gui = false
|
vb.gui = false
|
||||||
vb.name = machine_id
|
vb.name = machine_id
|
||||||
end
|
end
|
||||||
|
|
||||||
if nth == num_webserver
|
|
||||||
config.vm.provision "ansible" do |ansible|
|
|
||||||
ansible.playbook = "./playbooks/install_nginx.yml"
|
|
||||||
ansible.groups = ansible_groups
|
|
||||||
ansible.host_vars = ansible_vars
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
(1..num_loadbalancer).each do |nth|
|
(1..num_loadbalancer).each do |nth|
|
||||||
machine_id = "#{customerName}-bloated-debian-lb%d" % [nth]
|
machine_id = "#{customerName}-bloated-debian-lb%d" % [nth]
|
||||||
ansible_groups["loadbalancer"] << machine_id
|
|
||||||
|
|
||||||
machine_ip = increment_ip()
|
machine_ip = increment_ip()
|
||||||
ansible_vars[machine_id] = {
|
|
||||||
"ipv4_address" => machine_ip
|
|
||||||
}
|
|
||||||
|
|
||||||
config.vm.define machine_id do |web|
|
config.vm.define machine_id do |web|
|
||||||
web.vm.box = "ubuntu/focal64"
|
web.vm.box = "ubuntu/focal64"
|
||||||
@ -72,14 +48,6 @@ Vagrant.configure("2") do |config|
|
|||||||
vb.gui = false
|
vb.gui = false
|
||||||
vb.name = machine_id
|
vb.name = machine_id
|
||||||
end
|
end
|
||||||
|
|
||||||
if nth == num_loadbalancer
|
|
||||||
config.vm.provision "ansible" do |ansible|
|
|
||||||
ansible.playbook = "./playbooks/install_loadbalancer.yml"
|
|
||||||
ansible.groups = ansible_groups
|
|
||||||
ansible.host_vars = ansible_vars
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
[defaults]
|
[defaults]
|
||||||
private_key_file = "./.ssh/id_rsa"
|
private_key_file = "./.ssh/id_rsa"
|
||||||
remote_user = "vagrant"
|
remote_user = "vagrant"
|
||||||
inventory = ./.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
|
inventory = ./inventory
|
||||||
|
host_key_checking = False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user