Saltar al contenido

Configuración

En el ecosistema académico francés de Infraestructura-como-Servicio, la plataforma elegida para proveer servicios de tipo Cloud es Openstack.
Las instancias de mayor escala están federadas a través de FG-cloud.

Requisitos previos

Red

Como mínimo, los siguientes puertos TCP/IP de OpenStack deben ser accesibles (abiertos en salida en el lado cliente):

  • El servicio de interfaz web Horizon (80, 443),
  • El servicio de identidades Keystone (5000),
  • El servicio de imágenes Glance (9292),
  • El servicio de cómputo Nova (8774),
  • El servicio de redes Neutron (9696),
  • El servicio de balanceadores de carga Octavia (9876).

Software

Disponer de los comandos terraform y python-openstackclient.

Estos comandos están disponibles, por ejemplo, a través de pkgx.

Configuración

dependencies:
  opendev.org/openstack/python-openstackclient: ^6.3
  terraform.io: ^1.6

Activación

En una máquina donde el comando dev de pkgx nunca se haya ejecutado, se almacenarán en caché las dependencias binarias del proyecto.
 ✓  ~/.pkgx/terraform.io/v1.6.4
 ✓  ~/.pkgx/opendev.org/openstack/python-openstackclient/v6.3.0
env +opendev.org/openstack/python-openstackclient^6.3 +terraform.io^1.6

python-openstackclient

Apuntamos ahora el entorno de nuestro directorio de proyecto al proyecto OpenStack resinfo-discotech@stratuslab.production.virtualdata.

env:
  OS_CLOUD: resinfo-discotech@stratuslab.production.virtualdata
dependencies:
  opendev.org/openstack/python-openstackclient: ^6.3
  terraform.io: ^1.6

Prueba

Recargamos nuestro entorno.

env -opendev.org/openstack/python-openstackclient^6.3 -terraform.io^1.6
env +opendev.org/openstack/python-openstackclient^6.3 +terraform.io^1.6

Consultamos OpenStack para verificar que la configuración de autenticación es correcta.

+----------------------+-------+
| Resource             | Limit |
+----------------------+-------+
| cores                |    40 |
| instances            |    20 |
| ram                  | 51200 |
| fixed-ips            |    -1 |
| injected-file-size   | 10240 |
| injected-path-size   |   255 |
| injected-files       |     5 |
| key-pairs            |   100 |
| properties           |   128 |
| server-groups        |    10 |
| server-group-members |    10 |
| floating-ips         |    -1 |
| secgroup-rules       |    -1 |
| secgroups            |    -1 |
+----------------------+-------+

terraform

Proveedor OpenStack

El comando terraform utilizará la variable de entorno OS_CLOUD que hemos configurado en el fichero pkgx.yaml de nuestro directorio de trabajo.
terraform {
  required_version = ">= 1.6.0"
  required_providers {
    openstack = {
      source = "terraform-provider-openstack/openstack"
      version = "~> 1.51.1"
    }
  }
}

provider openstack {}

Inicialización

Inicializamos el estado de terraform mediante el subcomando init.

~/projet-cloud/ $ terraform init

Validación

Comprobamos qué va a hacer terraform.

~/projet-cloud/ $ terraform plan