Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -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!
40 changes: 40 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions scripts/configuration.sh
Original file line number Diff line number Diff line change
@@ -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
37 changes: 37 additions & 0 deletions scripts/glusterconfig.sh
Original file line number Diff line number Diff line change
@@ -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
14 changes: 14 additions & 0 deletions scripts/glusterfs.sh
Original file line number Diff line number Diff line change
@@ -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