Introduction¶
Le service de Cloud Computing IaaS de la plateforme SCIGNE 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.
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 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.
L’équipe de la plateforme SCIGNE se tient disponible pour réaliser des formations sur l’utilisation de ce service. Pour cela, n’hésitez pas à nous contacter !
Installation¶
Cette section détaille la procédure d’installation du client en ligne de commande d’OpenStack.
Le client OpenStack est disponible pour différents systèmes d’exploitation, soit à travers une installation avec PIP ou par les gestionnaires de paquets APT ou YUM pour les distributions Linux Debian, Ubuntu, RedHat ou dérivées. Dans tous les cas, il est nécessaire que le logiciel Python (version 2.7 ou ultérieure) soit installé. Une seule installation est nécessaire, soit avec le gestionnaire de paquets de votre distribution, soit avec PIP. Nous recommandons d’utiliser l’installation à l’aide du gestionnaire de paquets quand c’est possible.
Les différents modes d’installation sont détaillées ci-après. Il faut éviter d’utiliser deux modes d’installation, en mélangeant par exemple PIP avec les paquets de la distribution, pour éviter des conflits entre les différentes versions qui peuvent rendre le client inutilisable.
Installation avec PIP¶
Pour suivre cette partie, il est nécessaire que PIP soit installé. Cette installation est détaillée sur le site de PIP. Le client OpenStack est installé avec les commandes suivantes :
$ pip install python-openstackclient
Installation sur les systèmes Debian et Ubuntu¶
La version du client Openstack fournie par défaut dans Ubuntu peut être trop ancienne et présenter des bugs. Il faut donc utiliser une version plus récente, disponible dans le dépôt cloud-archive. Pour installer un client récent (version Train dans cet exemple), il faut exécuter en tant que super-utilisateur :
$ sudo add-apt-repository cloud-archive:train
$ sudo apt-get update
$ sudo apt-get install python-openstackclient
Installation sur les systèmes RedHat et dérivés¶
Les procédures d’installation pour les différentes distributions basées sur RedHat ne sont pas identiques.
Installation sur RedHat¶
L’installation en utilisant yum avec le système RedHat est réalisée en quelques étapes suivantes. Le logiciel n’est disponible que pour les versions 7 et 8 de RedHat. Si vous souhaitez installer les clients sur une version antérieure, il est nécessaire de suivre la méthode d’installation PIP.
$ sudo yum install -y https://www.rdoproject.org/repos/openstack/openstack-train/rdo-release-train-1.noarch.rpm
$ sudo yum update -y
$ sudo yum install -y python-openstackclient
Installation sur CentOS¶
L’installation en utilisant yum avec le système CentOS est réalisée en quelques étapes suivantes. Le logiciel n’est disponible que pour la version 7 de CentOS. Si vous souhaitez installer les clients sur une version antérieure, il est nécessaire de suivre la méthode d’installation PIP.
$ sudo yum install -y centos-release-openstack-pike
$ sudo yum update -y
$ sudo yum install -y python-openstackclient
Note
Le paquet centos-release-openstack-pike
est fournit par le
dépôt extras, activé par défaut dans CentOS 7.
Vérification de l’installation¶
Exécutez la commande openstack avec l’argument --version
pour
vérifier que le client est correctement installé :
$ openstack --version
openstack 3.14.2
Notez que la version retournée par la commande peut différer de la version ci-dessus.
Définition des variables d’environnement¶
Après avoir réalisé l’installation, vous êtes prêts à utiliser le
service. La première étape est de configurer le client. Pour cela,
créer le fichier ${HOME}/.novacreds/iphc.sh
avec le contenu
suivant (les valeurs username, password et FG_Cloud sont à remplacer
par celles qui vous ont été transmises lors de la création de votre
compte sur le service) :
export LANG=en_US.utf-8
export LC_ALL=en_US.utf-8
export OS_USERNAME=username
export OS_PASSWORD=password
export OS_PROJECT_NAME=FG_Cloud
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=https://sbgcloud.in2p3.fr:5000/v3
export OS_IDENTITY_API_VERSION=3
Une fois que ce fichier est créé, il doit être sourcé pour charger les différentes variables d’environnement dans votre shell actuel :
$ source ${HOME}/.novacreds/iphc.sh
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 bash).
Vous pouvez maintenant tester que votre client fonctionne et qu’il arrive à se connecter correctement au Cloud :
$ openstack server list
+--------------------------------------+-------+--------+---------------------------+------------------------------+
| ID | Name | Status | Networks | Image Name |
+--------------------------------------+-------+--------+---------------------------+------------------------------+
| 36dd1e32-2a79-4e78-a4e1-999335de3cbd | MY_VM | ACTIVE | fg-default-net=172.16.3.222 | Image for Ubuntu Server 2... |
+--------------------------------------+-------+--------+---------------------------+------------------------------+
La commande précédente permet d’afficher la liste des machines
virtuelles en cours de fonctionnement dans le projet défini par
la variable OS_PROJECT_NAME
au moment où vous l’exécutez. Ainsi,
la liste affichée différera de celle utilisée pour cet exemple.
Changement du mot de passe¶
Pour des raisons de sécurité, il est nécessaire de changer votre mot de passe avant d’utiliser le service Cloud de la plateforme SCIGNE. Pour cela, utilisez la commande suivante :
$ 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 :
$ openstack server list
ERROR: Invalid OpenStack Nova credentials.
Il faut modifier aussi la variable d’environnement correspondante :
$ export OS_PASSWORD=MY_NEW_PASSWORD
$ openstack server list
+--------------------------------------+-------+--------+---------------------------+-------------------------------------------------+
| ID | Name | Status | Networks | Image Name |
+--------------------------------------+-------+--------+---------------------------+-------------------------------------------------+
| 36dd1e32-2a79-4e78-a4e1-999335de3cbd | MY_VM | ACTIVE | fg-default-net=172.16.3.222 | Image for Ubuntu Server 20.04 LTS [Ubuntu/20.0] |
+--------------------------------------+-------+--------+---------------------------+-------------------------------------------------+
Si cette dernière commande s’effectue avec succès, vous pouvez maintenant
mettre le fichier ${HOME}/.novacreds/iphc.sh
à jour avec votre nouveau
mot de passe.
Une fois que vous avez mis à jour le mot de passe dans le fichier
${HOME}/.novacreds/iphc.sh
, il est nécessaire de sourcer à nouveau
ce fichier pour que son nouveau contenu soit pris en compte.
L’aide en ligne est disponible :
$ openstack help user set
Change current user password
optional arguments:
-h, --help show this help message and exit
--password <new-password>
New user password
--original-password <original-password>
Original user password
Gestion de la clé SSH¶
Afin de pouvoir se connecter à la machine virtuelle, il est nécessaire d’utiliser une clé SSH et de l’enregistrer auprès du serveur OpenStack :
$ ssh-keygen -t rsa -f ${HOME}/.novacreds/cloudkey
[...]
$ openstack keypair create --public-key=${HOME}/.novacreds/cloudkey.pub cloudkey
$ openstack keypair list
+----------+-------------------------------------------------+
| Name | Fingerprint |
+----------+-------------------------------------------------+
| cloudkey | 33:91:4b:38:52:63:1d:18:7b:e0:e3:0d:3b:63:ce:4b |
+----------+-------------------------------------------------+
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 :
$ openstack image list
+--------------------------------------+---------------------------------------------------------+--------+
| ID | Name | Status |
+--------------------------------------+---------------------------------------------------------+--------+
| 926204b5-51d1-4d2e-81cf-a6d429b76121 | Image for CentOS 6 minimal [CentOS/6.x/KVM]_Appliance | active |
| 92876744-962e-4831-851e-b57e68bc8cdc | Image for CentOS Server 6 [CentOS/6/KVM] | active |
| 05e60b88-0fe7-42e7-a69d-0c3f7cd50955 | Image for CentOS Server 7 [CentOS/7/KVM] | active |
| 114486ef-70f5-4c7f-ab91-0591448f0408 | Image for Fedora Atomic 27 [Fedora/27/KVM] | active |
| 315dfa48-bbbd-4391-8dbd-f235149e8548 | Image for Ubuntu Server 14.04.05 LTS [Ubuntu/14.04/KVM] | active |
| e61497cd-8b23-4297-8742-557851c8d278 | Image for Ubuntu Server 16.04 LTS [Ubuntu/16.04/KVM] | active |
+--------------------------------------+---------------------------------------------------------+--------+
Note
La liste des images disponibles n’étant pas figée (les images sont mises à jour réguliérement), il est fort probable que vous obteniez un résultat un peu différent.
Ensuite, la liste des gabarits de machines virtuelles (flavor) disponibles est affichée avec :
$ openstack flavor list
+--------------------------------------+-------------------+--------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+-------------------+--------+------+-----------+-------+-----------+
| 00b54b02-63d0-4d15-927d-6e2f5a4d4920 | g4.xlarge-4xmem | 65536 | 40 | 0 | 8 | True |
| 048fc66b-d60a-4d07-b1e4-1fae3e6ab395 | m1.small-mmem | 4096 | 20 | 0 | 1 | True |
| 1ff24edd-1283-469c-abc1-7f697873d63c | m1.2xlarge | 32768 | 20 | 0 | 16 | True |
| 2 | m1.small | 2048 | 20 | 0 | 1 | True |
| 242a578e-b314-4f33-83ea-b05f50f08960 | g2.xlarge-4xmem | 65536 | 40 | 0 | 8 | True |
| 588f4548-b8e7-48fd-8ee5-357662a4c08f | m1.2xlarge-8xmem | 131072 | 20 | 0 | 16 | True |
| 5f0a3206-5f25-4341-beba-7d0a96cdb108 | m1.8xlarge-16xmem | 262144 | 20 | 0 | 64 | True |
| 6cdf0bde-85c6-4e92-b7ab-f80c75a695b7 | m1.xlarge | 16384 | 20 | 0 | 8 | True |
| 7005975e-735f-4b08-a69d-2ce1a771be85 | m1.8xlarge | 131072 | 20 | 0 | 64 | True |
| 73730dea-ca08-47fb-ac0b-2ebd6dbe1465 | g1.xlarge-4xmem | 65536 | 40 | 0 | 8 | True |
| 895f886c-85dd-4924-9a35-4177655559c5 | m1.large-2d | 8192 | 40 | 0 | 4 | True |
| ab1fbd4c-324d-4155-bd0f-72f077f0ebce | m1.medium | 4096 | 20 | 0 | 2 | True |
| ab9784d7-e785-4f4e-a415-1d188505b5eb | m1.large | 8192 | 20 | 0 | 4 | True |
| aca4fac9-4761-4735-88b8-4102d6f4ecb3 | m1.2xlarge-4xmem | 65536 | 20 | 0 | 16 | True |
| cf7f0d1f-8ecd-4b19-b6bb-f2f89cf55bd0 | m1.4xlarge | 65536 | 20 | 0 | 32 | True |
| d6aae2a5-8f5d-40dd-b6f3-2e8d9fb7efa1 | m1.xlarge-8xmem | 131072 | 20 | 0 | 8 | True |
+--------------------------------------+-------------------+--------+------+-----------+-------+-----------+
Enfin, pour connaître les réseaux utilisables par la machine virtuelle, utilisez :
$ openstack network list
+--------------------------------------+--------------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+--------------+--------------------------------------+
| 3877b236-dbca-4541-a007-7444d38acabc | fg-default-net | c8ba2397-a874-47e9-8f54-0ed433fa2240 |
| 8fa5eb12-ee72-4e77-a45b-8fde11efc75f | ext-net | 6e8ffc7a-4536-4c21-a8e5-00227ee8619a |
+--------------------------------------+--------------+--------------------------------------+
Dans le tableau précédent, deux réseaux sont disponibles :
fg-default-net
et ext-net
. En fait, seul le réseau
fg-default-net
est utilisable directement au boot par la machine
virtuelle. L’autre réseau est utilisé par la suite pour fournir des
adresses IPs publiques.
Lancement de la machine virtuelle¶
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
(VM), elle peut être instanciée à l’aide de la commande
openstack server create. Par exemple, si nous souhaitons
lancer une image Ubuntu avec 1 cpu, 2 Go de RAM et 20 Go de disque dur
sur le réseau fg-default-net
et dont le nom sera MY_VM_NAME, nous
utiliserons la commande suivante :
$ openstack server create --key-name cloudkey --image 979d05cb-4164-4f0b-91da-c70608285401 \
--flavor m1.small --nic net-id=3877b236-dbca-4541-a007-7444d38acabc MY_VM_NAME
+-----------------------------+----------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------------+----------------------------------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | |
| OS-EXT-STS:power_state | NOSTATE |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | None |
| OS-SRV-USG:terminated_at | None |
| accessIPv4 | |
| accessIPv6 | |
| addresses | |
| adminPass | W6jJUvpRhAyU |
| config_drive | |
| created | 2021-11-24T06:24:39Z |
| flavor | m1.small (2) |
| hostId | |
| id | 367110ac-b05a-4855-884e-e3b00717ab4a |
| image | Image for Ubuntu Server 20.04 LTS [Ubuntu/20.0] (979d05cb-4164-4f0b-91da-c70608285401) |
| key_name | cloudkey |
| name | MY_VM_NAME |
| progress | 0 |
| project_id | 92d2f61945214c8a80d12d696b82426e |
| properties | |
| security_groups | name='default' |
| status | BUILD |
| updated | 2021-11-24T06:24:39Z |
| user_id | d04e19e72801e8d9d802a6178a7d5a006e3cc9383c35e82a769fc6686782b667 |
| volumes_attached | |
+-----------------------------+----------------------------------------------------------------------------------------+
Note
Lors du lancement de machines virtuelles, vous pouvez vous retrouver confronté à des problèmes de dépassement de quota :
$ openstack server create [...] MY_VM_NAME
ERROR: Quota exceeded for cores: Requested 1, but already used 22 of 22 cores
(HTTP 413) (Request-ID: req-6aefedba-4666-4393-b6a1-24423f3bef78)
Dans cet exemple, l’erreur vous indique que tous les processeurs disponibles pour votre groupe (project) sont actuellement occupés. Vous pouvez soit attendre que d’autres utilisateurs en libèrent, ou alors demander aux administrateurs du service de vous attribuer un quota supplémentaire.
Vous pouvez consulter les limites de quota grâce à la commande suivante :
$ openstack quota show
+-----------------------+----------------------------------+
| Field | Value |
+-----------------------+----------------------------------+
| backup-gigabytes | 1000 |
| backups | 10 |
| cores | 256 |
| fixed-ips | -1 |
| floating-ips | 64 |
| gigabytes | 8192 |
| gigabytes___DEFAULT__ | -1 |
| gigabytes_ceph | -1 |
| groups | 10 |
| health_monitors | None |
| injected-file-size | 10240 |
| injected-files | 5 |
| injected-path-size | 255 |
| instances | 64 |
| key-pairs | 100 |
| l7_policies | None |
| listeners | None |
| load_balancers | None |
| location | None |
| name | None |
| networks | 100 |
| per-volume-gigabytes | -1 |
| pools | None |
| ports | 500 |
| project | 92d2f61945214c8a80d12d696b82426e |
| project_name | FG_Cloud |
| properties | 128 |
| ram | 1048576 |
| rbac_policies | 10 |
| routers | 10 |
| secgroup-rules | 256 |
| secgroups | 32 |
| server-group-members | 10 |
| server-groups | 32 |
| snapshots | 10 |
| snapshots___DEFAULT__ | -1 |
| snapshots_ceph | -1 |
| subnet_pools | -1 |
| subnets | 100 |
| volumes | 64 |
| volumes___DEFAULT__ | -1 |
| volumes_ceph | -1 |
+-----------------------+----------------------------------+
L’aide en ligne est disponible et décrit tous les paramètres utilisables :
$ openstack help server create
usage: openstack server create [-h] [-f {json,shell,table,value,yaml}]
[-c COLUMN] [--max-width <integer>]
[--fit-width] [--print-empty] [--noindent]
[--prefix PREFIX]
(--image <image> | --volume <volume>) --flavor
<flavor> [--security-group <security-group>]
[--key-name <key-name>]
[--property <key=value>]
[--file <dest-filename=source-filename>]
[--user-data <user-data>]
[--availability-zone <zone-name>]
[--block-device-mapping <dev-name=mapping>]
[--nic <net-id=net-uuid,v4-fixed-ip=ip-addr,v6-fixed-ip=ip-addr,port-id=port-uuid,auto,none>]
[--network <network>] [--port <port>]
[--hint <key=value>]
[--config-drive <config-drive-volume>|True]
[--min <count>] [--max <count>] [--wait]
<server-name>
Create a new server
[...]
Note
Lors de l’utilisation de la commande openstack, il est possible
d’utiliser aussi bien les noms (par exemple MY_VM_NAME) que les
identifiants (par exemple 36dd1e32-2a79-4e78-a4e1-999335de3cbd
).
Il est recommandé d’utiliser les identifiants, car ils sont uniques
(il est possible de lancer deux machines virtuelles avec le même
nom).
Avec la commande suivante, il est possible de suivre l’état de la VM :
$ openstack server show MY_VM_NAME
+-----------------------------+----------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------------+----------------------------------------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-STS:power_state | Running |
| OS-EXT-STS:task_state | None |
| OS-EXT-STS:vm_state | active |
| OS-SRV-USG:launched_at | 2021-11-24T06:26:47.000000 |
| OS-SRV-USG:terminated_at | None |
| accessIPv4 | |
| accessIPv6 | |
| addresses | fg-default-net=172.16.19.226 |
| config_drive | |
| created | 2021-11-24T06:24:39Z |
| flavor | m1.small (2) |
| hostId | cf41a7ccb0611d6dcc24e54c5983dbe17dda36cf954f5e4625607474 |
| id | 367110ac-b05a-4855-884e-e3b00717ab4a |
| image | Image for Ubuntu Server 20.04 LTS [Ubuntu/20.0] (979d05cb-4164-4f0b-91da-c70608285401) |
| key_name | cloudkey |
| name | MY_VM_NAME |
| progress | 0 |
| project_id | 92d2f61945214c8a80d12d696b82426e |
| properties | |
| security_groups | name='default' |
| status | ACTIVE |
| updated | 2021-11-24T06:25:49Z |
| user_id | d04e19e72801e8d9d802a6178a7d5a006e3cc9383c35e82a769fc6686782b667 |
| volumes_attached | |
+-----------------------------+----------------------------------------------------------------------------------------+
Le status ACTIVE nous indique que la VM est prête à être utilisée. Toutefois, elle ne possède pas encore d’interface vers le réseau externe, puisque son adresse IP est dans le réseau interne. Avant de pouvoir s’y connecter par SSH, il est nécessaire de lui attacher une adresse IP publique (visible et accessible depuis internet). Ce point est détaillé dans le chapitre Gestion du réseau.
Personnalisation des machines virtuelles¶
Vous pouvez personnaliser vos machines virtuelles lors de leur démarrage
initial en utilisant le paramètre --user-data
avec la
commande openstack server create. Ce paramètre référence un
fichier contenant des instructions pour le logiciel cloud-init
qui est présent dans la machine virtuelle.
L’exemple suivant met à jour le système et installe des paquets supplémentaires, utiles pour chiffrer un volume et améliorer la sécurité.
Créez un fichier cloud_init_cfg.txt
contenant :
#cloud-config
# Upgrade the instance OS packages on first boot
package_upgrade: true
# Add packages for entropy gathering and encrypted volume management
packages:
- cryptsetup
- fail2ban
- haveged
Note
le premier caractère “#” doit figurer tel-quel dans le fichier, il
indique au logiciel cloud-init le format du contenu du fichier
cloud_init_cfg.txt
.
Et utilisez-le lors du démarrage de votre machine virtuelle :
$ openstack server create [...] --user-data cloud_init_cfg.txt MY_VM_NAME
Note
Attention : l’exécution du logiciel cloud-init n’est pas
instantanée. Si vous demandez une mise à jour complète du système
d’exploitation, cela peut prendre plusieurs minutes avant d’être
effectué, alors que vous pouvez déjà vous connecter à la VM grâce à
ssh. Pour vérifier que tout s’est bien passé, vous pouvez
vérifier le contenu des fichiers : /var/log/cloud-init.log
et
/var/log/cloud-init-output.log
sur la machine virtuelle.
Le logiciel cloud-init est très sensible au format du fichier
cloud_init_cfg.txt
, les espaces, tabulations et autres éléments
de formattage sont importants. En plus de vous référer à la
documentation citée ci-dessous, vous pouvez vous aider du logiciel
yamllint pour vérifier le format. Toutefois celui-ci est plus
pointilleux que cloud-init, donc n’utilisez ses remarques que de
manière informative. Construisez votre script de contextualisation
petit à petit en vérifiant à chaque étape que ce que vous avez
ajouté fonctionne correctement.
Référez-vous à la documentation de cloud-init pour de plus amples informations sur les possibilités de configuration.
Gestion du réseau¶
Dans un premier temps, il faut vérifier si une adresse IP est disponible :
$ openstack floating ip list -c ID -c "Floating IP Address" -c "Fixed IP Address"
+--------------------------------------+---------------------+------------------+
| ID | Floating IP Address | Fixed IP Address |
+--------------------------------------+---------------------+------------------+
| 03a25383-a3ee-42d9-8dc2-7184257f55c3 | 134.158.151.32 | 172.16.19.133 |
| 07514ea0-8b5c-4eb4-83b1-791c848ae29d | 134.158.151.205 | 172.16.19.43 |
| 09918b58-9ae3-4e9f-a759-7929ab3f78f6 | 134.158.151.110 | None |
| 106cdc30-1aba-4ac0-b9ec-373321488487 | 134.158.151.142 | 172.16.19.20 |
...
+--------------------------------------+---------------------+------------------+
Dans cette liste, trois adresses IPs sont déjà associées à une adresse IP
privée et une adresse est disponible (le champs Fixed IP Address
a pour
valeur None). Si toutes les adresses IPs sont utilisées, il faut en
créer une nouvelle :
$ openstack floating ip create ext-net
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| description | |
| fixed_ip_address | None |
| floating_ip_address | 134.158.151.224 |
| floating_network_id | 314be651-fcaa-4dcc-ac0a-dfdcd7e58ba1 |
| headers | |
| id | f60c77d9-bae4-422d-83c3-16d155bac396 |
| port_id | None |
| project_id | 59402a7327114c2cb97f0d9e6263cdda |
| router_id | None |
| status | DOWN |
+---------------------+--------------------------------------+
Lorsqu’une adresse IP est disponible, elle peut être attachée à notre VM avec la commande suivante :
$ openstack server add floating ip MY_VM_NAME 134.158.151.224
Il est possible de vérifier que l’adresse IP a bien été atttachée :
$ openstack server list --name MY_VM_NAME -c ID -c Name -c Networks
+--------------------------------------+------------+--------------------------------------------+
| ID | Name | Networks |
+--------------------------------------+------------+--------------------------------------------+
| 91243eef-9168-4250-b4d8-466f02797823 | MY_VM_NAME | fg-default-net=172.16.3.222, 134.158.151.224 |
+--------------------------------------+------------+--------------------------------------------+
Maintenant que la machine virtuelle a une adresse IP publique, vous pouvez tester la connectivité avec la commande ping :
$ ping -c 3 134.158.151.224
Et vous pouvez vous y connecter avec ssh :
$ ssh -i ${HOME}/.novacreds/cloudkey centos@134.158.151.224
Si la connexion à la machine virtuelle par SSH échoue, consultez la section Erreur de connexion avec SSH.
Note
Les noms d’utilisateur par défaut sont pour les images Ubuntu et pour les images CentOS respectivement ubuntu et centos.
Gestion du stockage¶
Par défaut, lorsqu’une machine virtuelle est détruite, tous les changements que vous avez pu y apporter disparaissent. Pour pouvoir stocker des données réutilisables entre plusieurs sessions, il est nécessaire de créer des disques permanents. Pour afficher la liste de vos disques, utilisez :
$ openstack volume list
+--------------------------------------+---------------+-----------+------+--------------------------------------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------+---------------+-----------+------+--------------------------------------------+
| d874ed50-f4dd-11e6-b99e-8f36e05a44c6 | MONGODB | in-use | 100 | Attached to DATA_ANALYSIS on /dev/vdd |
| e3469d32-f4dd-11e6-b9be-3b36b57652e5 | DATA_1 | in-use | 200 | Attached to DATA_ANALYSIS on /dev/vdc |
| ec8de7c4-f4dd-11e6-a96b-7f9e7042f1e8 | chemistry-vol | available | 200 | |
| 0243cb42-f4de-11e6-9d72-b73ff56f8215 | VM_IPHC_START | available | 10 | |
| 09c16c44-f4de-11e6-8b45-433e4aa51e4c | SIMDAT_VOLUME | available | 8 | |
| 0e48a656-f4de-11e6-878b-eb0c0efe4cca | vmdata_disk_2 | available | 250 | |
| 13c86eae-f4de-11e6-b316-1f8b7ed3376e | DATA_DISK | in-use | 50 | Attached to DATA_ANALYSIS on /dev/vdb |
| 179a0326-f4de-11e6-920c-c7f2b28ed02b | R_Data | in-use | 8 | Attached to vm_iphc_r_analysis on /dev/vdb |
+--------------------------------------+---------------+-----------+------+--------------------------------------------+
Pour créer un nouvel espace de stockage persistant (nommé MY_VOLUME_NAME et d’une taille de 8 Go), exécutez :
$ openstack volume create --size 8 MY_VOLUME_NAME
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2017-02-16T10:08:02.493311 |
| description | None |
| encrypted | False |
| id | 58230433-086f-4ff2-99ac-8c3e0f5520c2 |
| multiattach | False |
| name | MY_VOLUME_NAME |
| properties | |
| replication_status | disabled |
| size | 8 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | None |
| updated_at | None |
| user_id | c13c93bf1b79447c8cd1464128d7685f |
+---------------------+--------------------------------------+
Pour attacher ce nouveau volume à la machine virtuelle à l’aide de son identifiant, utilisez la commande :
$ openstack server add volume --device /dev/vdb MY_VM_NAME 58230433-086f-4ff2-99ac-8c3e0f5520c2
Le stockage sera mis à disposition par le système d’exploitation en tant que
/dev/vdb
. Pour vérifier que le disque est bien associé, vérifiez que la
colonne Status
à pour valeur in-use et que la colonne Attached to
contient bien l’identifiant de la VM :
$ openstack volume list --name MY_VOLUME_NAME
+--------------------------------------+----------------+--------+------+------------------------------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------+----------------+--------+------+------------------------------------+
| 58230433-086f-4ff2-99ac-8c3e0f5520c2 | MY_VOLUME_NAME | in-use | 8 | Attached to MY_VM_NAME on /dev/vdb |
+--------------------------------------+-------------------------+------+------------------------------------+
Au départ, ce disque ne contient aucune donnée et n’est pas formaté. Si ce disque est destiné à contenir des données confidentielles, nous vous recommandons de le chiffrer. Cette opération est détaillée dans le chapitre Chiffrage des disques permanents. Dans le cas contraire, connectez-vous à votre VM pour formater ce disque et le monter :
[centos@my-vm-name ~]$ sudo su
[root@my-vm-name centos]# mkfs -t ext4 /dev/vdb
[root@my-vm-name centos]# mkdir /storage1
[root@my-vm-name centos]# mount /dev/vdb /storage1
[root@my-vm-name centos]# df -h /storage1
Filesystem Size Used Avail Use% Mounted on
/dev/vdb 8.0G 3.0M 7.8G 1% /storage1
La dernière commande permet de vérifier que nous avons bien l’espace
disponible de la taille choisie (ici 8 Go) monté sur /storage1
.
Note
Le disque virtuel peut également être partitionné avant le formatage. Pour ce faire, référez-vous à la documentation du système d’exploitation choisi.
Vous pouvez le déplacer d’une machine virtuelle à une autre en le démontant au sein de la VM (pour garantir l’intégrité des données stockées sur ce disque) :
[root@my-vm-name centos]# umount /storage1
Note
Si vous avez ajouté votre volume persistant dans le fichier
/etc/fstab
de votre machine virtuelle (c.f. plus bas), pensez à
supprimer la ligne en question avant de démonter le disque virtuel
sous peine de ne plus pouvoir démarrer votre VM.
Puis en détachant le disque à l’aide des commandes :
$ openstack server remove volume MY_VM_NAME 58230433-086f-4ff2-99ac-8c3e0f5520c2
$ openstack volume list --name MY_VOLUME_NAME
+--------------------------------------+----------------+-----------+------+-------------+
| ID | Display Name | Status | Size | Attached to |
+--------------------------------------+----------------+-----------+------+-------------+
| 58230433-086f-4ff2-99ac-8c3e0f5520c2 | MY_VOLUME_NAME | available | 8 | |
+--------------------------------------+----------------------------+------+-------------+
Note
Lorsque la machine virtuelle est redémarrée, le disque n’est pas
monté automatiquement au système de fichier. Pour monter le disque
automatiquement, il faut ajouter une entrée dans le fichier
/etc/fstab
.
Fin d’une machine virtuelle¶
Une fois les tâches sur la VM terminées, elle peut être arrêtée pour être redémarrée plus tard :
$ openstack server stop MY_VM_NAME
$ openstack server start MY_VM_NAME
Afin de libérer les ressources, la VM peut également être supprimée. Dans ce cas, toutes les modifications qui ont été apportées à l’image (installation de paquets, …) seront perdues, hormis celles qui sont sur le disque persistant. Avant de supprimer la VM, il faut se connecter à la VM et démonter le disque persistant (pour éviter de corrompre les données) :
[root@my-vm-name centos]# umount /storage1
Si vous n’avez plus besoin des données sur le disque persistant, il faut le réinitialiser avec des données aléatoires pour des raisons de confidentialité (cette opération peut être assez longue) :
[root@my-vm-name centos]# dd if=/dev/urandom of=/dev/vdb bs=4k
Puis, une fois la suppression des données effectives, détacher et supprimer le volume avec :
$ openstack server remove volume MY_VM_NAME 58230433-086f-4ff2-99ac-8c3e0f5520c2
$ openstack volume delete 58230433-086f-4ff2-99ac-8c3e0f5520c2
Enfin, vous pouvez supprimer la VM :
$ openstack server delete MY_VM_NAME
Utilisation avancée¶
Ce chapitre décrit des possibilités d’utilisation avancée du service de Cloud Computing IaaS.
Synchronisation du temps¶
L’accès aux serveurs NTP à l’extérieur de la plateforme SCIGNE n’est pas autorisé.. Si vous utilisez un outil de synchronisation du temps, vous devez le configurer avec les serveurs suivants :
sbgntp1.in2p3.fr (193.48.89.16)
sbgntp2.in2p3.fr (193.48.89.17)
ntpd¶
Si vous utilisez ntpd pour la synchronisation du temps, il faut
que les lignes suivantes soient renseignées dans le fichier
/etc/ntp.conf
:
server 193.48.89.16
restrict 193.48.89.16 mask 255.255.255.255 nomodify notrap noquery
server 193.48.89.17
restrict 193.48.89.17 mask 255.255.255.255 nomodify notrap noquery
chronyd¶
Si vous utilisez chronyd pour la synchronisation du temps, if faut
que les lignes suivantes soient renseignées dans le fichier
/etc/chrony.conf
:
server 193.48.89.16
server 193.48.89.17
Chiffrage des disques permanents¶
Cette section détaille l’utilisation de l’outil dm-crypt/LUKS pour le chiffrage des disques permanents. Cet outil est fourni en standard par les distributions Linux et peut facilement être installé avec le gestionnaire de paquets dans votre machine virtuelle. L’exemple se base sur l’utilisation d’une distribution Ubuntu, mais peut facilement être réalisé avec une distribution RedHat.
ubuntu@my-vm-name:~$ sudo su -
sudo: unable to resolve host my-vm-name
root@my-vm-name:~# apt -y update
root@my-vm-name:~# apt -y install cryptsetup
Pour chiffrer un disque permanent, il faut tout d’abord l’initialiser
correctement. Dans l’exemple ci-dessous, le disque dénommé /dev/vdb
est dans un premier temps rempli de données aléatoires, puis il est
initialisé à l’aide de la commande cryptsetup luksFormat ci-dessous.
Cette première étape peut être assez longue.
root@my-vm-name:~# dd if=/dev/urandom of=/dev/vdb bs=4k
root@my-vm-name:~# cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 \
--iter-time 5000 --use-random luksFormat /dev/vdb
Si cette dernière commande ralentit, voire bloque avec le message suivant :
System is out of entropy while generating volume key.
Please move mouse or type some text in another window to gather some random events.
Generating key (0% done).
Alors vous pouvez rendre la commande cryptsetup […] luksFormat plus rapide en installant préalablement le programme haveged dans votre machine virtuelle (ce qui est déjà fait si vous avez suivi la procédure décrite dans le chapitre Personnalisation des machines virtuelles).
La commande suivante permet de vérifier que le disque est maintenant du type LUKS :
root@my-vm-name:~# cryptsetup luksDump /dev/vdb
LUKS header information for /dev/vdb
Version: 1
Cipher name: aes
Cipher mode: xts-plain64
Hash spec: sha512
Payload offset: 4096
MK bits: 512
MK digest: c4 f7 4b 02 2a 3f 12 c1 2c ba e5 c9 d2 45 9a cd 89 20 6c 73
MK salt: 98 58 3e f3 f6 88 99 ea 2a f3 cf 71 a0 0d e5 8b
d5 76 64 cb d2 5c 9b d1 8a d3 1d 18 0e 04 7a eb
MK iterations: 81250
UUID: c216d954-199e-4eab-a167-a3587bd41cb3
Key Slot 0: ENABLED
Iterations: 323227
Salt: a0 45 3e 98 fa cf 60 74 c6 09 3d 54 97 89 be 65
5b 96 7c 1c 39 26 47 b4 8b 0e c1 3a c9 94 83 c2
Key material offset: 8
AF stripes: 4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED
Le disque est maintenant prêt à être utilisé. La première fois que vous l’utilisez, il faut effectuer les étapes suivantes :
Ouvrir le disque chiffré avec la commande cryptsetup luksOpen. Le nom storage1 n’est qu’indicatif, vous pouvez choisir ce que vous voulez :
root@my-vm-name:~# cryptsetup luksOpen /dev/vdb storage1
Créer un système de fichier sur le disque :
root@my-vm-name:~# mkfs.ext4 /dev/mapper/storage1
Créer le point de montage du disque :
root@my-vm-name:~# mkdir /storage1
Monter le disque :
root@my-vm-name:~# mount -t ext4 /dev/mapper/storage1 /storage1
Vérifier l’espace disponible (cela peut être légèrement différent de ce qui a été entré lors de la commande openstack volume create) :
root@my-vm-name:~# df -h /storage1 Filesystem Size Used Avail Use% Mounted on /dev/mapper/storage1 2.0G 6.0M 1.9G 1% /storage1
Une fois que le disque est opérationnel, les étapes 2 et 3 ne sont plus nécessaires.
Vous pouvez maintenant envoyer des fichiers (par exemple DONNEES.dat) depuis votre ordinateur personnel dans votre machine virtuelle de façon sécurisée, par exemple avec scp :
$ scp -i ${HOME}/.novacreds/cloudkey DONNEES.dat ubuntu@134.158.151.224:/le/chemin/destination
DONNEES.dat 100% 82 0.1KB/s 00:00
Lorsque vous avez terminé votre travail sur le disque, vous pouvez le retirer proprement avec les commandes suivantes :
root@my-vm-name:~# umount /storage1
root@my-vm-name:~# cryptsetup close storage1
Pour les utilisations suivantes du disque virtuel persistant, il n’y aura pas besoin d’effectuer toutes ces opérations, seules les suivantes sont nécéssaires :
root@my-vm-name:~# cryptsetup luksOpen /dev/vdb storage1
root@my-vm-name:~# mkdir /storage1
root@my-vm-name:~# mount -t ext4 /dev/mapper/storage1 /storage1
Configuration des accès extérieurs¶
Par défaut, les ports SSH et ICMP sont ouverts. Si vous souhaitez ouvrir d’autres ports, il est nécessaire d’appliquer un groupe de sécurité à votre machine virtuelle. Cela se fait à travers l’interface Web () ou en ligne de commande.
La liste actuelle des ports qui peuvent être utilisés est la suivante :
80
443
1247
1248
2121
2379
3306
3389
4243
6443
7778
8443
8800
8080
8899
9000
9090
9443
10000
27017
Résolution des problèmes¶
Cette section vous permet de résoudre les problèmes les plus communs rencontrés lors de l’utilisation de OpenStack.
Erreur de connexion avec SSH¶
Immédiatement après le démarrage de la machine virtuelle, vous pouvez vous retrouver avec des problèmes de connection :
$ ssh -i ${HOME}/.novacreds/cloudkey ubuntu@134.158.151.224
ssh: connect to host 134.158.151.224 port 22: Connection refused
Ce problème est généralement dû au fait que le service SSH n’est pas encore démarré sur la machine virtuelle. Il faut attendre, cela pouvant prendre jusqu’à plusieurs minutes.
Un autre type d’erreur peut être rencontré :
$ ssh -i ${HOME}/.novacreds/cloudkey ubuntu@134.158.151.224
[...]
Permission denied (publickey).
Dans ce cas, il faut vérifier que la clé SSH que vous utilisez est la même que celle stockée dans la base de données OpenStack. Pour cela, vérifiez que leurs empreintes (fingerprint) sont équivalentes. Pour obtenir l’empreinte de la clé stocké par OpenStack, exécutez :
$ openstack keypair list
+----------+-------------------------------------------------+
| Name | Fingerprint |
+----------+-------------------------------------------------+
| cloudkey | 0d:97:13:66:49:03:44:da:69:82:3c:dd:b9:d7:25:64 |
+----------+-------------------------------------------------+
Et pour obtenir l’empreinte de la clé utilisé par la commande ssh
,
exécutez :
$ ssh-keygen -lf ${HOME}/.novacreds/cloudkey.pub
2048 33:91:4b:38:52:63:1d:18:7b:e0:e3:0d:3b:63:ce:4b you@home (RSA)
Si elles sont différentes, il faut mettre à jour votre clé publique dans OpenStack :
$ openstack keypair delete cloudkey
$ openstack keypair add --pub-key=${HOME}/.novacreds/cloudkey.pub cloudkey
$ openstack keypair list
+----------+-------------------------------------------------+
| Name | Fingerprint |
+----------+-------------------------------------------------+
| cloudkey | 33:91:4b:38:52:63:1d:18:7b:e0:e3:0d:3b:63:ce:4b |
+----------+-------------------------------------------------+
Si elles sont bien identiques, il se peut que OpenStack n’ait pas réussi à les installer correctement lors du démarrage de la nouvelle VM. La logiciel cloud-init est responsable de l’installation de la clé SSH dans votre machine virtuelle. Vous pouvez voir les lignes de log de cloud-init dans la console de la machine virtuelle. Pour obtenir l’url de connexion à la console, utilisez la commande suivante :
$ openstack console url show --novnc MY_VM_NAME
+-------+----------------------------------------------------------------------------------------+
| Type | Url |
+-------+----------------------------------------------------------------------------------------+
| novnc | http://sbgcloud.in2p3.fr:6080/vnc_auto.html?token=d609176d-c397-4841-b4dc-566300209209 |
+-------+----------------------------------------------------------------------------------------+
Puis, après vous être connecté à la console avec un navigateur Internet, recherchez les lignes qui contiennent les éléments ci-info et Authorized keys from et comparez les empreintes de votre clé. Si vous voyez des messages d’erreur, le plus simple est de contacter les administrateurs de SCIGNE en leur fournissant une copie de ces messages d’erreur.
Lorsque la clé est transférée avec succès sur la machine virtuelle, vous avez un message du type :
Cloud-init v. 0.7.5 running 'module:final' at Mon, 27 Jun 2015 08:15:34 +0000. Up 65.40 seconds.
ci-info: ++++++++++++++Authorized keys from /root/.ssh/authorized_keys for user root++++++++++++++
ci-info: +---------+-------------------------------------------------+---------+-----------------+
ci-info: | Keytype | Fingerprint (md5) | Options | Comment |
ci-info: +---------+-------------------------------------------------+---------+-----------------+
ci-info: | ssh-rsa | 33:91:4b:38:52:63:1d:18:7b:e0:e3:0d:3b:63:ce:4b | - | joe@hey.com |
ci-info: +---------+-------------------------------------------------+---------+-----------------+
Si vous souhaitez uniquement consulter la sortie console de la machine virtuelle, il sera plus confortable d’utiliser :
$ openstack console log show MY_VM_NAME
Documentation complémentaire¶
Les sites suivants peuvent être consultés pour obtenir plus d’informations concernant l’utilisation d’OpenStack :