Openstack con Kolla-Ansible

En la entrada de hoy vamos a ver como realizar una instalación de Openstack, usando Kolla-Ansible en dos nodos.

esquema

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».

login

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        |
+----------------------------------+-------------+----------------+

2 comentarios sobre “Openstack con Kolla-Ansible

Replica a Manuel Franco Cancelar la respuesta