From a35f4020a250534e8ed2cd95596aee3eb2094111 Mon Sep 17 00:00:00 2001
From: Alessandro Iezzi <aiezzi@alessandroiezzi.it>
Date: Mon, 14 Jul 2025 21:36:01 +0200
Subject: Commit iniziale

---
 doc/main.tex | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 230 insertions(+)
 create mode 100644 doc/main.tex

(limited to 'doc/main.tex')

diff --git a/doc/main.tex b/doc/main.tex
new file mode 100644
index 0000000..0654a06
--- /dev/null
+++ b/doc/main.tex
@@ -0,0 +1,230 @@
+\documentclass{article}
+
+\usepackage[a4paper, margin=2cm]{geometry}
+\usepackage[italian]{babel}
+
+\title{Installazione di OpenStack Kolla-Ansible su multi-nodo}
+\author{Alessandro Iezzi}
+\date{Luglio 2025}
+
+
+\begin{document}
+
+\maketitle
+
+\begin{abstract}
+L'Installazione di OpenStack Kolla-Ansible su multi-nodo ci si riferisce al
+processo di installazione dei servizi OpenStack su nodi multipli fisici o
+virtuali usando Kolla-Ansible.
+
+Questo approccio permette la distribuzione di vari componenti OpenStack (come
+\emph{Compute}, \emph{Networking} e \emph{Storage}) su differenti nodi,
+migliorando la scalabilità, ridondanza e le performance. Quindi è indicato per
+quegli ambienti di produzione dove tali caratteristiche sono prioritarie.
+\end{abstract}
+
+\section{Architettura all-in-one con Kolla-Ansible}
+In questa sezione si illustra il processo di installazione di OpenStack
+Kolla-Ansible su singolo nodo. Tale procedura è da usare solo per test e
+sviluppo, non è assolutamente consigliato in ambiente di produzione, anche se
+molti dei passaggi qui descritti verranno utilizzati anche per l'installazione
+su multi-nodo.
+
+\subsection{Introduzione}
+Per procedere all'installazione è necessaria una macchina fisica o virtuale
+con:
+\begin{itemize}
+    \item 4 CPU/Core
+    \item 8 GB di RAM
+    \item 60 GB di HDD
+    \item 2 interfacce di rete
+\end{itemize}
+Una delle due interfacce dovrà essere connessa a internet e serve per eseguire
+correttamente l'installazione del sistema operativo e i software necessari.
+
+Se si vuole lavorare su ambiente virtualizzato, si consiglia un'interfaccia di
+rete "bridged" e una "host".
+
+\emph{Si consiglia di lavorare su un'installazione pulita di Ubuntu Server 24.04
+LTS}.
+
+\subsection{Installazione dei pacchetti necessari}
+\paragraph{Preparazione del sistema operativo} Vengono installati i software
+necessari per ospitare Kolla-Ansible.
+\begin{verbatim}
+$ sudo apt-get update
+$ sudo apt-get install git \
+                       python3-dev \
+                       libffi-dev \
+                       gcc \
+                       libssl-dev \
+                       python3-venv \
+                       bridge-utils
+\end{verbatim}
+
+\paragraph{Preparazione della rete} Questa configurazione è solo un punto di
+partenza. Bisogna adattarlo alle proprie esigenze e ai nomi che il sistema
+operativo ha dato ad ogni interfaccia. L'esempio che segue, mostra una
+configurazione con tre interfacce, la prima è una NAT, e le altre due sono
+reti host.
+
+\begin{verbatim}
+network:
+  version: 2
+  renderer: networkd
+  ethernets:
+    ens3:
+      dhcp4: no
+    ens4:
+      dhcp4: no
+    ens5:
+      dhcp4: no
+      addresses: [192.168.200.10/24]
+      routes:
+        - to: 192.168.200.0/24
+          via: 192.168.200.1
+          metric: 100
+
+  bridges:
+    br-nat:
+      interfaces: [ens3]
+      dhcp4: true
+      dhcp4-overrides:
+        route-metric: 50
+      nameservers:
+        addresses: [8.8.8.8, 1.1.1.1]
+      routes:
+        - to: default
+          via: 10.0.2.2
+
+    br-host:
+      interfaces: [ens4]
+      addresses: [192.168.100.10/24]
+      nameservers:
+        addresses: [8.8.8.8]
+      routes:
+        - to: 192.168.100.0/24
+          via: 192.168.100.1
+          metric: 100
+\end{verbatim}
+Per applicare la configurazione di rete:
+\begin{verbatim}
+sudo netplan generate
+sudo netplan apply
+\end{verbatim}
+
+Se l'ambiente prevede più schede di rete, delle quali una sola esce su
+internet, bisonga fare in modo che il sistema esca sempre con quella. Quindi,
+bisognerebbe togliere il default, ad esempio, alla scheda solo host:
+\begin{verbatim}
+sudo ip route del default via 192.168.100.1
+\end{verbatim}
+O impostare una metrica più alta:
+\begin{verbatim}
+sudo ip route del default via 192.168.100.1
+sudo ip route replace default via 192.168.100.1 dev ens4 metric 150
+\end{verbatim}
+
+\paragraph{Preparazione dell'ambiente Python} Il software Ansible e
+Kolla-Ansible sono scritti in Python, quindi, è necessario creare un ambiente
+nel quale verranno installati.
+\begin{verbatim}
+$ python3 -m venv $HOME/python-env
+$ source $HOME/python-env/bin/activate
+$ pip install -U pip
+\end{verbatim}
+
+\paragraph{Installazione di Ansible}
+\begin{verbatim}
+(python-env)$ pip install ansible-core >=2.15
+\end{verbatim}
+\paragraph{Installazione di Kolla-Ansible} Ora si può procedere
+all'installazione di \emph{Kolla-Ansible}. Per farlo, è necessario installarlo
+dai sorgenti da \emph{opendev.org}.
+
+Segue il comando per installare la versione più aggiornata:
+\begin{verbatim}
+(python-env)$ pip install git+https://opendev.org/openstack/kolla-ansible@master
+\end{verbatim}
+
+Segue il comando per installare la versione stabile:
+\begin{verbatim}
+(python-env)$ pip install git+https://opendev.org/openstack/kolla-ansible@stable/2025.1
+\end{verbatim}
+
+\subsection{Preparazione di Kolla-Ansible}
+\begin{verbatim}
+(python-env)$ sudo mkdir -p /etc/kolla
+(python-env)$ sudo chown $USER:$USER /etc/kolla
+
+(python-env)$ cp -r $HOME/python-env/share/kolla-ansible/etc_examples/kolla/* /etc/kolla/
+
+(python-env)$ kolla-ansible install-deps
+(python-env)$ kolla-genpwd
+\end{verbatim}
+
+\subsection{Configurazione di Kolla}
+\begin{verbatim}
+$ nano /etc/kolla/globals.yml
+\end{verbatim}
+In questo file, si vano a cambiare alcune configurazioni:
+\begin{verbatim}
+kolla_base_distro: "ubuntu"
+network_interface: "br-nat"                  # la rete NAT
+neutron_external_interface: "br-host"        # la rete host (non deve avere una rotta che la farebbe uscire su internet, io ho rimosso il default)
+kolla_internal_vip_address: "10.0.2.100"
+\end{verbatim}
+Poi, creare il file \verb|~/.ansible.cfg|:
+\begin{verbatim}
+$ touch ~/.ansible.cfg
+\end{verbatim}
+Ed inserire le seguenti configurazioni che serviranno a far chiedere la
+password quando Ansible cercherà di fare \verb|sudo|:
+\begin{verbatim}
+[privilege_escalation]
+become = True
+become_method = sudo
+become_ask_pass = True
+\end{verbatim}
+A questo punto è consigliabile eseguire uno snapshot.
+
+\subsection{Deploy all-in-one}
+Eseguire i seguenti comandi per installare docker:
+\begin{verbatim}
+(python-env)$ pip install docker
+(python-env)$ sudo apt-get install libdbus-1-dev libdbus-glib-1-dev pkg-config
+(python-env)$ pip install dbus-python
+\end{verbatim}
+Successivamente, eseguire i seguenti comandi per completare l'installazione:
+\begin{verbatim}
+(python-env)$ kolla-ansible bootstrap-servers \
+                  -i $HOME/python-env/share/kolla-ansible/ansible/inventory/all-in-one
+
+(python-env)$ kolla-ansible prechecks \
+                  -i $HOME/python-env/share/kolla-ansible/ansible/inventory/all-in-one
+
+(python-env)$ kolla-ansible deploy \
+                  -i $HOME/python-env/share/kolla-ansible/ansible/inventory/all-in-one
+\end{verbatim}
+Eseguire un ulteriore snapshot.
+
+\subsection{Installazione di OpenStack CLI}
+\begin{verbatim}
+(python-env)$ pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/master
+\end{verbatim}
+
+\subsection{Accesso all'interfaccia Horizon}
+Nel caso in cui si utilizza un NAT, per accedere all'interfaccia horizon è
+necessario fare port forwarding su qemu.
+
+\begin{verbatim}
+URL:      http://localhost
+username: admin
+pasword:  vedere /etc/kolla/passwords.yml
+
+$ grep 'keystone_admin_password' /etc/kolla/passwords.yml
+\end{verbatim}
+
+\section{Architettura multi-nodo con Kolla-Ansible}
+
+\end{document}
-- 
cgit v1.2.3

