OpenStack-Ansible CentOS 7 AIO

Referencia: OpenStack-Ansible - Quickstart AIO

Despliegues All-in-one (AIO) son una buena forma de realizar un despliegue OpenStack-Ansible para:

  • entornos de desarrollo
  • una visión de cómo trabajan juntos los servicios de OpenStack
  • un despliegue de laboratorio simple

Sin embargo, despliegues AIO no son recomendados entornos de producción, son buenos para entornos de prueba de concepto.

Recursos de servidor mínimos:

  • 8 vCPUs
  • 50 GB libres de espacio de disco en la partición root
  • 8 GB RAM

Recursos de servidor recomendados:

  • CPU/motherboard que soporte hardware-assisted virtualization
  • 8 CPU cores
  • 80 GB libres de espacio de disco en la partición root o 60GB+ en un disco secundario vacío. Usar un disco secundario requiere usar el parámetro bootstrap_host_data_disk_device

Es posible realizar AIO builds en una máquina virtual para demostraciones y evaluación, pero nuestras VMs rendirán pobremente, excepto que activemos nested virtualization. Para cargas de trabajo de producción, se recomienda múltiples nodos para roles específicos.

Despliegue con Vagrant

Con el archivo Vagrantfile podremos desplegar una VM con la configuración inicial para desplegar OpenStack-Ansible AIO:

Overview

Hay 4 pasos para lograr correr un entorno AIO:

  • Preparar el host
  • Boostrap de Ansible y los roles requeridos
  • Boostrap de la configuración AIO
  • Correr los playbooks

Prepare the host

  • Verificar la versión de kernel actual:
sudo -i
uname -mrs
  • Verificar los kernels instalados en el sistema (el kernel subrayado es el que está en uso):
yum list installed kernel
  • Actualizar los paquetes y kernel del sistema:
yum upgrade -y
  • Reiniciar el sistema para cambiar el kernel
reboot
  • Verificar la versión de kernel actualizada
sudo -i
uname -mrs
  • Verificar los kernels instalados en el sistema (el kernel subrayado es el que está en uso):
yum list installed kernel
  • Instalar Git:

Note

La instalación de git en CentOS 7, con los repositorios predeterminados, instalará una version antigua de Git, por ejemplo v1.8:

yum install -y git

Referencia: Instalar Git 2.X en CentOS 7

  • Para instalar Git 2.X primero debemos habilitar el repositorio Wandisco GIT, para esto, creamos un nuevo archivo de configuración de repositorio YUM:
cat << EOF > /etc/yum.repos.d/wandisco-git.repo
[wandisco-git]
name=Wandisco GIT Repository
baseurl=http://opensource.wandisco.com/centos/7/git/\$basearch/
enabled=1
gpgcheck=1
gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
EOF
  • Importamos las llaves GPG del repositorio:
rpm --import http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco
  • Ahora que hemos agregado el repositorio, podemos instalar la última versión de Git:
yum install -y git
  • Revisar la versión de git (2.X)
git --version

Bootstrap Ansible and the required roles

Referencia: Setting up OpenStack-Ansible All-In-One on a Centos 7 system

  • El script de boostrap de OpenStack-Ansible descargará e instalará su propia versión de Ansible y creará un link a /usr/local/bin. Por lo cual, /usr/local/bin debe estar en nuestra variable $PATH. En CentOS 7, la variable $PATH no contiene esta dirección, así que la debemos agregar:
export PATH=/usr/local/bin:$PATH
  • Clonar el repositorio OpenStack-Ansible y cambiar al directorio raíz del repo:
git clone https://opendev.org/openstack/openstack-ansible /opt/openstack-ansible

cd /opt/openstack-ansible

Luego, deberemos cambiar al branch/tag desde el cual se implementará. Desplegar desde el head de un branch puede resultar en un build inestable. Para un build de prueba (no para un build de producción) es usualmente mejor hacer checkout de la última versión tagueada.

  • Listar tags
git tag -l
  • Checkout del branch estable y encontrar el último tag:
git checkout stable/train
git describe --abbrev=0 --tags
  • Checkout del último tag:
git checkout 20.1.0
  • Boostrap de Ansible y roles de Ansible para el entorno de desarrollo (Duración: 8:30 - 12:00 min):
scripts/bootstrap-ansible.sh
  • Probar que se pueda ejecutar el comando openstack-ansible:
