Creació de màquines

🏗️ Desplegament de la infraestructura amb Vagrant

🌍 Estructura General del Desplegament

Per desplegar la infraestructura, s’ha fet servir Vagrant en la majoria de màquines virtuals per automatitzar la creació i configuració. Això permet una gestió més ràpida, escalable i professional.

Avantatges d’usar Vagrant:

  • Creació de màquines de manera automàtica i sense errors humans.
  • Configuració prèvia de xarxes, serveis i programari necessari.
  • Facilitat per reproduir el mateix entorn en diferents sistemes.

📌 EXCEPCIÓ:

  • Windows 10 i Ubuntu Mate s’han creat manualment per poder documentar el procés en detall. Això és important per demostrar el desplegament manual i veure les diferències amb l’automatització de Vagrant.

🏠 Estructura de les Màquines Virtuals

📌 Xarxa de servidors (192.168.1.0/26)

  • 🖥️ Windows Server 2019 (192.168.1.10) → Active Directory i proves d’entorn corporatiu.
  • 🐧 Debian 12 (Servidor DHCP) (192.168.1.20) → Assignació d’IP estàtiques a la xarxa de servidors.

📌 Xarxa de clients (192.168.2.0/25)

  • 💻 Rocky Linux 9 (192.168.2.20) → Simulació d’un client empresarial Linux.
  • 🖥️ Ubuntu Mate (192.168.2.30) → Creat manualment per documentació.

📌 Xarxa de laboratori (192.168.3.0/27)

  • 🏗️ Windows 11 (192.168.3.15) → Creat manualment per documentació.
  • 💻 Windows 10 (192.168.3.10) → Proves amb sistemes Windows en un entorn aïllat.

📌 Router (Debian 12) (192.168.1.1, 192.168.2.1, 192.168.3.1)

  • 📡 Gestió del trànsit entre xarxes.
  • 🌍 Configuració de NAT per accés a Internet.
  • 🚦 Assignació de rutes per garantir la connectivitat entre màquines.

⚙️ Configuració Automàtica amb Vagrant

Per totes les màquines creades amb Vagrant, s’ha utilitzat un Vagrantfile que defineix:

Assignació de recursos (RAM, CPU).
Configuració de xarxes privades per tenir IPs fixes.
Provisionament → Instal·lació de programari i configuracions automàtiques.

👀 Exemple de configuració d’una màquina en Vagrantfile:

Vagrant.configure("2") do |config|
config.vm.box = "generic/debian12"
config.vm.network "private_network", ip: "192.168.1.20"
config.vm.provider "virtualbox" do |vb|
vb.memory = "1024"
vb.cpus = 2
end
config.vm.provision "shell", inline: <<-SHELL
apt update && apt install -y isc-dhcp-server
SHELL

end
 

📌 Cada màquina creada amb Vagrant segueix aquesta estructura, ajustant-se segons les necessitats.


🔗 Connexió entre màquines

Per garantir que totes les màquines es puguin comunicar correctament, s’ha configurat:

🔹 Xarxes privades estàtiques perquè cada màquina tingui una IP fixa.
🔹 Rutes internes al router perquè cada xarxa pugui veure les altres.
🔹 Firewall i regles d’accés perquè el trànsit sigui segur.

🚀 Totes les màquines poden connectar-se per SSH i RDP per a una gestió remota fàcil.


🏆 Conclusió

Amb aquest desplegament:
✅ S’ha creat una xarxa estructurada i separada per funcionalitats.
Les màquines principals s’han creat amb Vagrant per un desplegament eficient.
Windows 11 i Ubuntu Mate s’han creat manualment per documentació i proves detallades.
Els clients poden comunicar-se amb els servidors i viceversa.
Totes les màquines són accessibles per SSH o RDP, facilitant la gestió remota.

🔥 Això ens proporciona un entorn de proves totalment funcional, professional i escalable! 🚀

Instalació Ubuntu Mate

Instalació Windows 10

📜 Anàlisi del Vagrantfile

El Vagrantfile conté la configuració de totes les màquines virtuals del nostre entorn. A continuació, es detallen les parts principals del codi i el seu propòsit.

📌 Estructura General

El fitxer segueix aquesta estructura:

1️⃣ Definició de la versió de Vagrant

ruby
 
Vagrant.configure("2") do |config|

Això indica que estem fent servir la versió 2 del Vagrantfile.

2️⃣ Definició de les màquines virtuals
Cada màquina es defineix amb config.vm.define "nom" i conté la seva configuració específica.

