TripleO sta per OpenStack su OpenStack ed è uno dei progetti ufficiali di OpenStack Deployment. L'installazione di un sistema autonomo TripleO può essere un ottimo modo per creare una prova di concetto, un laboratorio domestico o un ambiente su cui imparare per OpenStack. Tuttavia, non è consigliato per un ambiente di produzione.
Esamineremo i passaggi necessari per creare una distribuzione autonoma della versione OpenStack Victoria utilizzando TripleO su CentOS 8. Creeremo quindi i componenti necessari per avviare e connettersi a una macchina virtuale (VM) con successo. Infine, scriveremo uno script per ripulire la distribuzione.
Configurazione pre-distribuzione
Macchina host
Ho usato una macchina RHEL 8.2 per l'host in questo scenario. Potrebbe essere necessario modificare leggermente i passaggi per Fedora o CentOS.
Per sfruttare Cockpit per gestire reti e macchine virtuali, avvia e abilita il servizio, quindi installa cockpit-machines
pacchetto:
sudo systemctl enable --now cockpit.socket
sudo yum install -y cockpit-machines
Controlla se il netfilter
il modulo è caricato nel kernel:
sudo modprobe br_netfilter
Abilita l'inoltro IP IPv4 se non è già caricato:
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
Ricarica sysctl.conf
senza riavviare:
sudo sysctl -p /etc/sysctl.conf
[ I lettori hanno apprezzato anche: Iniziare con le reti software-defined]
Rete
Prima di iniziare, crea una rete autonoma oltre alla rete predefinita. La nuova rete sarà la tua rete di gestione. Puoi adattare quanto segue ai tuoi ambienti:

