TripleO steht für OpenStack on OpenStack und ist eines der offiziellen OpenStack Deployment-Projekte. Die Installation eines eigenständigen TripleO-Systems kann eine großartige Möglichkeit sein, einen Machbarkeitsnachweis, ein Heimlabor oder eine Lernumgebung für OpenStack zu erstellen. Es wird jedoch nicht für eine Produktionsumgebung empfohlen.
Wir werden die Schritte durchgehen, die zum Erstellen einer eigenständigen Bereitstellung der OpenStack Victoria-Version unter Verwendung von TripleO auf CentOS 8 erforderlich sind. Anschließend erstellen wir die Komponenten, die zum erfolgreichen Starten und Verbinden mit einer virtuellen Maschine (VM) erforderlich sind. Abschließend schreiben wir ein Skript, um die Bereitstellung zu bereinigen.
Konfiguration vor der Bereitstellung
Hostmaschine
Ich habe in diesem Szenario einen RHEL 8.2-Computer für den Host verwendet. Möglicherweise müssen Sie die Schritte für Fedora oder CentOS leicht anpassen.
Um Cockpit zur Verwaltung von Netzwerken und virtuellen Maschinen zu nutzen, starten und aktivieren Sie den Dienst und installieren Sie dann die cockpit-machines
Paket:
sudo systemctl enable --now cockpit.socket
sudo yum install -y cockpit-machines
Überprüfen Sie, ob der netfilter
Modul wird in den Kernel geladen:
sudo modprobe br_netfilter
Aktivieren Sie die IPv4-IP-Weiterleitung, falls sie noch nicht geladen ist:
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward = 1
Laden Sie sysctl.conf
neu ohne Neustart:
sudo sysctl -p /etc/sysctl.conf
[ Den Lesern hat auch gefallen: Erste Schritte mit softwaredefinierten Netzwerken ]
Netzwerken
Bevor wir beginnen, erstellen Sie zusätzlich zu Ihrem Standardnetzwerk ein eigenständiges Netzwerk. Das neue Netzwerk wird Ihr Verwaltungsnetzwerk. Sie können Folgendes an Ihre eigenen Umgebungen anpassen:

