Skip to content

1.1 Plataformes de desenvolupament

Fher edited this page Jul 7, 2023 · 12 revisions

Ubuntu Server 22.04.1 LTS

Odoo és compatible de forma oficial amb sistemes Windows i GNU/Linux, essent Fedora i Ubuntu les distribucions escollides per aquest últim sistema.

Atès que a l'Institut Puig Castellar, desenvolupadors del projecte IMS, es fa servir Ubuntu com a distribució oficial a les aules informàtiques, s'escull aquesta distribució per al desenvolupament i manteniment de l'IMS.

Plataformes de desenvolupament

S'ofereixen diferents plataformes de desenvolupament, a escollir pel desenvolupador.

IsardVDI + LXC/LXD (opció recomanada)

IsardVDI és un servei públic finançat pel Departament d’Educació de la Generalitat de Catalunya i desenvolupat amb tecnologies lliures i gratuïtes per professors i alumnes de l’Escola del Treball.

L'equip de desenvolupadors de l'IMS, com a membres del Departament d'Informàtica de l'Institut Puig Castellar, disposen de comptes d'usuari per a IsardVDI. Aquest servei ofereix màquines al núvol accessibles via VPN i, per tant, accessibles des de qualsevol ubicació. Cal tenir en compte, però, que no disposa d'un sistema de snapshots, però si permet la virtualització niuada i, en conseqüència, es pot combinar IsardVDI amb contenidors LXC/LXD essent aquesta la solució recomanada.

Inici de sessió a IsardVDI

Cal accedir al lloc web d'IsardVDI i introduir les credencials; si no es disposa de credencials, cal demanar-les al cap de departament d'informàtica de l'Institut Puig Castellar.

Crear un escriptori

Un cop dins IsardVDI, es poden crear nous escriptoris de forma senzilla fent servir l'opció disponible a tal efecte:

image