Crea la rete autonoma
Utilizza 192.168.24.0/24 come rete autonoma. Innanzitutto, crea un standalone.xml
file:
sudo nano /tmp/standalone.xml
<network>
<name>standalone</name>
<forward mode='nat'>
<nat> <port start='1024' end='65535'/>
</nat>
</forward>
<ip address='192.168.24.0' netmask='255.255.255.0'>
</ip>
</network>
Quindi, utilizza virsh
per definire, abilitare e avviare la rete esterna:
sudo virsh net-define /tmp/standalone.xml
sudo virsh net-autostart standalone
sudo virsh net-start standalone
Creazione di VM standalone
Poiché questa distribuzione utilizza una macchina virtuale rispetto a bare metal, è necessario creare una macchina virtuale su cui distribuire il nostro ambiente autonomo.
Le specifiche per la VM sono:
- CentOS 8 (variante rhel8.2)
- 60 GB
- 8 RAM
- 4 CPU
- Rete autonoma
Quando installi CentOS 8 sulla tua macchina virtuale standalone, assicurati di non installare libvirt-tools
e usa un minimo o server installazione. Dovrai anche creare uno stack utente.
Configurazione autonoma
Una volta che TripleO è stato distribuito come sistema autonomo, non sarai in grado di inviare SSH alla VM con la tua password. Per prepararti, devi copiare la tua chiave SSH nello stack utente. Ecco il comando:
ssh-copy-id -i ~/.ssh/<your ssh key> stack@<standalone>
Devi configurare lo stack utente per NOPASSWD in sudo
:
sudo echo "stack ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/stack
sudo chmod 0440 /etc/sudoers.d/stack
La macchina autonoma necessita di un nome di dominio completo (FQDN), che può essere impostato come segue:
sudo hostnamectl set-hostname standalone.example.com
sudo hostnamectl set-hostname standalone.example.com --transient
Aggiorna il tuo sistema e riavvialo se ci sono modifiche al kernel:
sudo yum update -y
sudo reboot
Scarica e installa python-tripleo-repos
RPM da https://trunk.rdoproject.org/centos8/component/tripleo/current/
sudo yum install -y https://trunk.rdoproject.org/centos8/component/tripleo/current/python3-tripleo-repos-<version>.el8.noarch.rpm
sudo -E tripleo-repos -b victoria current
sudo yum install -y python3-tripleoclient
Configura e distribuisci
Configurazione autonoma
Devi creare diversi file di configurazione prima di poter distribuire il tuo ambiente autonomo.
Il primo file è containers-prepare-parameters.yaml
file, che verrà utilizzato per estrarre i contenitori. Usa il client TripleO per creare un file di base:
OpenStack tripleo container image prepare default --local-push-destination --output-env-file containers-prepare-parameters.yaml
Successivamente, aggiorna la push_destination falso e lo spazio dei nomi da tirare da quay.io:
nano containers-prepare-parameters.yaml
push_destination: false
namespace: quay.io/tripleovictoria
Quindi, configura le impostazioni di rete utilizzando un'unica configurazione NIC. Prima di procedere, devi determinare l'interfaccia della tua rete autonoma è acceso. Tieni presente che l'interfaccia potrebbe non essere ancora configurata, quindi sarà l'interfaccia senza IP.
ip addr
Per riutilizzare i parametri durante la configurazione di standalone_parameters.yaml
e quindi l'installazione, esportare i parametri nel buffer come segue:
export IP=192.168.24.2
export VIP=192.168.25.2
export NETMASK=24
export GATEWAY=192.168.24.1
export INTERFACE=<interface>
Ora crea il standalone_parameters.yaml
file utilizzando cat:
cat <<EOF > $HOME/standalone_parameters.yaml
parameter_defaults:
CloudName: $IP
# default gateway
ControlPlaneStaticRoutes:
- ip_netmask: 0.0.0.0/0
next_hop: $GATEWAY
default: true
Debug: true
DeploymentUser: $USER
DnsServers:
- 1.1.1.1
- 8.8.8.8
# needed for vip & pacemaker
KernelIpNonLocalBind: 1
DockerInsecureRegistryAddress:
- $IP:8787
NeutronPublicInterface: $INTERFACE
# domain name used by the host
CloudDomain: localdomain
NeutronDnsDomain: localdomain
# re-use ctlplane bridge for public net, defined in the standalone
# net config (do not change unless you know what you're doing)
NeutronBridgeMappings: datacentre:br-ctlplane
NeutronPhysicalBridge: br-ctlplane
# enable to force metadata for public net
#NeutronEnableForceMetadata: true
StandaloneEnableRoutedNetworks: false
StandaloneHomeDir: $HOME
InterfaceLocalMtu: 1500
# Needed if running in a VM, not needed if on baremetal
NovaComputeLibvirtType: qemu
EOF
Ora sei pronto per distribuire l'ambiente standalone TripleO utilizzando il comando seguente:
sudo openstack tripleo deploy \
--templates \
--local-ip=$IP/$NETMASK \
--control-virtual-ip $VIP \
-e /usr/share/openstack-tripleo-heat-templates/environments/standalone/standalone-tripleo.yaml \
-r /usr/share/openstack-tripleo-heat-templates/roles/Standalone.yaml \
-e $HOME/containers-prepare-parameters.yaml \
-e $HOME/standalone_parameters.yaml \
--output-dir $HOME \
--standalone
Verifica dell'installazione
Ora puoi verificare la CLI di OpenStack:
export OS_CLOUD=standalone
openstack endpoint list
Creazione di un profilo, un'immagine, una coppia di chiavi, un gruppo di sicurezza, una rete e un server
Ora che hai installato e verificato il tuo ambiente autonomo, è pronto per l'uso. Crea una piccola istanza denominata mioserver , che esegue Cirros e i componenti necessari per farlo. Prima di iniziare, configura la riga di comando per accedere alla distribuzione:
export OS_CLOUD=standalone
Sapore
Ora sei pronto per configurare il minuscolo sapore che stai utilizzando e poi verifica la sua creazione:
openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
openstack flavor list
Immagine
Ora che hai un sapore, scarica l'immagine Cirros e quindi configura Glance per usarlo. Verifica che sia stato creato:
wget https://download.cirros-cloud.net/0.5.0/cirros-0.5.0-x86_64-disk.img
openstack image create cirros --container-format bare --disk-format qcow2 --public --file cirros-0.5.0-x86_64-disk.img
openstack image list
Coppia di chiavi
Per connetterti alle nostre VM senza dover digitare una password, crea una nuova chiave SSH sul sistema standalone, caricala come coppia di chiavi denominata default, e verifica che sia stato creato:
ssh-keygen
openstack keypair create --public-key ~/.ssh/id_rsa.pub default
openstack keypair list
Gruppo di sicurezza
Il prossimo compito è creare un gruppo di sicurezza chiamato base con regole che ci consentono di SSH e ping
la nostra istanza:
openstack security group create basic
openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
openstack security group rule create --protocol icmp basic
openstack security group rule create --protocol udp --dst-port 53:53 basic
openstack security group list
openstack security group show default
Rete
Prima di creare la rete, esporta i seguenti parametri per la macchina standalone, nonché per il pubblico rete, un privato rete e una sottorete che creeremo:
export GATEWAY=192.168.24.1
export STANDALONE_HOST=192.168.24.2
export PUBLIC_NETWORK_CIDR=192.168.24.0/24
export PRIVATE_NETWORK_CIDR=192.168.100.0/24
export PUBLIC_NET_START=192.168.24.4
export PUBLIC_NET_END=192.168.24.5
export DNS_SERVER=1.1.1.1
La rete pubblica che creeremo è un esterno rete utilizzando il datacenter rete fisica:
openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
openstack network list
Ora creeremo un interno rete denominata privata e crea una sottorete chiamata rete privata :
openstack network create --internal private
openstack network list
openstack subnet create public-net --subnet-range $PUBLIC_NETWORK_CIDR --no-dhcp --gateway $GATEWAY --allocation-pool start=$PUBLIC_NET_START,end=$PUBLIC_NET_END --network public
openstack subnet create private-net --subnet-range $PRIVATE_NETWORK_CIDR --network private
openstack subnet list
Gli ultimi passaggi sono la creazione di un router denominato vrouter e collegalo al pubblico rete e aggiungerlo alla rete privata sottorete:
openstack router create vrouter
openstack router list
openstack router set vrouter --external-gateway public
openstack router add subnet vrouter private-net
openstack router show vrouter
Server
Ora siamo pronti per creare un server chiamato mioserver utilizzando il profilo, l'immagine, la coppia di chiavi e la rete privata che abbiamo creato:
openstack server create --flavor tiny --image cirros --key-name default --security-group basic --network private myserver
Utilizza il server show
comando incentrato sullo stato colonna per determinare quando il nostro server è ATTIVO o in ERRORE :
openstack server show -c status myserver
Prima di poterci connettere al server, dobbiamo creare un IP mobile e aggiungerlo al nostro server:
openstack floating ip create public
openstack server add floating ip myserver <IP>
Poiché abbiamo collegato una coppia di chiavi alla nostra istanza e aperto la porta SSH nel gruppo di sicurezza del server, possiamo semplicemente inviare SSH al server come cirros utente da testare:
ssh cirros@<IP>
Ripulisci la distribuzione
Se è necessario ripulire l'ambiente, rimuovere i servizi e i file installati per la distribuzione autonoma. Per fare ciò, crea uno script chiamato standalone-cleanup.sh
:
cat <<EOF > $HOME/standalone-cleanup.sh
#!/bin/bash
echo "Tearing down TripleO environment"
if type pcs &> /dev/null; then
sudo pcs cluster destroy
fi
if type podman &> /dev/null; then
echo "Removing podman containers and images (takes times...)"
sudo podman rm -af
sudo podman rmi -af
fi
sudo rm -rf \
/var/lib/tripleo-config \
/var/lib/config-data /var/lib/container-config-scripts \
/var/lib/container-puppet \
/var/lib/heat-config \
/var/lib/image-serve \
/var/lib/containers \
/etc/systemd/system/tripleo* \
/var/lib/mysql/*
sudo systemctl daemon-reload
EOF
Rendi eseguibile lo script:
chmod u+x standalone-cleanup.sh
Utilizzare il comando seguente per eseguire la pulizia:
./standalone-cleanup.sh
[ Impara le basi dell'uso di Kubernetes in questo cheat sheet gratuito. ]
Concludi
TripleO può essere utile per creare un ambiente di laboratorio o dimostrativo. Ci sono alcune insidie a cui devi fare attenzione per farlo funzionare. Questo articolo ha illustrato i passaggi necessari per distribuire, configurare e ripulire TripleO utilizzando un ambiente basato su RHEL.