Erstellen Sie das eigenständige Netzwerk
Verwenden Sie 192.168.24.0/24 als eigenständiges Netzwerk. Erstellen Sie zuerst eine standalone.xml
Datei:
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>
Als nächstes verwenden Sie virsh
um das externe Netzwerk zu definieren, zu aktivieren und zu starten:
sudo virsh net-define /tmp/standalone.xml
sudo virsh net-autostart standalone
sudo virsh net-start standalone
Eigenständige VM-Erstellung
Da diese Bereitstellung eine VM im Vergleich zu Bare Metal verwendet, müssen wir eine VM erstellen, auf der wir unsere eigenständige Umgebung bereitstellen.
Die Spezifikationen für die VM sind:
- CentOS 8 (Variante rhel8.2)
- 60 GB
- 8 RAM
- 4 CPUs
- Eigenständiges Netzwerk
Stellen Sie bei der Installation von CentOS 8 auf Ihrer eigenständigen VM sicher, dass Sie nicht installieren libvirt-tools
und verwenden Sie ein Minimal oder Server Installation. Außerdem müssen Sie einen Stapel erstellen Benutzer.
Eigenständige Konfiguration
Sobald TripleO als eigenständiges System bereitgestellt wurde, können Sie mit Ihrem Passwort keine SSH-Verbindung zur VM herstellen. Um sich darauf vorzubereiten, müssen Sie Ihren SSH-Schlüssel auf den Stack kopieren Benutzer. Hier ist der Befehl:
ssh-copy-id -i ~/.ssh/<your ssh key> stack@<standalone>
Sie müssen den Stack konfigurieren Benutzer für NOPASSWD in sudo
:
sudo echo "stack ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/stack
sudo chmod 0440 /etc/sudoers.d/stack
Der eigenständige Computer benötigt einen vollqualifizierten Domänennamen (FQDN), der wie folgt festgelegt werden kann:
sudo hostnamectl set-hostname standalone.example.com
sudo hostnamectl set-hostname standalone.example.com --transient
Aktualisieren Sie Ihr System und starten Sie es neu, wenn es Änderungen am Kernel gibt:
sudo yum update -y
sudo reboot
Laden Sie die python-tripleo-repos
herunter und installieren Sie sie RPM von 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
Konfigurieren und bereitstellen
Eigenständige Konfiguration
Sie müssen mehrere Konfigurationsdateien erstellen, bevor Sie Ihre eigenständige Umgebung bereitstellen können.
Die erste Datei ist die containers-prepare-parameters.yaml
Datei, die zum Pullen Ihrer Container verwendet wird. Verwenden Sie den TripleO-Client, um eine Basisdatei zu erstellen:
OpenStack tripleo container image prepare default --local-push-destination --output-env-file containers-prepare-parameters.yaml
Aktualisieren Sie als Nächstes push_destination auf falsch und den Namensraum zum Pull von quay.io:
nano containers-prepare-parameters.yaml
push_destination: false
namespace: quay.io/tripleovictoria
Konfigurieren Sie als Nächstes die Netzwerkeinstellungen mit einer einzelnen NIC-Konfiguration. Bevor Sie fortfahren, müssen Sie die Schnittstelle Ihres eigenständigen Netzwerks bestimmen ist an. Beachten Sie, dass die Schnittstelle möglicherweise noch nicht konfiguriert ist, also wird es die Schnittstelle ohne IP sein.
ip addr
Zur Wiederverwendung von Parametern während der Konfiguration der standalone_parameters.yaml
und dann die Installation, exportieren Sie die Parameter wie folgt in den Puffer:
export IP=192.168.24.2
export VIP=192.168.25.2
export NETMASK=24
export GATEWAY=192.168.24.1
export INTERFACE=<interface>
Erstellen Sie nun die standalone_parameters.yaml
Datei mit 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
Jetzt können Sie die eigenständige TripleO-Umgebung mit dem folgenden Befehl bereitstellen:
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
Installationsüberprüfung
Sie können jetzt die OpenStack-CLI überprüfen:
export OS_CLOUD=standalone
openstack endpoint list
Erstellen einer Variante, eines Images, eines Schlüsselpaars, einer Sicherheitsgruppe, eines Netzwerks und eines Servers
Nachdem Sie Ihre eigenständige Umgebung installiert und überprüft haben, ist sie einsatzbereit. Erstellen Sie eine kleine Instanz namens myserver , auf dem Cirros und die dazu erforderlichen Komponenten ausgeführt werden. Bevor wir beginnen, konfigurieren Sie die Befehlszeile für den Zugriff auf die Bereitstellung:
export OS_CLOUD=standalone
Geschmack
Jetzt können Sie den winzigen konfigurieren Flavor, den Sie verwenden, und überprüfen Sie dann seine Erstellung:
openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
openstack flavor list
Bild
Nachdem Sie nun einen Geschmack haben, laden Sie das Cirros-Image herunter und konfigurieren Sie dann Glance um es zu benutzen. Überprüfen Sie, ob es erstellt wurde:
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
Schlüsselpaar
Um eine Verbindung zu unseren VMs herzustellen, ohne ein Passwort eingeben zu müssen, erstellen Sie einen neuen SSH-Schlüssel auf dem eigenständigen System und laden Sie ihn als Schlüsselpaar namens default hoch und vergewissern Sie sich, dass es erstellt wurde:
ssh-keygen
openstack keypair create --public-key ~/.ssh/id_rsa.pub default
openstack keypair list
Sicherheitsgruppe
Die nächste Aufgabe besteht darin, eine Sicherheitsgruppe mit dem Namen basic zu erstellen mit Regeln, die uns SSH und ping
erlauben unsere Instanz:
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
Netzwerk
Bevor wir das Netzwerk erstellen, exportieren Sie die folgenden Parameter für die eigenständige Maschine sowie die öffentliche Netzwerk, ein privates Netzwerk und ein Subnetz, das wir erstellen werden:
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
Das öffentliche Netzwerk, das wir erstellen werden, ist ein externes Netzwerk, das das Rechenzentrum verwendet physisches Netzwerk:
openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
openstack network list
Wir werden jetzt eine interne erstellen Netzwerk namens privat und bauen Sie ein Subnetz namens private-net auf :
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
Die letzten Schritte bestehen darin, einen Router mit dem Namen vrouter zu erstellen und verbinden Sie es mit der Öffentlichkeit Netzwerk und fügen Sie es dem Private-Net hinzu Subnetz:
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
Wir können jetzt einen Server namens myserver erstellen unter Verwendung der von uns erstellten Variante, des Bildes, des Schlüsselpaars und des privaten Netzwerks:
openstack server create --flavor tiny --image cirros --key-name default --security-group basic --network private myserver
Verwenden Sie die server show
Befehl, der sich auf den Status konzentriert Spalte, um festzustellen, wann unser Server AKTIV ist oder in FEHLER :
openstack server show -c status myserver
Bevor wir uns mit dem Server verbinden können, müssen wir eine Floating-IP erstellen und zu unserem Server hinzufügen:
openstack floating ip create public
openstack server add floating ip myserver <IP>
Da wir ein Schlüsselpaar an unsere Instanz angehängt und den SSH-Port in der Sicherheitsgruppe des Servers geöffnet haben, können wir einfach als Cirros eine SSH-Verbindung zum Server herstellen zu testender Benutzer:
ssh cirros@<IP>
Bereitstellung bereinigen
Wenn Sie Ihre Umgebung bereinigen müssen, entfernen Sie die für die eigenständige Bereitstellung installierten Dienste und Dateien. Erstellen Sie dazu ein Skript namens 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
Machen Sie das Skript ausführbar:
chmod u+x standalone-cleanup.sh
Verwenden Sie den folgenden Befehl, um die Bereinigung auszuführen:
./standalone-cleanup.sh
[ Lernen Sie die Grundlagen der Verwendung von Kubernetes in diesem kostenlosen Spickzettel. ]
Abschluss
TripleO kann nützlich sein, um eine Labor- oder Demonstrationsumgebung zu erstellen. Es gibt ein paar Fallstricke, auf die Sie achten müssen, damit es funktioniert. Dieser Artikel behandelt die Schritte, die zum Bereitstellen, Konfigurieren und Bereinigen von TripleO in einer RHEL-basierten Umgebung erforderlich sind.