3️⃣ Configuració del provisionament
Mitjançant config.vm.provision "shell" s’executen ordres durant la creació de la màquina, com la instal·lació de programari o configuracions de xarxa.


🏠 Explicació de les Màquines Virtuals

🌍 Router (Debian 12)

📌 Funció: Actua com a distribuïdor de xarxa i servidor DHCP per assignar IPs automàticament.

ruby
 
config.vm.define "router" do |router|
router.vm.box = "debian/bookworm64"
router.vm.hostname = "router"
  • Sistema Operatiu: Debian 12 (Bookworm).
  • Hostname: router.
  • Xarxes configurades:
    • 192.168.1.1/26 → Xarxa de servidors.
    • 192.168.2.1/25 → Xarxa de clients.
    • 192.168.3.1/27 → Xarxa de laboratori.

📌 Configuració de NAT i DHCP

ruby
 
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • Activa el reenvio d’IP per permetre la comunicació entre xarxes.
  • Configura iptables per gestionar el trànsit de xarxa.
  • Configura ISC DHCP Server perquè la xarxa de servidors tingui IPs dinàmiques.

🏢 Servidor Windows 2019

📌 Funció: Servidor empresarial amb Active Directory i eines d’administració.

ruby
 
config.vm.define "server-w2k19" do |server|
server.vm.box = "StefanScherer/windows_2019"
server.vm.hostname = "server-w2k19"
server.vm.network "private_network", ip: "192.168.1.10"
  • Sistema Operatiu: Windows Server 2019.
  • Assigna IP 192.168.1.10 a la xarxa de servidors.

📌 Instal·lació d’eines amb Chocolatey

ruby
 
Set-ExecutionPolicy Bypass -Scope Process -Force
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
choco install -y sysinternals
  • Instal·la Chocolatey, un gestor de paquets per Windows.
  • Afegeix eines d’administració amb Sysinternals.

🐧 Servidor Debian 12

📌 Funció: Servidor bàsic amb accés SSH i eines d’administració.

ruby
 
config.vm.define "server-debian" do |server|
server.vm.box = "debian/bookworm64"
server.vm.hostname = "server-debian"
server.vm.network "private_network", ip: "192.168.1.11"

📌 Instal·lació d’eines bàsiques

ruby
 
apt update && apt install -y nano net-tools openssh-server ufw
systemctl enable --now ssh
ufw allow OpenSSH
  • Instal·la nano, net-tools, i SSH Server.
  • Habilita el firewall UFW i permet connexions SSH.

💻 Client Rocky Linux 9

📌 Funció: Simulació d’un client Linux empresarial.

ruby
 
config.vm.define "client-rocky9" do |client|
client.vm.box = "generic/rocky9"
client.vm.hostname = "client-rocky9"
client.vm.network "private_network", ip: "192.168.2.20"

📌 Instal·lació de paquets bàsics

ruby
 
sudo dnf install -y epel-release
sudo dnf install -y nano net-tools openssh-server
  • Afegeix repositoris EPEL i instal·la eines bàsiques.

🖥️ Client Ubuntu Mate

📌 Funció: Client Linux gràfic per proves i documentació.

ruby
config.vm.define "client-ubuntu-mate" do |client|
client.vm.box = "cxtlabs/vagrant-ubuntu-16.04-mate"
client.vm.hostname = "client-ubuntu-mate"
client.vm.network "private_network", ip: "192.168.2.21"

📌 Instal·lació de paquets

ruby
sudo apt update && sudo apt install -y nano net-tools openssh-server
  • Instal·la eines bàsiques i permet connexió remota per SSH.

🎯 Conclusió

🔹 Aquest Vagrantfile permet crear una infraestructura totalment automatitzada amb servidors i clients interconnectats.
🔹 Cada màquina té un propòsit específic, i la seva configuració està ben definida.
🔹 L’ús de Vagrant redueix temps de desplegament, facilita la gestió i evita errors.
🔹 Windows 10 i Ubuntu Mate es van crear manualment per documentació i comparació amb l’automatització.

📜Vagrantfile FInal.

