VRO: Orchestrazione di un Servizio – Parte 1

Creazione delle 3 VM Ubuntu e installazione dei servizi Backend, Frontend e DB

Obiettivo

In questa prima parte della guida descriviamo come creare tre macchine virtuali Ubuntu e configurare ciascuna con i servizi necessari:

  • Frontend: server web statico con HTML
  • Backend: applicazione Node.js con API REST
  • DB01: server PostgreSQL

1. Creazione delle VM Ubuntu

Requisiti minimi per ciascuna VM

Sistema operativo: Ubuntu Server 22.04 LTS

CPU: 1 vCPU

RAM: 1-2 GB

Disco: 10 GB

Scheda di rete: Bridged o NAT (consigliato Bridged)

Nomi e indirizzi IP

VM Nome Host IP
Frontend frontend 192.168.16.151
Backend backend 192.168.16.152
DB01 db01 192.168.16.153

Configurare ogni VM con IP statico via Netplan.

2. Installazione e configurazione del Database (DB01)

Installazione di PostgreSQL

sudo apt update && sudo apt install postgresql -y

Creazione utente e database

sudo -u postgres psql
CREATE DATABASE myapp;
CREATE USER backend_user WITH ENCRYPTED PASSWORD ‘backend_pass’;
GRANT ALL PRIVILEGES ON DATABASE myapp TO backend_user;
\q

3. Installazione del Backend (backend)

sudo apt install nodejs npm -y

Struttura base del progetto

mio-backend/
├── server.js
├── db.js
├── routes/
│ └── users.js
├── package.json

Esempio di server.js

const express = require(‘express’);
const cors = require(‘cors’);
const app = express();

app.use(cors());
app.use(express.json());
const usersRoute = require(‘./routes/users’);
app.use(‘/api/users’, usersRoute);

app.listen(3000, () => {
console.log(‘Server backend in ascolto sulla porta 3000’);
});

Connessione al DB (db.js)

onst { Pool } = require(‘pg’);
const pool = new Pool({
user: ‘backend_user’,
host: ‘192.168.16.153’,
database: ‘myapp’,
password: ‘backend_pass’,
port: 5432,
});

module.exports = pool;

Installazione dipendenze

npm init -y
npm install express cors pg

4. Installazione del Frontend (frontend)

Creazione file index.html

<!DOCTYPE html>
<html>
<head>
<title>Gestione Utenti</title>
<script>
const backendURL = “http://192.168.16.152:3000/api/users”;
async function getUsers() {
const res = await fetch(backendURL);
const users = await res.json();
document.body.innerHTML += JSON.stringify(users);
}
window.onload = getUsers;
</script>
</head>
<body>
<h1>Lista Utenti</h1>
</body>
</html>

Installazione di un web server (es. Apache)

sudo apt install apache2 -y
sudo cp index.html /var/www/html/index.html

Nella prossima parte vedremo come configurare lo switch automatico di rete e IP per scenari di Disaster Recovery (DR) utilizzando Netplan e systemd.