openstack-ansible

Bootstrap the AIO configuration

Para que todos los servicios corran, el host debe estar preparado con el particionamiento de disco, paquetes, configuración de red y configuraciones para el OpenStack Deployment correctos.

Por defecto, los bootstrap scripts de AIO despliegan un conjunto base de servicios OpenStack con valores predeterminados razonables con el propósito de un gate check, sistema de despliegue o sistema de pruebas.

El bootstrap script está pre-configurado para pasar la variable de entorno BOOTSTRAP_OPTS como una opción adicional para al proceso bootstrap.

  • Para el escenario AIO predeterminado, la preparación de configuración AIO es completada ejecutando (Duración: 2:00 min):
scripts/bootstrap-aio.sh

Note

Entre todas los cambios hechos luego de ejecutar este script, se cambiará el hostname a aio1. Además se editará el parámetro PasswordAuthentication del archivo /etc/ssh/sshd_config, impidiendo conexiones SSH mediante contraseñas.

Para volver a permitir la conexión por SSH al sistema ejecutar:

sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
systemctl restart sshd

Note

  • Para añadir OpenStack Services encima de los servicios boostrap-aio predeterminados para el escenario aplicable, copiar los archivos conf.d con la extensión .aio a /etc/openstack_deploy y luego renombrarlos a archivo .yml. Por ejemplo, para habiltar el servicio de OpenStack Telemetry, ejecutar:
cd /opt/openstack-ansible/

cp etc/openstack_deploy/conf.d/{aodh,gnocchi,ceilometer}.yml.aio /etc/openstack_deploy/conf.d/

for f in $(ls -1 /etc/openstack_deploy/conf.d/*.aio); do mv -v ${f} ${f%.*}; done
  • También es posible hacer esto (y cambiar otros valores predeterminados) durante la ejecución inicial del boostrap script cambiando la variable de entorno SCENARIO antes de correr el script. La palabra clave ‘aio’ asegurará que un conjunto de servicios básicos de OpenStack (cinder, glance, horizon, neutron, nova) sean desplegados. Las palabras claves ‘lxc’ y ‘nspawn’ pueden usarse para configurar el container back-end, mientras que la palabra ‘metal’ desplegará todos los servicios sin contenedores. Para implementar cualquier otro servicio, añadir el nombre del archivo conf.d, sin la extensión .yml.aio en la variable de entorno SCENARIO. Cada palabra clave debe ser limitada por un guión bajo. Por ejemplo, lo siguiente implementará un AIO con barbican, cinder, glance, horizon, neutron y nova. Configurará el almacenamiento de Cinder con Ceph back-end y usará LXC como el container back-end.
export SCENARIO='aio_lxc_barbican_ceph'

scripts/bootstrap-aio.sh

Note

Si las palabras clave ‘metal’ y ‘aio’ son usadas juntas, horizon no será desplegado porque haproxy y horizon entrarán en conflicto en los mismos puertos de escucha.

  • Para añadir cualquier sobreescritura global, sobre los valores por defecto del escenario pertinente, editar /etc/openstack_deploy/user_variables.yml. Para poder comprender las varios formas que podemos sobreescribir el comportamiento por defecto establecido en los roles, playbooks y variables de group, ir a OpenStack-Ansible - Overriding default configuration

Run playbooks

  • Finalmente correr los playbooks ejecutando:
cd /opt/openstack-ansible/playbooks

openstack-ansible setup-hosts.yml
# Duración: 22:30 min

openstack-ansible setup-infrastructure.yml
# Duración: 13:30 min

openstack-ansible setup-openstack.yml
# Duración: 1:25:00 horas

Note

El proceso de instalación tomará un tiempo para que complete pero aquí hay algunos estimados:

  • Almacenamiento Bare metal con almacenamiento SSD: ~ 30-50 minutos
  • Máquinas virtuale con almacenamiento SSD: ~ 45-60 minutos
  • Sistemas con discos duros tradicionales: ~ 90-120 minutos
  • Una vez que los playbooks han sido ejecutados completamente, es posible experimentar con varios cambios de configuración en /etc/openstack_deploy/user_variables.yml y solo correr playbooks individuales. Por ejemplo, para correr el playbook para el servicio de Keytone, ejecutar:
cd /opt/openstack-ansible/playbooks

openstack-ansible os-keystone-install.yml