Vagrant.configure(“2”) do |config|
  # Configuración del Router
  config.vm.define “router” do |router|
    router.vm.box = “debian/bookworm64”
    router.vm.hostname = “router”

 

    router.vm.network “private_network”, ip: “192.168.1.1”, netmask: “255.255.255.192”
    router.vm.network “private_network”, ip: “192.168.2.1”, netmask: “255.255.255.128”
    router.vm.network “private_network”, ip: “192.168.3.1”, netmask: “255.255.255.224”

 

    router.vm.provision “shell”, inline: <<-SHELL
      # Habilitar reenvío de paquetes IP
      echo “net.ipv4.ip_forward=1” >> /etc/sysctl.conf
      sysctl -p
     
      # Configurar NAT con iptables
      iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
     
      # Instalar y configurar DHCP para la red de servidores
      apt update && apt install -y isc-dhcp-server
      echo ‘INTERFACESv4=”eth1″‘ > /etc/default/isc-dhcp-server

 

      cat > /etc/dhcp/dhcpd.conf <<EOL
      default-lease-time 600;
      max-lease-time 7200;
      subnet 192.168.1.0 netmask 255.255.255.192 {
        range 192.168.1.10 192.168.1.49;
        option routers 192.168.1.1;
        option domain-name-servers 8.8.8.8, 8.8.4.4;
      }
    SHELL
  end

 

  # Configuración del Servidor Windows 2019
  config.vm.define “server-w2k19” do |server|
    server.vm.box = “StefanScherer/windows_2019”
    server.vm.hostname = “server-w2k19”
    server.vm.network “private_network”, ip: “192.168.1.10”
    server.vm.provision “shell”, inline: <<-SHELL
      # Instalar Chocolatey y herramientas necesarias
      Set-ExecutionPolicy Bypass -Scope Process -Force
      [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
      iex ((New-Object System.Net.WebClient).DownloadString(‘https://community.chocolatey.org/install.ps1’))
      choco install -y sysinternals
    SHELL
  end

 

  # Configuración del Servidor Debian 12
  config.vm.define “server-debian” do |server|
    server.vm.box = “debian/bookworm64”
    server.vm.hostname = “server-debian”
    server.vm.network “private_network”, ip: “192.168.1.11”
    server.vm.provision “shell”, inline: <<-SHELL
      # Instalar herramientas básicas
      apt update && apt install -y nano net-tools openssh-server ufw
      systemctl enable –now ssh
      ufw allow OpenSSH
    SHELL
  end

 

  # Configuración del Cliente Rocky 9
  config.vm.define “client-rocky9” do |client|
    client.vm.box = “generic/rocky9”
    client.vm.hostname = “client-rocky9”
    client.vm.network “private_network”, ip: “192.168.2.20”
    client.vm.provision “shell”, inline: <<-SHELL
      # Instalar herramientas básicas
      sudo dnf install -y epel-release
      sudo dnf install -y nano net-tools openssh-server
      systemctl enable –now sshd
    SHELL
  end

 

  # Configuración del Cliente Ubuntu Mate
  config.vm.define “client-ubuntu-mate” do |client|
    client.vm.box = “cxtlabs/vagrant-ubuntu-16.04-mate”
    client.vm.hostname = “client-ubuntu-mate”
    client.vm.network “private_network”, ip: “192.168.2.21”
    client.vm.provision “shell”, inline: <<-SHELL
      # Instalar herramientas básicas
      sudo apt update && sudo apt install -y nano net-tools openssh-server
      systemctl enable –now ssh
    SHELL
  end

 

  # Configuración del Laboratorio Windows 10
  config.vm.define “lab-win10” do |lab|
    lab.vm.box = “gusztavvargadr/windows-10”
    lab.vm.hostname = “lab-win10”
    lab.vm.network “private_network”, ip: “192.168.3.10”
    lab.vm.provision “shell”, inline: <<-SHELL
      # Instalar Chocolatey
      Set-ExecutionPolicy Bypass -Scope Process -Force
      [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
      iex ((New-Object System.Net.WebClient).DownloadString(‘https://community.chocolatey.org/install.ps1’))
    SHELL
  end

 

  # Configuración del Laboratorio Windows 11
  config.vm.define “lab-win11” do |lab|
    lab.vm.box = “gusztavvargadr/windows-11”
    lab.vm.hostname = “lab-win11”
    lab.vm.network “private_network”, ip: “192.168.3.11”
    lab.vm.provision “shell”, inline: <<-SHELL
      # Instalar Chocolatey
      Set-ExecutionPolicy Bypass -Scope Process -Force
      [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
      iex ((New-Object System.Net.WebClient).DownloadString(‘https://community.chocolatey.org/install.ps1’))
    SHELL
  end
end

Leave a Comment