GNU/Linux >> Linux Esercitazione >  >> Linux

Distribuzione di un sistema OpenStack indipendente TripleO virtuale

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.


Linux
  1. OpenStack Liberty su Ubuntu 14.04 – Crea reti virtuali

  2. Come creare una seconda partizione primaria o aggiuntiva nella macchina virtuale OpenStack

  3. Come verificare se il sistema Linux è in esecuzione su un sistema fisico o una macchina virtuale?

  4. Introduzione alla virtualizzazione:una guida completa per principianti

  5. Nascondere lo stato della macchina virtuale dal sistema operativo guest

Come montare Google Drive localmente come file system virtuale in Linux

Come installare Xfce Desktop su AlmaLinux 8

Distribuzione del sistema di commenti Isso in Nginx con Docker

Configurazione di Suricata come sistema di prevenzione delle intrusioni (IPS)

Come aggiungere o creare un utente sudo nel sistema Linux [Quickstart]

Tutti i metodi per eseguire una macchina virtuale su sistema Linux