Cette documentation a été rédigée initialement par Jérôme Pansanel (IPHC) pour la [plateforme
SCIGNE](https://grand-est.fr/) et est distribuée sous licence libre dans le cadre de France Grille Cloud.
Elle a été adaptée aux spécificités de la plateforme cloud Openstack du LPNHE.
# Introduction
Le service de Cloud Computing IaaS (*Infrastructure as a Service*) permet aux utilisateurs de démarrer des
machines virtuelles (*VM*) de manière indépendante, et d'orchestrer ces
déploiements pour créer des infrastructures de calcul à la demande.
L'utilisateur peut choisir le système d'exploitation et le gabarit
(nombre de coeurs, quantité de mémoire et de disque) de chacune de ces
machines. Le fonctionnement de ce service repose sur le logiciel
[OpenStack](http://www.openstack.org).
Grâce aux différents modules disponibles (authentification, gestion des
images, gestion du stockage, conteneurs à la demande, ordonnanceur,
...), OpenStack permet de piloter une infrastructure Cloud et de fournir
un ensemble complet de services aux utilisateurs.
Cette documentation détaille l'utilisation du client en ligne de
commande (ou **CLI** pour *Command Line Interface*) `openstack` interagissant avec les modules OpenStack pour
utiliser efficacement le service de Cloud Computing IaaS. Une
alternative à l'utilisation de la ligne de commande est d'utiliser
[l'interface Web Horizon](https://lpnhe-cloud028.in2p3.fr/dashboard/).
# CLI: étapes obligatoires
## Définition des variables d'environnement
Pour pouvoir utiliser le service cloud, vous devez au préalable vous connecter via ssh (en utilisant le *login/password* de votre compte mail) à la passerelle correspondant à votre projet :
``` {.sourceCode .console}
$ ssh username@IP_PROJECT_SSHGATE
```
où le champ `IP_PROJECT_SSHGATE` est à remplacer par l'adresse IP qui vous a été communiquée par mail.
Il faut maintenant configurer le client. Pour cela, créer
le fichier `${HOME}/.cloud.env` avec le contenu suivant (les
valeurs *username*, *password* et *projectname* sont à remplacer par celles qui vous
ont été transmises lors de la création de votre compte sur le service) :
``` {.sourceCode .bash}
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=projectname
export OS_USERNAME=username
export OS_PASSWORD=password
export OS_AUTH_URL=http://134.158.159.28:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
```
Assurez-vous, avec la commande suivante, qu'il ne soit pas accessible à d'autres utilisateurs que vous :
``` {.sourceCode .console}
$ chmod 0400 ${HOME}/.cloud.env
```
Une fois ce fichier créé, il doit être *sourcé* pour charger les
différentes variables d'environnement dans votre shell actuel :
``` {.sourceCode .console}
$ source ${HOME}/.cloud.env
```
Il est nécessaire de réaliser cette étape à chaque fois que vous lancez
un nouveau shell, à moins que vous n'ajoutiez la commande *source*
précédente au fichier d'initialisation de votre shell (par exemple, le
fichier `${HOME}/.bashrc` pour le shell `bash`).
Vous pouvez maintenant tester que votre client fonctionne et qu'il
arrive à se connecter correctement au Cloud :
``` {.sourceCode .console}
$ openstack server list
```
> **IMPORTANT**
>
> Toutes les commandes du type `openstack [...]` de cette documentation ne peuvent être
> exécutées que sur la passerelle correspondant à votre projet.
>
## Changement du mot de passe
Il est fortement conseillé de changer votre mot de passe avant votre
première utilisation du service. Pour cela, utilisez la commande
suivante :
``` {.sourceCode .console}
$ openstack user password set
Current Password:
New Password:
Repeat New Password:
You should update the password you are using to authenticate to match your new password
```
Après avoir effectué cette opération, votre nouveau mot de passe est
changé côté serveur, mais il n'est pas encore pris en compte coté client :
``` {.sourceCode .console}
$ openstack server list
ERROR: Invalid OpenStack Nova credentials.
```
Il faut modifier aussi la variable d'environnement correspondante :
La commande `ssh-keygen -t rsa -b 4096` génère par défaut une clé privée `id_rsa` et une clé publique `id_rsa.pub` dans le dossier `.ssh/`. La clé privée ne doit jamais être communiquée.
# Gestion des machines virtuelles
Cette partie décrit la gestion des machines virtuelles.
## Découverte de l'environnement OpenStack
Quelques commandes permettent de voir les éléments disponibles pour
construire son image virtuelle. Tout d'abord, la liste des images de
systèmes d'exploitation pour les machines virtuelles est obtenue avec :
Dans le tableau précédent, nous remarquons que deux réseaux sont
disponibles, `uplink_v4` et `project_network`. Le réseau
`uplink_v4` est utilisé pour fournir une adresse IP publique à la passerelle `project_sshgate`. Cette passerelle vous permet de vous connecter depuis le laboratoire aux machines virtuelles que vous créez. Ces dernières ont une adresse IP privée attribuée par le réseau `project_network` et ne sont donc pas accessible directement. Donc lorsque vous créerez vos machines, le réseau que vous devez utiliser est `project_network`.
Lancement de la machine virtuelle ( VM )
----------------------------------------
Dans la section précédente, nous avons récupéré la liste de tous les
éléments utilisables pour composer la machine virtuelle. Une fois que
vous avez choisi les différents éléments de votre machine virtuelle,
elle peut être instanciée à l'aide de la commande
`openstack server create`. Par exemple, si nous souhaitons lancer une
image Centos 7 avec 1 cpu, 2 Go de RAM et 20 Go de disque dur sur le
réseau `project_network` et dont le nom sera *MY\_VM\_NAME*, nous
utiliserons la commande suivante :
``` {.sourceCode .console}
$ openstack server create --key-name cloudkey --image CentOS-7 \