En la entrada de hoy vamos a ver como realizar una instalación de Openstack, usando Kolla-Ansible en dos nodos.
El nodo master tendrá (Heat, Neutron, Keyston, Glance) y el nodo compute tendrá Nova. La máquina installer la utilizaremos simplemente para la instalación de Openstack. Las dos máquinas están corriendo un Ubuntu 16.04 limpio (será necesario que tengamos instalado el paquete python-dev en cada una) y la que utilizamos de instalador, Debian Stretch.
Lo primero será la instalación de las dependencias de Kolla-Ansible en el instalador.
apt update apt install python-pip pip install -U pip apt install python-dev libffi-dev gcc libssl-dev python-selinux sshpass pip install -U ansible
Y creamos el fichero /etc/ansible/ansible.cfg con el siguiente contenido.
[defaults] host_key_checking=False pipelining=True forks=100
Entonces procedemos a la instalación de Kolla-Ansible.
pip install -U kolla-ansible
Copiamos al directorio /etc/kolla los ficheros necesarios para el despliegue de Openstack.
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/kolla/
Y nos traemos, al directorio desde el que vamos a trabajar el inventario para el multinodo.
cp /usr/local/share/kolla-ansible/ansible/inventory/multinode .
Llegados a éste punto es cuando vamos a realizar los cambios necesarios para nuestro caso en concreto, modificando dicho fichero multinode.
Debemos tener configurado en nuestro /etc/hosts las direcciones ip que corresponden a cada nodo master y compute. Esto es, simplemente, la definición de dónde vamos a instalar cada componente.
# Es más correcto el uso de par de claves [control] master ansible_user=root ansible_password=password [network:children] control [compute] compute ansible_user=root ansible_password=password [monitoring:children] control [storage:children] control [deployment] localhost ansible_connection=local
A continuación generaremos las contraseñas que usará Kolla durante la instalación, podemos asignarlas manualmente en el fichero /etc/kolla/passwords.yml o utilizando la herramienta kolla-genpwd (recomendada para despliegues reales).
Seguido, editaremos el fichero /etc/kolla/globlals.yml dónde tendremos que definir parámetros importantes cómo los de red.
El primero será la distribución base que usará Kolla para el despliegue, Openstack nos recomienda que usemos Centos o Ubuntu. Vamos a establecer el parámetro a centos.
kolla_base_distro: "centos"
Seguimos con el tipo de instalación que se usará para la configuración, especificaremos binary para que haga uso de repositorios.
kolla_install_type: "binary"
Es necesario especificar que versión de Openstack vamos a instalar, en mi caso instalaré pike.
openstack_release: "pike"
Continuamos con los parámetros de red.
# Ip que será asignada a la red interna por el haproxy kolla_internal_vip_address: "10.10.10.254" # Será la ip accesible desde el exterior a los servicios kolla_external_vip_address: "172.22.153.1"
Ahora, un paso muy importante, es el de la configuración de las interfaces para Neutron. Los parámetros serán los siguientes. Es importante que el nombre de las interfaces de los distintos nodos que están conectadas a la misma red, tengan el mismo nombre, tal y como detallamos en el esquema inicial, ens4 corresponde a nuestra red interna y ens5 sólo lo tendrá el nodo master que es por donde se accederán a los servicios desde el exterior.
# Interfaz interna de nuestros nodos, que está conectado a br1 network_interface: "ens4" # Interfaz que usará para la red externa, la que está conectada a br0 sin ip kolla_external_vip_interface: "ens5" neutron_external_interface: "ens5"
Y ya, para acabar con la configuración de éste fichero, los componentes que vamos a instalar, que están bajo el comentario # OpenStack services can be enabled or disabled with these options
Para ésta instalación no vamos a editar ninguno.
Entonces, comprobamos que tenemos acceso a las máquinas.
root@installer:~# ansible -i multinode -m ping all
Instalamos las dependencias en los nodos.
kolla-ansible -i multinode bootstrap-servers
Comprobamos que todo está listo para ser lanzado
kolla-ansible -i multinode prechecks
Y lanzamos
kolla-ansible -i multinode deploy
Es posible que nos salgan errores del tipo:
TASK [heat : Running Heat bootstrap container] ********************************************************** fatal: [master -> master]: FAILED! => {"changed": true, "msg": "Container exited with non-zero return code"}
Si esto ocurriese, vuelve a lanzar el deploy, y continuará, ésto es un bug, que ya está resuelto en la siguiente versión de kolla.
Para comprobar que está funcionando, realizaremos.
kolla-ansible post-deploy . /etc/kolla/admin-openrc.sh
Y accederemos a la dirección ip que establecimos en kolla_external_vip_address: «172.22.153.1».
La contraseña y el usuario lo podemos ver en el fichero /etc/kolla/admin-source.sh
Y si queremos acceder desde la linea de comandos con el administrador, instalamos el cliente de openstack
pip install python-openstackclient
Y como tras el post-deploy hemos cargado las credenciales en el sistema, simplemente accedemos
root@installer:~# openstack service list +----------------------------------+-------------+----------------+ | ID | Name | Type | +----------------------------------+-------------+----------------+ | 7661d452b47744119dc67c0744b5212a | heat-cfn | cloudformation | | 86f08ffd2b8d4b2dab661307dbe80470 | glance | image | | 8c9413933a6e43eba04f80915c045aa1 | placement | placement | | 955e02cd0e494afa8451ed20b690aac4 | nova | compute | | 9c00db8de5ae4cc49d06f2c269233670 | heat | orchestration | | c87d33c2790340c59abf14de68876674 | nova_legacy | compute_legacy | | ce10c9d00a4e43c5a1af24be9beaba8e | keystone | identity | | fe5d4ad7a3f14a9eacca072289177ba4 | neutron | network | +----------------------------------+-------------+----------------+
Está de lujo. Espero verte publicando más a menudo. Sigue así campeón 😉
Me gustaMe gusta