diff --git a/README.md b/README.md index c7e8ba0..d043255 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ # sd-workshop2 2022-1 sd workshop2 -- Completar la lógica de la applicación de pagos de tal manera que al hacer un pago através del microservicio de pagos, el monto de las facturas sea correctamente debitado, es decir, actualmente si una factura debe 1000 y yo hago un pago por 400 a esa factura, el microservicio invoice me sobreescribe el 1000 por 400 en vez de mostrarme el saldo restante 1000-400=600. -- Completar la lógica de la aplicación de tal manera que haya 3 estados para las facturas. 0=debe 1=pagadoparcialmente 2=pagado -- Hacer que las applicaciones se puedan registrar con consul -- Debe ser un pull request a este repositorio sd-workshop2 +Funcionamiento -Bonus: -- Subir las imagenes de la app a Docker hub -- Crear un script en bash que lance toda la aplicación. +- En el Vagranfile se ejecutan n maquinas, cada una con un disco adjunto, y de las cuales una de ellas (master (nodo1)) será dónde se cree el volumen compartido con las otras dos maquinas (node2 y node3). +- Despues de esto se verifica que cada una este creada mientras la ejecucion del vagrant se hace, si no, todavia no inicia los scripts. +- Una vez todo configurado se procede al inicio de los scripts y configuracion. + +Disfrutenlo! diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 0000000..6529d69 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,40 @@ +# -*- 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| + + (1..3).each do |i| + config.vm.define "node#{i}" do |lb| + lb.vm.box ="centos/7" + disk_name = "./disk#{i}.vdi" + node_ip = "192.168.56.1#{i}" + node_hostname = "node#{i}" + + if i == 3 then + node_ip = "192.168.56.200" + end + + lb.vm.hostname = node_hostname + lb.vm.network "private_network", ip: node_ip + lb.vm.provider "virtualbox" do |vb| + vb.customize ["modifyvm", :id, "--memory", "512", "--cpus", "1", "--name", node_hostname] + unless File.exist?(disk_name) + vb.customize ['createhd', '--filename', disk_name, '--variant', 'Fixed', '--size', 5 * 1024] + end + vb.customize ['storageattach', :id, '--storagectl', 'IDE', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', disk_name] + end + lb.vm.provision "shell", path: "scripts/glusterfs.sh" + lb.vm.provision "shell", path: "scripts/configuration.sh" + end +end + + config.trigger.after :up do |trigger| + trigger.run = {path: "scripts/glusterconfig.sh"} + end + +end diff --git a/scripts/configuration.sh b/scripts/configuration.sh new file mode 100644 index 0000000..44c9707 --- /dev/null +++ b/scripts/configuration.sh @@ -0,0 +1,3 @@ +echo "192.168.56.11 node1" >> /etc/hosts +echo "192.168.56.12 node2" >> /etc/hosts +echo "192.168.56.200 node3" >> /etc/hosts diff --git a/scripts/glusterconfig.sh b/scripts/glusterconfig.sh new file mode 100644 index 0000000..4b039af --- /dev/null +++ b/scripts/glusterconfig.sh @@ -0,0 +1,37 @@ +#!/bin/bash + + +if [ $(vagrant status | grep "not created" | wc -l) -ge 1 ]; then + +echo -e "Todavia faltan maquinas para que esten arriba" + +else + +# Definir la ruta base de las máquinas de Vagrant +VAGRANT_DIR="./.vagrant/machines/node" + +# Iterar por cada máquina de Vagrant +for i in {1..3}; do + MACHINE="node$i" + MACHINE_DIR="$VAGRANT_DIR$i/virtualbox" + MACHINE_MASTER="node3" + # Verificar si existe el archivo de llave privada + if [ -f "$MACHINE_DIR/private_key" ]; then + PRIVATE_KEY="$MACHINE_DIR/private_key" + + if [ "$MACHINE_MASTER" = "$MACHINE" ]; then + ssh -i "$PRIVATE_KEY" -o StrictHostKeyChecking=no -y vagrant@192.168.56.200 "sudo gluster peer probe node1; sudo gluster peer probe node2; sudo gluster pool list; sudo gluster volume create gv0 replica 3 node3:/gluster/data/gv0 node1:/gluster/data/gv0 node2:/gluster/data/gv0; sudo gluster volume start gv0; sudo gluster volume status; sudo mount.glusterfs node3:/gv0 /mnt" + else + + ssh -i "$PRIVATE_KEY" -o StrictHostKeyChecking=no -y vagrant@"$MACHINE" "sudo mount.glusterfs localhost:/gv0 /mnt" + + fi + echo "Máquina: $MACHINE" + echo "Llave privada: $PRIVATE_KEY" + echo "" + else + echo "No se encontró la llave privada para la máquina $MACHINE" + fi +done + +fi diff --git a/scripts/glusterfs.sh b/scripts/glusterfs.sh new file mode 100644 index 0000000..36d91f4 --- /dev/null +++ b/scripts/glusterfs.sh @@ -0,0 +1,14 @@ +yum install -y centos-release-gluster +yum install -y glusterfs-server +yum install -y xfsprogs +service glusterd start + +sfdisk /dev/sdb << EOF +; +EOF + +mkfs.xfs /dev/sdb1 +mkdir -p /gluster/data +# echo "/dev/sdb1 /gluster/data xfs default 1 2" >> /etc/fstab +mount /dev/sdb1 /gluster/data/ +#mount -a && mount