diff options
Diffstat (limited to 'doc/main.tex')
-rw-r--r-- | doc/main.tex | 230 |
1 files changed, 230 insertions, 0 deletions
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} |