GNU/Linux >> Tutoriales Linux >  >> Linux

Implementación de un sistema OpenStack independiente TripleO virtual

TripleO significa OpenStack en OpenStack y es uno de los proyectos oficiales de implementación de OpenStack. La instalación de un sistema independiente TripleO puede ser una excelente manera de crear una prueba de concepto, un laboratorio doméstico o un entorno para aprender sobre OpenStack. Sin embargo, no se recomienda para un entorno de producción.

Seguiremos los pasos necesarios para crear una implementación independiente de la versión OpenStack Victoria utilizando TripleO en CentOS 8. Luego, crearemos los componentes necesarios para iniciar y conectarse a una máquina virtual (VM) con éxito. Finalmente, escribiremos un script para limpiar la implementación.

Configuración previa a la implementación

Máquina anfitriona

Usé una máquina RHEL 8.2 para el host en este escenario. Es posible que deba ajustar ligeramente los pasos para Fedora o CentOS.

Para aprovechar Cockpit para administrar redes y máquinas virtuales, inicie y habilite el servicio, y luego instale cockpit-machines paquete:

sudo systemctl enable --now cockpit.socket
sudo yum install -y cockpit-machines

Compruebe si netfilter el módulo está cargado en el kernel:

sudo modprobe br_netfilter

Habilite el reenvío de IP IPv4 si aún no está cargado:

sudo nano /etc/sysctl.conf 
net.ipv4.ip_forward = 1

Vuelva a cargar sysctl.conf sin reiniciar:

sudo sysctl -p /etc/sysctl.conf

[ Los lectores también disfrutaron: Introducción a las redes definidas por software ]

Redes

Antes de comenzar, cree una red independiente además de su red predeterminada. La nueva red será su red de gestión. Puede ajustar lo siguiente a sus propios entornos:

Crear la red independiente

Utilice 192.168.24.0/24 como la red independiente. Primero, crea un standalone.xml archivo:

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>

A continuación, utilice virsh para definir, habilitar e iniciar la red externa:

sudo virsh net-define /tmp/standalone.xml
sudo virsh net-autostart standalone
sudo virsh net-start standalone

Creación de máquinas virtuales independientes

Dado que esta implementación utiliza una máquina virtual en lugar de hardware completo, debemos crear una máquina virtual en la que implementar nuestro entorno independiente.

Las especificaciones de la máquina virtual son:

  • CentOS 8 (variante rhel8.2)
  • 60GB
  • 8 RAM
  • 4 CPU
  • Red independiente

Al instalar CentOS 8 en su VM independiente, asegúrese de no instalar libvirt-tools y usa un mínimo o servidor instalación. También deberá crear una pila usuario.

Configuración independiente

Una vez que TripleO se haya implementado como un sistema independiente, no podrá acceder a la VM mediante SSH con su contraseña. Para prepararse para eso, debe copiar su clave SSH en la pila usuario. Aquí está el comando:

ssh-copy-id -i ~/.ssh/<your ssh key> stack@<standalone>

Necesitas configurar la pila usuario para NOPASSWD en sudo :

sudo echo "stack ALL=(root) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/stack
sudo chmod 0440 /etc/sudoers.d/stack

La máquina independiente necesita un nombre de dominio completo (FQDN), que se puede configurar de la siguiente manera:

sudo hostnamectl set-hostname standalone.example.com
sudo hostnamectl set-hostname standalone.example.com --transient

Actualice su sistema y reinícielo si hay cambios en el kernel:

sudo yum update -y
sudo reboot

Descargue e instale el python-tripleo-repos RPM de 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

Configurar e implementar

Configuración independiente

Debe crear varios archivos de configuración antes de poder implementar su entorno independiente.

El primer archivo es containers-prepare-parameters.yaml archivo, que se utilizará para extraer sus contenedores. Use el cliente TripleO para crear un archivo base:

OpenStack tripleo container image prepare default --local-push-destination --output-env-file containers-prepare-parameters.yaml

A continuación, actualice el push_destination a falso y el espacio de nombres para tirar de quay.io:

nano containers-prepare-parameters.yaml
push_destination: false
namespace: quay.io/tripleovictoria

A continuación, configure los ajustes de red utilizando una única configuración de NIC. Antes de continuar, debe determinar la interfaz de su red independiente Está encendido. Tenga en cuenta que es posible que la interfaz aún no esté configurada, por lo que será la interfaz sin IP.

ip addr

Para reutilizar parámetros durante la configuración de standalone_parameters.yaml y luego la instalación, exporte los parámetros al búfer de la siguiente manera:

