aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/.gitignore3
-rw-r--r--doc/Makefile12
-rw-r--r--doc/main.tex230
3 files changed, 245 insertions, 0 deletions
diff --git a/doc/.gitignore b/doc/.gitignore
new file mode 100644
index 0000000..19ef4e0
--- /dev/null
+++ b/doc/.gitignore
@@ -0,0 +1,3 @@
+*.aux
+*.log
+*.pdf \ No newline at end of file
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..4d7c6f7
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,12 @@
+LATEX = pdflatex
+MAIN_SRC = main.tex
+SRC != find * -name *.tex
+MAIN_PDF = ${MAIN_SRC:.tex=.pdf}
+
+osmnode.pdf: ${SRC}
+ ${LATEX} ${MAIN_SRC}
+ ${LATEX} ${MAIN_SRC}
+ mv ${MAIN_PDF} $@
+
+clean:
+ @rm *.aux *.log *.pdf
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}