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/pkgx.yaml | |
---|---|
Activation¶
Tip
Sur une machine sur laquelle la commande dev surchargée par pkgx n'a jamais été invoquée, celle-ci va mettre en cache les dépendances binaires de noitre projet.
~/tp/discotech/ $ dev
✓ ~/.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¶
Configuration¶
Tip
C'est une bonne pratique dans notre fichier de configuration Openstack de nommer nos entrées en tenant compte du projet, du domaine sur lequel on s'authentifie (default, stratuslab...), de l'instance Openstack sur laquelle on déploie (test, production...) ainsi que du site opérant cette instance (virtualdata, gricad...)
Warning
Il est recommandé de créer un identifiant Openstack d'application et de ne pas persister sur disque son identifiant/authentifiant personnel.
${HOME}/.config/openstack/clouds.yaml | |
---|---|
Exemple¶
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/pkgx.yaml | |
---|---|
- 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
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/terraform.tf | |
---|---|
Initialisation¶
On initialise l'état terraform via la sous-commande init de la commande terraform.
Validation¶
On vérifie ce que terraform va faire.