Skip to content

Infrastructure-as-a-Service > configuration

Info

Dans l'écosystème académique français d'Infrastructre-as-a-Service, le choix s'est porté sur le produit Openstack pour offrir du service de type Cloud.
Les grosses instances sont fédérées par FG-cloud.

Pré-requis

Réseau

Warning

A minima, les ports TCP/IP Openstack suivants doivent etre accessibles (ouvert en sortie coté client):
- Le service WebUI Horizon (80,443),
- Le service de gestion des identitées Keystone (5000),
- Le service de gestion des images Glance (9292),
- Le service de gestion des instances Nova (8774),
- Le service de gestion des réseaux Neutron (9696),
- Le service de gestion des équilibreurs-de-charge Octavia (9876).

Logiciels

Disposer des commandes terraform et python-openstackclient.

Tip

Ces commandes sont disponibles par exemple via pkgx.

Configuration

~/projet-cloud/ $ cat pkgx.yaml
1
2
3
dependencies:
  opendev.org/openstack/python-openstackclient: ^6.3
  terraform.io: ^1.6

Activation

Tip

Sur une machine sur laquelle la commande dev définie par pkgx n'a jamais été invoquée, celle-ci va mettre en cache les dépendances binaires de notre projet.

~/projet-cloud/ $ dev
1
2
3
   ~/.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

Nous allons maintenant faire pointer l'environnement de notre répertoire de projet sur le projet OpenStack resinfo-discotech@stratuslab.production.virtualdata sur lequel nous venons de configurer l'authentification.

~/projet-cloud/ $ cat pkgx.yaml
1
2
3
4
5
env:
  OS_CLOUD: resinfo-discotech@stratuslab.production.virtualdata (1)
dependencies:
  opendev.org/openstack/python-openstackclient: ^6.3
  terraform.io: ^1.6
  1. Positionne la variable d'environnement OS_CLOUD

Test

On recharge notre environnement.

~/projet-cloud/ $ dev off && dev on
env -opendev.org/openstack/python-openstackclient^6.3 -terraform.io^1.6
env +opendev.org/openstack/python-openstackclient^6.3 +terraform.io^1.6
Doc

Puis on requette OpenStack pour vérifier que la configuration de l'authentification est correcte.

~/projet-cloud/ $ openstack quota show --compute
+----------------------+-------+
| 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

Provider OpenStack

Tip

La commande terraform va utiliser la variable d'environnement OS_CLOUD que nous avons paramétré dans le fichier pkgx.yaml de notre répertoire de travail.

~/projet-cloud/ $ cat terraform.tf
terraform {
  required_version = ">= 1.6.0"
  required_providers {
    openstack = {
      source = "terraform-provider-openstack/openstack"
      version = "~> 1.51.1"
    }
  }
}

provider openstack {}

Initialisation

On initialise l'état terraform via la sous-commande init de la commande terraform.

~/projet-cloud/ $ terraform init

Validation

On vérifie ce que terraform va faire.

~/projet-cloud/ $ terraform plan