export IP=192.168.24.2
export VIP=192.168.25.2
export NETMASK=24
export GATEWAY=192.168.24.1
export INTERFACE=<interface>

Ahora, crea el standalone_parameters.yaml archivo usando 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

Ahora está listo para implementar el entorno independiente de TripleO con el siguiente comando:

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

Verificación de la instalación

Ahora puede verificar la CLI de OpenStack:

export OS_CLOUD=standalone
openstack endpoint list

Crear un tipo, una imagen, un par de claves, un grupo de seguridad, una red y un servidor

Ahora que ha instalado y verificado su entorno independiente, está listo para usar. Cree una pequeña instancia llamada myserver , que ejecuta Cirros y los componentes necesarios para lograrlo. Antes de comenzar, configure la línea de comando para acceder a la implementación:

export OS_CLOUD=standalone

Sabor

Ahora está listo para configurar el pequeño sabor que está usando y luego verifique su creación:

openstack flavor create --ram 512 --disk 1 --vcpu 1 --public tiny
openstack flavor list

Imagen

Ahora que tiene un sabor, descargue la imagen de Cirros y luego configure Glance para usarlo Verifique que se haya creado:

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

Par de claves

Para conectarse a nuestras máquinas virtuales sin necesidad de escribir una contraseña, cree una nueva clave SSH en el sistema independiente, cárguela como un par de claves llamado predeterminado, y verifique que se haya creado:

ssh-keygen
openstack keypair create --public-key ~/.ssh/id_rsa.pub default
openstack keypair list

Grupo de seguridad

La siguiente tarea es crear un grupo de seguridad llamado básico con reglas que nos permiten SSH y ping nuestra instancia:

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

Red

Antes de crear la red, exporte los siguientes parámetros para la máquina independiente, así como para el público red, una privada red, y una subred que crearemos:

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 red pública que crearemos es una externa red que utiliza el centro de datos red física:

openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
openstack network list

Ahora crearemos un interno red llamada privada y construye una subred llamada private-net :

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

Los últimos pasos son crear un enrutador llamado vrouter y conectarlo al público red, así como agregarlo a la private-net subred:

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

Servidor

Ahora estamos listos para crear un servidor llamado myserver utilizando el tipo, la imagen, el par de claves y la red privada que creamos:

openstack server create --flavor tiny --image cirros --key-name default --security-group basic --network private myserver

Utilice el server show comando centrado en el estado columna para determinar cuando nuestro servidor está ACTIVO o en ERROR :

openstack server show -c status myserver

Antes de que podamos conectarnos al servidor, necesitamos crear una IP flotante y agregarla a nuestro servidor:

openstack floating ip create public
openstack server add floating ip myserver <IP>

Como adjuntamos un par de claves a nuestra instancia y abrimos el puerto SSH en el grupo de seguridad del servidor, podemos simplemente usar SSH en el servidor como cirros usuario a probar:

ssh cirros@<IP>

Limpieza de implementación

Si necesita limpiar su entorno, elimine los servicios y archivos instalados para la implementación independiente. Para hacer esto, cree un script llamado 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

Haga que el script sea ejecutable:

chmod u+x standalone-cleanup.sh

Use el siguiente comando para ejecutar la limpieza:

./standalone-cleanup.sh

[ Aprenda los aspectos básicos del uso de Kubernetes en esta hoja de trucos gratuita. ] 

Resumir

TripleO puede ser útil para crear un entorno de laboratorio o demostración. Hay algunas trampas de las que debe tener cuidado para que funcione. Este artículo cubrió los pasos necesarios para implementar, configurar y limpiar TripleO utilizando un entorno basado en RHEL.


Linux
  1. OpenStack Liberty en Ubuntu 14.04:crear redes virtuales

  2. Cómo comprobar si un sistema Linux es una máquina física o virtual

  3. Cómo crear una segunda partición primaria o adicional en una máquina virtual OpenStack

  4. ¿Cómo verificar si el sistema Linux se está ejecutando en un sistema físico o una máquina virtual?

  5. Introducción a la virtualización:una guía completa para principiantes

Cómo montar Google Drive localmente como sistema de archivos virtual en Linux

Cómo instalar el escritorio Xfce en AlmaLinux 8

Implementación del sistema de comentarios Isso bajo Nginx con Docker

Configuración de Suricata como un sistema de prevención de intrusiones (IPS)

Cómo agregar o crear un usuario sudo en el sistema Linux [inicio rápido]

Todos los métodos para ejecutar una máquina virtual en un sistema Linux