Un cop a dins, cal escollir un nom per a la màquina virtual que es vol crear i escollir-ne la plantilla que es vol fer servir per a crear aquesta nova màquina (la descripció s'agafarà automàticament de la plantilla). Tot i que no és obligatori, es recomana fer servir la plantilla "Ubuntu Server 22.04 LTS" compartida per l'usuari "Fernando Porrino Serrano", que automatitza part de les configuracions que es faran servir per a treballar amb l'IMS:

image

CPU i memòria RAM

IsardVDI permet configurar la quantitat de CPUs i memòria RAM que tindrà disponible la màquina:

image

Els usuaris d'IsardVDI tenen una limitació en la quantitat de CPUs i memòria RAM que poden fer servir, que cal repartir entre les màquines que estiguin engegades al mateix temps. Es considera que les opcions predeterminades respecte de la quantitat de RAM i CPUs és l'apropiada per a treballar amb comoditat, però es pot modificar si es considera adient.

Xarxes

IsardVDI permet configurar diferents targetes de xarxa per a les màquines, essent les recomanades les anomenades “Default”, “Wireguard VPN” i “Personal”:

image

A continuació es detalla el funcionament de les diferents xarxes:

  • Default: és una interfície que només dona accés a internet, les màquines virtuals d’Isard no es poden comunicar entre si fent servir aquesta xarxa.
  • Wireguard VPN: és una interfície que permet comunicar un ordinador personal (el de casa) amb una màquina virtual d’IsardVDI. Més endavant s’explica com.
  • Personal: és una interfície que permet que totes les màquines virtuals d’IsardVDI d’un mateix usuari es puguin comunicar entre si. Cada màquina pot establir una adreça IP fixa i una màscara, que determinarà a quina xarxa es troba i quina visibilitat té amb altres màquines.
  • Puigcastellar1: és una interfície que permet que totes les màquines virtuals d’IsardVDI de diferents usuaris es puguin comunicar entre si. Es pot fer servir una IP fixa o demanar adreça a un servidor DHCP configurant el netplan.
  • PuigcatsellarX: són interfícies similars a Puigcastellar1, però no proveeix de servidor DHCP i cal establir les direccions a mà; les màquines de diferents interfícies no es poden veure entre si.

Cal tenir en compte que els scripts de desplegament preparen les màquines per a treballar amb les interfícies “default” (enp1so), “wireguard vpn” (enp2so) i “personal” (enp3s0) i també inclouen una opció anomenada “dhcp-server” que permet muntar un servidor DHCP sobre la xarxa “personal” (enp3s0); alhora, tots els scripts permeten configurar les màquines amb IP fixa o sol·licitar-la a un servidor DHCP sobre aquesta xarxa.

Script de desplegament

Algunes màquines virtuals, per exemple les que comparteix l'usuari "Fernando Porrino Serrano" i que es recomanen per al desenvolupament de l'IMS si es fa servir IsardVDI, inclouen un script de desplegament que s’executa automàticament durant el primer login:

image

Aquest instal·lador permet configurar automàticament una màquina i deixar-la preparada amb certes aplicacions instal·lades i configurades; aquests són els scripts més comúns:

  • NONE: si esculls aquesta opció, es tancarà l’instal·lador i no farà res, tampoc tornarà a aparèixer en reiniciar la màquina.
  • dhcp-server: munta un servidor DHCP que donarà servei a la xarxa privada que escollis, fent servir la interfície enp3s0 (la que a IsardVDI s’anomena “personal”).
  • ubuntu-server-2204: deixa preparada la màquina actual amb les configuracions bàsiques per a treballar amb Ubuntu Server (ssh, configuracions de xarxa, etc.).
  • ubuntu-desktop-2204: deixa preparada la màquina actual amb les configuracions bàsiques per a treballar amb Ubuntu Desktop (ssh, configuracions de xarxa, etc.).

Configurar el túnel amb Wireguard

La forma més còmoda de treballar amb les màquines d'IsardVDI és fent servir un túnel per a establir una connexió ssh entre la màquina del desenvolupador i la màquina remota d’IsardVDI. Per a fer-ho cal muntar una VPN primer:

  1. Primer cal descarregar el fitxer de configuració del client:

image

  1. Després cal instal·lar l’aplicació wireguard que permet fer connexions amb VPNs pròpies, a Ubuntu es pot fer amb sudo apt install wireguard-tools

  2. Cal moure el fitxer descarregat dins de la carpeta de configuració de wireguard, a Ubuntu es pot fer amb sudo cp isard-vpn.conf /etc/wireguard/

  3. Ara cal activar aquesta nova xarxa virtual a l’inici de la sessió, a Ubuntu és fàcil amb sudo systemctl enable wg-quick@isard-vpn

  4. Finalment, activem la xarxa manualment per no haver de reiniciar, a Ubuntu es pot fer amb:sudo systemctl start wg-quick@isard-vpn

  5. A partir d’aquest moment, es pot veure com es disposa d’una nova targeta de xarxa virtual que ens dona una adreça IP privada amb: ip -c a

  6. Com es pot observar, apareix una xarxa anomenada isard-vdi que fa servir l’adreça 10.0.0.52 (podria variar al teu ordinador):

image

  1. Si es miren les xarxes disponibles a les màquines virtuals d’Isard, ha d'aparèixer també una adreça similar a la interfície enp2s0:

image

  1. Això vol dir que des de la màquina real, és possible connectar-se a la màquina remota amb ssh: ssh [email protected]

  2. Si la màquina virtual d’IsardVDI no mostra aquesta adreça o aquesta interfície, es deu al fet que la configuració no és la correcta. Cal que la xarxa “Wireguard VPN” es trobi activada dins la configuració de la màquina a IsardVDI, en segona posició (perquè quedi identificada dins la màquina virtual com a enp2s0), i que el netplan tingui el DHCP activat per a aquesta targeta. Les plantilles d’IsardVDI que tenen dins la descripció “Scripts de desplegament” ja tenen aquesta configuració, però cal escollir alguna opció d’instal·lació en engegar-les perquè quedin correctament configurades (les opcions “ubuntu-server” o “ubuntu-desktop” són les opcions bàsiques recomanables per a començar a treballar amb màquines netes).

Connectar-se a la màquina virtual

Si s'han seguit els passos del punt anterior, el primer que cal fer és arrencar la màquina virtual:

image

A continuació es poden fer servir diferents visors per a connectar-se a la màquina, el més ràpid de fer servir és el visor de navegador, però el que funciona millor és el visor SPICE (necessita tenir instal·lat un paquet anomenat virt-viewer):

image

El visor mostrarà l'adreça privada de l'ínterfície enp2s0 o pot consultar-se manualment amb la comanda ip -c a. Amb aquesta adreça, és possible connectar-se remotament a la màquina virtual amb la comanda ssh <username>@<ip-address>.

Connexió via SSH sense contrassenya (clau pública)

Si es vol connectar amb SSH sense fer servir cap contrassenya, només cal generar una clau pública (si no s'ha generat cap anteriorment) i enviar-la cap al servidor:

ssh-keygen -t rsa
ssh-copy-id -i $HOME/.ssh/id_rsa.pub <username>@<ip-address>

LXC/LXD sobre una màquina física

Una opció recomanable per a desenvolupar l'IMS són els contenidors, i LXC/LXD és un bon candidat per a Ubuntu donat la seva lleugeresa. A continuació es mostra un breu tutorial d'instal·lació i ús.

Instal·lació de LXC/LXD

sudo apt install lxc

Configuració inicial

lxd init --auto

Crear un contenidor nou

lxc launch ubuntu:22.04 <container-name>

Comprovar l'estat del contenidor

lxc list

Crear un snapshot del contenidor

lxc snapshot <container-name> <snapshot-name>

Restaurar un snapshot del contenidor

lxc restore <container-name> <snapshot-name>

Accedir al contenidor

lxc exec <container-name> -- /bin/bash

Preparar l'accés via SSH

sed -i "s|PasswordAuthentication no|PasswordAuthentication yes|g" /etc/ssh/sshd_config
echo "LoginGraceTime 120" >> /etc/ssh/sshd_config
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "StrictModes yes " >> /etc/ssh/sshd_config
systemctl restart sshd
passwd

VirtualBox sobre una màquina física

VirtualBox ofereix una interfície gràfica que pot resultar més còmoda que la terminal, però que resulta més pesada en la gestió de recursos, donat que es treballa amb màquines virtuals completes i no amb contenidors.

Per a aquest tutorial s'ha fet servir una OVA que inclou un Ubuntu Server 22.04.1 LTS configurat per a acceptar connexions remotes amb SSH.

Importació de la màquina virtual

Primer de tot cal descarregar l'OVA que inclou la màquina virtual amb la qual es vol treballar i importar-la amb VirtualBox:

image

Configuració de la màquina virtual

La màquina virtual ja es troba configurada, però es recomana comprovar que tots els recursos es troben correctament assignats i que els dispositius de xarxa són els correctes:

image

La màquina virtual fa servir la targeta de xarxa de l'amfitrió per a demanar una adreça IP al router per DHCP simulant ser un nou ordinador connectat a la xarxa, perquè això funcioni, cal confirmar que la targeta correcta ha estat seleccionada:

image

De forma predeterminada, la màquina virtual fa servir una CPU i 2GB de RAM, recursos suficients per a treballar amb comoditat, però es poden modificar a voluntat.

Connectar-se a la màquina

Es recomana arrencar la màquina virtual en "mode sense pantalla" per a reduir el consum de recursos:

image

La màquina virtual està preparada per a mostrar la seva adreça IP dins la vista prèvia:

image

Gestió de snapshots

VirtualBox ofereix una interfície gràfica per a crear o restaurar snapshots:

image

Per a crear un nou snapshot, només cal fer servir el botó corresponent (es pot fer en calent amb la màquina virtual en marxa):

image

Per a recuperar un snapshot, cal apagar la màquina, sel·leccionar quin snapshot cal recuperar i prèmer el botó corresponent:

image

Per connectar-se, només cal obrir un terminal i fer servir la comanda "ssh": ssh usuari@<ip-maquina-virtual>

  • Usuari: usuari
  • Contrasenya: usuari

Podman

Una altra plataforma de desenvolupament ràpida de desplegar és podman, que és el substitut de docker. Podman ja es troba als repositoris oficials d'Ubuntu 22.04 i per a instal·lar-lo només cal fer servir el gestor de paquets aptitude: sudo apt install podman

Algunes comandes útils són:

  • Mostra l'estat de tots els contenidors existents a la màquina amfitriona: podman ps -a
  • Mostra els logs del contenidor concret indicat: podman logs nomContenidor
  • Elimina el "pod" i tots els contenidors que hi pertanyen: podman pod rm odb
  • Arrencar un "pod": podman pod start nomContenidor
  • Aturar un "pod": podman pod stop nomContenidor

Crear contenidors i "pods" és senzill però s'entén millor amb un exemple, per aquest motiu es recomana mirar la secció instal·lació d'Odoo amb podman.

Documentació i material de referència