Utilisation des clients OpenStack
en ligne de commande
1
Différents clients
Nova – machines virtuelles
Glance – images
Cinder – stockage persistent
Neutron – réseau
Keystone – identité
Openstack – client unifié
Utilisation des clients OpenStack en ligne de commande 2
Travaux pratiques
Attention aux couper-coller depuis ce document :
- les caractères d'espacement
- les retours à la ligne
- les doubles-tirets
Etc.
Peuvent avoir été corrompus au transfert…
C'est involontaire, et indépendant de la volonté du formateur
(qui est plutôt 'vi' en général)
Utilisation des clients OpenStack en ligne de commande 3
Configuration de l'accès
Fichier script de configuration de l'environnement (${HOME}/[Link]) :
export OS_AUTH_URL="[Link]
export OS_TENANT_NAME="FG_formation"
export OS_USERNAME="fg_formation_userXX"
export OS_PASSWORD="FGFCloud2016_X"
export OS_REGION_NAME="IPHC"
export OS_CACERT="${HOME}/[Link]"
Pour OS_REGION_NAME, vous avez le choix entre :
● IPHC
● lal
Pour le LUPM et Lille laissez vide :
export OS_REGION_NAME=
Pour OS_AUTH_URL, vous avez le choix entre :
● [Link]
● [Link]
● [Link]
● [Link]
Utilisation des clients OpenStack en ligne de commande 4
Certificat CNRS
Fichier pour garantir l'intégrité des accès REST (${HOME}/[Link]) :
CNRS2_URL1="[Link]
CNRS2_URL2="?CA=CNRS2-Standard&lang=fr&act=save&view_CA=CNRS2&body=view_ca.html"
curl "${CNRS2_URL1}${CNRS2_URL2}" | \
openssl x509 -out ${HOME}/[Link] -outform PEM
Pour les sites de cloud qui ne sont pas configurés avec les certificats CNRS2,
il faut ajouter l'option "--insecure" a toutes les commandes openstack.
Par exemple c'est le cas pour le cloud du LAL.
Utilisation des clients OpenStack en ligne de commande 5
Premier essai
Vérification du fonctionnement :
# source ${HOME}/[Link]
# openstack server list # pas au LAL
+--------------------------------------+---------------+--------+---------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+---------------+--------+---------------------------------------+
| 9bb65743-4c4e-4729-b38b-7f5a97e947ec | FG-dshbd-lupm | ACTIVE | demo-net=[Link], [Link] |
+--------------------------------------+---------------+--------+---------------------------------------+
# nova image-list
+--------------------------------------+-------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+-------------------+--------+--------+
| 478ab760-fb58-49c3-b16c-30ad3143f62a | Centos7Officielle | ACTIVE | |
| efbf68ec-616c-4773-bcca-a50a13262975 | FG-VirtUI-sl6 | ACTIVE | |
| 4c65e0d3-fbf3-4d20-89d6-8988c7f7ad6c | FG-centos7 | ACTIVE | |
| e905f8cf-c185-4b80-82de-5d9f074a90d9 | centos6Officielle | ACTIVE | |
+--------------------------------------+-------------------+--------+--------+
Utilisation des clients OpenStack en ligne de commande 6
Aide en ligne
Pour obtenir de l'aide globale, la liste des sous-commandes :
# nova help
# neutron help
Pour obtenir de l'aide spécifique à une commande :
# nova help <command>
# nova help help
usage: nova help [<subcommand>]
Display help about this program or one of its subcommands.
Positional arguments:
<subcommand> Display help for <subcommand>
# openstack help server list
[...]
Utilisation des clients OpenStack en ligne de commande 7
Mot de passe
Pour changer de mot de passe :
# keystone password-update
Et ensuite modifier son script de configuration de l'environnement (${HOME}/[Link]) :
export OS_PASSWORD="FGFCloud2016_X"
Puis re-sourcer ce script :
# source ${HOME}/[Link]
Pour les besoins de cette formation cela n'est pas nécessaire,
mais pour un accès réel, il faudra le faire avant toute autre utilisation.
Utilisation des clients OpenStack en ligne de commande 8
Images OS
Liste des images :
# openstack image list
# nova image-list
+--------------------------------------+-----------------------------------------+--------+--------+
| ID | Name | Status | Server |
+--------------------------------------+-----------------------------------------+--------+--------+
[...]
| 2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a | CirrOS | ACTIVE | |
| 74f127bc-d294-45ca-ab19-63fd9addd5e9 | FG CentOS 7 x86_64 Generic Cloud Image | ACTIVE | |
[...]
# openstack image show 2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a
# glance image-show 2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 133eae9fb1c98f45894a4e60d8736619 |
| container_format | bare |
| created_at | 2014-11-12T[Link]Z |
| disk_format | qcow2 |
| id | 2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a |
| min_disk | 0 |
| min_ram | 0 |
| name | CirrOS |
| owner | ba660c58b52a4ac0a454597f2403f831 |
| protected | False |
| size | 13200896 |
| status | active |
| tags | [] |
| updated_at | 2015-06-09T[Link]Z |
| virtual_size | None |
| visibility | public |
+------------------+--------------------------------------+
Utilisation des clients OpenStack en ligne de commande 9
Saveurs
Liste des types de machines virtuelles disponibles :
# openstack flavor list
# nova flavor-list
+----+-------------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-------------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | [Link] | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | [Link] | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | [Link] | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | [Link] | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | [Link] | 16384 | 160 | 0 | | 8 | 1.0 | True |
| 6 | m1.2xlarge | 32768 | 320 | 0 | | 16 | 1.0 | True |
| 7 | [Link]-large| 2048 | 50 | 0 | | 1 | 1.0 | True |
+----+-------------+-----------+------+-----------+------+-------+-------------+-----------+
Nous verrons plus tard que ces types sont liés aux quotas (limites) qui sont alloués à
chaque groupe d'utilisateurs.
Utilisation des clients OpenStack en ligne de commande 10
Réseau
Liste des réseaux virtuels :
# openstack network list
# nova network-list
+--------------------------------------+------------------+------+
| ID | Label | Cidr |
+--------------------------------------+------------------+------+
| 2c36d255-01ce-4330-93e1-13f8d2cec7fd | fg-formation-net | - |
| 314be651-fcaa-4dcc-ac0a-dfdcd7e58ba1 | ext-net | - |
+--------------------------------------+------------------+------+
# neutron net-list
+--------------------------------------+------------------+-----------------------------------------------+
| id | name | subnets |
+--------------------------------------+------------------+-----------------------------------------------+
| 2c36d255-01ce-4330-93e1-13f8d2cec7fd | fg-formation-net | e41a31bc-7883-47d2-8329-da094... [Link]/24|
| 314be651-fcaa-4dcc-ac0a-dfdcd7e58ba1 | ext-net | aaf9dd9a-a232-49d9-ad2d-f070ab40cf85 |
+--------------------------------------+------------------+-----------------------------------------------+
Utilisation des clients OpenStack en ligne de commande 11
Lancement d'une instance
Démarrer une instance de test :
# openstack server create --image 2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a --flavor [Link] \
--nic net-id=2c36d255-01ce-4330-93e1-13f8d2cec7fd Nom_de_ma_VM
# nova boot --flavor [Link] --image 2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a \
--nic net-id=2c36d255-01ce-4330-93e1-13f8d2cec7fd Nom_de_ma_VM
+--------------------------------------+-----------------------------------------------+
| Property | Value |
+--------------------------------------+-----------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | scheduling |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | 9dxBTzrZgiWp |
| config_drive | |
| created | 2015-06-03T[Link]Z |
| flavor | [Link] (2) |
| hostId | |
| id | 23bf5f31-032a-484e-bac3-9034aa956a0f |
| image | CirrOS (2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a) |
| key_name | |
[...]
Utilisation des clients OpenStack en ligne de commande 12
État d'une instance
Vérifier l'état de la machine instanciée
# nova list
+--------------------------------------+---------------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+---------------+--------+------------+-------------+----------+
| 23bf5f31-032a-484e-bac3-9034aa956a0f | Nom_de_ma_VM | BUILD | spawning | NOSTATE | |
+--------------------------------------+---------------+--------+------------+-------------+----------+
Une fois que la machine est prête :
# nova list
+--------------------------------------+------------------+--------+------------+-------------+--------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+------------------+--------+------------+-------------+--------------------------+
| 23bf5f31-032a-484e-bac3-9034aa956a0f | Nom_de_ma_VM | ACTIVE | - | Running | fg-cloud-net=[Link] |
+--------------------------------------+------------------+--------+------------+-------------+--------------------------+
Pour attendre de manière synchrone que la VM soit lancée, on peut utiliser l'option « –-poll »
de nova boot. Ce qui peut être utile dans un script, par exemple.
Utilisation des clients OpenStack en ligne de commande 13
Vérifier une instance
# openstack server show 23bf5f31-032a-484e-bac3-9034aa956a0f
# nova show 23bf5f31-032a-484e-bac3-9034aa956a0f
+--------------------------------------+----------------------------------------------------------+
| Property | Value |
+--------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | active |
| OS-SRV-USG:launched_at | 2015-06-03T[Link].000000 |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2015-06-03T[Link]Z |
| fg-cloud-net network | [Link] |
| flavor | [Link] (2) |
| hostId | 0b199254c9bfee387797cf756a9e243ff52e4bee7176607a8ecf0d24 |
| id | 23bf5f31-032a-484e-bac3-9034aa956a0f |
| image | CirrOS (2c86acd1-98b0-4cc3-9a8a-1e661ddbfd9a) |
| key_name | |
| metadata | {} |
| name | Nom_de_ma_VM |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | ACTIVE |
| tenant_id | f733dfdbb8504d4484f6a339f4c1af0b |
| updated | 2015-06-03T[Link]Z |
| user_id | aaa7c69de7754904b6a666d31ecfffff |
+--------------------------------------+----------------------------------------------------------+
Utilisation des clients OpenStack en ligne de commande 14
Accès à la VM par une console
Console virtuelle en mode texte :
# openstack console url show --novnc 5ee75a4a-f312-4f0b-bef1-c14112ef2000
# nova get-vnc-console 23bf5f31-032a-484e-bac3-9034aa956a0f novnc
+-------+----------------------------------------------------------------------------------------+
| Type | Url |
+-------+----------------------------------------------------------------------------------------+
| novnc | [Link] |
+-------+----------------------------------------------------------------------------------------+
Attention, utilité limitée, utilisabilité réduite :
● Mappage clavier (ù$*!:.?§é »'çè_)
● Bogue de focus : cliquer dans la zone grise, puis cliquer dans la console
● Certains sites cloud ne proposent pas cet accès
A utiliser en cas de problèmes (Quand il n'y a rien d'autre qui marche)
Essayez le compte « cirros » et le mot de passe « cubswin:) »
Utilisation des clients OpenStack en ligne de commande 15
VM & réseau
Isolation :
- par défaut : IP privée (sauf sur certains clouds)
- pas d'accès à la VM depuis l'extérieur
- la VM peut accéder à l'extérieur
Ouverture :
- IP publiques (flottantes) disponibles, quantité totale limitée
- à la demande : assignation manuelle (sauf sur certains clouds)
- soumise aux quotas
- mécanisme de filtrage (pare-feu) à gérer : security-groups
Utilisation des clients OpenStack en ligne de commande 16
Accès à la VM par le réseau
Par exemple :
# nova show 23bf5f31-032a-484e-bac3-9034aa956a0f
[...]
| fg-formation-net network | [Link] |
[...]
# ping [Link]
PING [Link] ([Link]) 56(84) bytes of data.
From [Link] icmp_seq=1 Packet filtered
From [Link] icmp_seq=4 Packet filtered
^C
--- [Link] ping statistics ---
5 packets transmitted, 0 received, +2 errors, 100% packet loss, time 4001ms
# ssh [Link]
ssh: connect to host [Link] port 22: No route to host
Utilisation des clients OpenStack en ligne de commande 17
Choisir une IP publique
# openstack ip floating pool list
# nova floating-ip-pool-list
+---------+
| name |
+---------+
| ext-net |
+---------+
# openstack ip floating list
# nova floating-ip-list
+----------------+--------------------------------------+--------------+---------+
| Ip | Server Id | Fixed Ip | Pool |
+----------------+--------------------------------------+--------------+---------+
| [Link] | | - | ext-net | <= disponible
| [Link] | | - | ext-net |
| [Link] | 38dd8807-c272-4da7-a1b6-eb2395a409a4 | [Link] | ext-net | <= utilisée
+----------------+--------------------------------------+--------------+---------+
S'il n'y en a plus de disponible :
# openstack ip floating create ext-net
# nova floating-ip-create ext-net
+----------------+-----------+----------+---------+
| Ip | Server Id | Fixed Ip | Pool |
+----------------+-----------+----------+---------+
| [Link] | | - | ext-net |
+----------------+-----------+----------+---------+
Utilisation des clients OpenStack en ligne de commande 18
Associer une IP publique
# openstack ip floating add [Link] 5ee75a4a-f312-4f0b-bef1-c14112ef2000
# nova floating-ip-associate 23bf5f31-032a-484e-bac3-9034aa956a0f [Link]
# nova floating-ip-list
+----------------+-----------+-------------+---------+
| Ip | Server Id | Fixed Ip | Pool |
+----------------+-----------+-------------+---------+
| [Link] | | - | ext-net |
| [Link] | | - | ext-net |
| [Link] | 23bf[...] | [Link] | ext-net |
+----------------+-----------+-------------+---------+
# nova show 23bf5f31-032a-484e-bac3-9034aa956a0f
[...]
| fg-formation-net network | [Link], [Link] |
[...]
Attention, si vous associez une IP qui était déjà prise, vous la volez à la précédente VM
Utilisation des clients OpenStack en ligne de commande 19
Utiliser l'IP publique
# nova list
+--------------------------------------+--------------+--------+------------+-------------+-----------------------------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+--------------+--------+------------+-------------+-----------------------------------------------+
| f5fabff2-487c-4675-8660-25e455c9e9e8 | Nom_de_ma_VM | ACTIVE | - | Running | fg-formation-net=[Link], [Link] |
| 0c1d64b2-a1a2-4c2c-815f-23f1d0fb9f15 | centOS7 | ACTIVE | - | Running | fg-formation-net=[Link], [Link] |
| 988eb9e8-1405-4564-8c6d-ae9f979d8858 | centOS7 | ACTIVE | - | Running | fg-formation-net=[Link] |
| ae12bd61-3cea-46e3-bc7a-d9a5acd6d068 | docker | ACTIVE | - | Running | fg-formation-net=[Link], [Link] |
+--------------------------------------+--------------+--------+------------+-------------+-----------------------------------------------+
# ping [Link]
PING [Link] ([Link]) 56(84) bytes of data.
64 bytes from [Link]: icmp_seq=1 ttl=53 time=87.9 ms
64 bytes from [Link]: icmp_seq=3 ttl=53 time=58.2 ms
64 bytes from [Link]: icmp_seq=4 ttl=53 time=57.9 ms
^C
# ssh cirros@[Link]
Password : cubswin:)
Testez l'accès vers l'extérieur :
$ ping [Link]
PING [Link] ([Link]) 56(84) bytes of data.
64 bytes from [Link]: icmp_seq=1 ttl=51 time=7.96 ms
64 bytes from [Link]: icmp_seq=2 ttl=51 time=7.83 ms
^C
--- [Link] ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 7.839/7.903/7.968/0.109 ms
Utilisation des clients OpenStack en ligne de commande 20
Ports ouverts
# openstack security group list
# nova secgroup-list
+--------------------------------------+---------+-------------+
| Id | Name | Description |
+--------------------------------------+---------+-------------+
| ea49a91c-5f4e-46d1-8b2d-7ed96b1858b5 | default | default |
+--------------------------------------+---------+-------------+
# openstack security group rule list default
# nova secgroup-list-rules default
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp | 22 | 22 | [Link]/0 | | <==== SSH port 22
| icmp | -1 | -1 | [Link]/0 | | <==== Ping
| | | | | default |
| | | | | default |
+-------------+-----------+---------+-----------+--------------+
Première chose à vérifier en cas de problème de connexion par SSH.
Ajouter un port :
# openstack security group rule create --proto tcp --dst-port 8080 --src-ip [Link]/0 default
# nova secgroup-add-rule default tcp 8080 8080 [Link]/0
Utilisation des clients OpenStack en ligne de commande 21
Les quotas
Information sur les quotas :
# nova quota-show
+-----------------------------+-------+
| Quota | Limit |
+-----------------------------+-------+
| instances | 10 |
| cores | 20 |
| ram | 51200 |
| floating_ips | 10 |
| fixed_ips | -1 |
| metadata_items | 128 |
| injected_files | 5 |
| injected_file_content_bytes | 10240 |
| injected_file_path_bytes | 255 |
| key_pairs | 100 |
| security_groups | 10 |
| security_group_rules | 20 |
+-----------------------------+-------+
Les quotas disques ne sont pas a cet endroit, voir cinder.
Utilisation des clients OpenStack en ligne de commande 22
Dépassement de quota
Information sur les quotas :
# nova --insecure boot [...] 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)
Contactez votre administrateur de cloud, pour analyser l'utilisation actuelle.
Et éventuellement demander une extension de quota.
Utilisation des clients OpenStack en ligne de commande 23
Arrêt de l'instance
Arrêter la VM proprement (a faire dans la VM) :
$ sudo halt
Vérifier le status :
# nova list
+--------------------------------------+--------------+---------+------------+-------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+--------------+---------+------------+-------------+-----------+
| 23bf5f31-032a-484e-bac3-9034aa956a0f | Nom_de_ma_VM | ACTIVE | - | Running | [...] |
+--------------------------------------+--------------+---------+------------+-------------+-----------+
Effectuer éventuellement :
# openstack server stop 23bf5f31-032a-484e-bac3-9034aa956a0f
# nova stop 23bf5f31-032a-484e-bac3-9034aa956a0f
# nova list
+--------------------------------------+--------------+---------+------------+-------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+--------------+---------+------------+-------------+-----------+
| 23bf5f31-032a-484e-bac3-9034aa956a0f | Nom_de_ma_VM | SHUTOFF | - | Shutdown | [...] |
+--------------------------------------+--------------+---------+------------+-------------+-----------+
Utilisation des clients OpenStack en ligne de commande 24
Redémarrage
Redémarrer une VM :
# openstack server start 23bf5f31-032a-484e-bac3-9034aa956a0f
# nova start 23bf5f31-032a-484e-bac3-9034aa956a0f
Voir aussi pause/unpause, suspend/resume
Utilisation des clients OpenStack en ligne de commande 25
Destruction de l'instance
Supprimer la machine virtuelle :
# openstack server delete 5ee75a4a-f312-4f0b-bef1-c14112ef2000
# nova delete 23bf5f31-032a-484e-bac3-9034aa956a0f
Pas besoin de :
● Halt(*)
● nova stop
(*) Sauf en cas d'utilisation de stockage permanent, ou autre élément externe à la VM
qui nécessiterait une synchronisation de cache, par exemple (NFS, CIFS, etc.).
La libération des ressources se fait à la destruction de l'instance.
Utilisation des clients OpenStack en ligne de commande 26
Accès par mot de passe
Très mauvaise idée...
Facile pour un attaquant de le deviner
Facile pour un attaquant d'en essayer plein
On ne fait jamais ça, car c'est mal !
L'image cirros est faite uniquement pour tester le cloud, pas a utiliser en
production.
On utilise l'authentification par clé publique (PKI)
On se connecte avec SSH
Utilisation des clients OpenStack en ligne de commande 27
Clés d'accès SSH
# ssh-keygen -t rsa -f ${HOME}/.ssh/cloudkey
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ./cloudkey.
Your public key has been saved in ./[Link].
The key fingerprint is:
[Link] vlegoll@sbgat401
The key's randomart image is:
[...]
# openstack keypair create --public-key ${HOME}/.ssh/[Link] cloudkey
# nova keypair-add --pub-key=${HOME}/.ssh/[Link] cloudkey_userX
# openstack keypair list
# nova keypair-list
+----------------+-------------------------------------------------+
| Name | Fingerprint |
+----------------+-------------------------------------------------+
| cloudkey_userX | [Link] |
+----------------+-------------------------------------------------+
Il est possible d'en utiliser plusieurs
Utilisation des clients OpenStack en ligne de commande 28
Exercice
Démarrez une VM CentOS 7
En utilisant le paramètre additionnel « --key-name »
pour y installer votre nouvelle clé d'accès ssh.
Une fois démarrée, connectez vous-y :
# ssh -i $HOME/.ssh/cloudkey centos@VM_IP
Utilisation des clients OpenStack en ligne de commande 29
Stockage
Différents types de stockage sont possibles :
● Stockage éphémère (cache sur l'hyperviseur)
● Stockage permanent (Cinder / iSCSI, …)
● Stockage objet (Swift)
● Stockage de fichiers (iRODS, stockage en ligne, …)
Utilisation des clients OpenStack en ligne de commande 30
Gestion du stockage persistant
# openstack volume list
# cinder list
+----+--------+--------------+------+-------------+----------+-------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+----+--------+--------------+------+-------------+----------+-------------+
+----+--------+--------------+------+-------------+----------+-------------+
# openstack volume create --size 1 volume1
# cinder create 1 --display-name volume1
+---------------------+--------------------------------------+
| Property | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| created_at | 2015-06-25T[Link].809098 |
| display_description | None |
| display_name | volume1 |
| id | 3db53d16-b382-4bbc-8572-46e95b8404b5 |
| metadata | {} |
| size | 8 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| volume_type | None |
+---------------------+--------------------------------------+
Utilisation des clients OpenStack en ligne de commande 31
Gestion du stockage persistant
# openstack volume list
# cinder list
+-----------+-----------+--------------+------+-------------+----------+-------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+-----------+-----------+--------------+------+-------------+----------+-------------+
| VOLUME_ID | available | volume1 | 1 | None | false | |
+-----------+-----------+--------------+------+-------------+----------+-------------+
# openstack volume show d9034846-4c37-487f-8ba1-8a896c26d672
# cinder show VOLUME_ID
+---------------------------------------+--------------------------------------+
| Property | Value |
+---------------------------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2016-04-22T[Link].000000 |
| description | None |
| encrypted | False |
| id | d9034846-4c37-487f-8ba1-8a896c26d672 |
| metadata | {'readonly': 'False'} |
| multiattach | False |
| name | volume1 |
| os-vol-tenant-attr:tenant_id | f733dfdbb8504d4484f6a339f4c1af0b |
| os-volume-replication:driver_data | None |
| os-volume-replication:extended_status | None |
| replication_status | disabled |
| size | 1 |
| snapshot_id | None |
| source_volid | None |
| status | available |
| user_id | fb0d5c67917a4755b428b6016241dbd0 |
| volume_type | None |
+---------------------------------------+--------------------------------------+
Utilisation des clients OpenStack en ligne de commande 32
Gestion du stockage persistant
# openstack quota show f733dfdbb8504d4484f6a339f4c1af0b
# cinder quota-show f733dfdbb8504d4484f6a339f4c1af0b
+----------------------+-------+
| Property | Value |
+----------------------+-------+
| backup_gigabytes | 0 |
| backups | 0 |
| gigabytes | 240 |
| per_volume_gigabytes | 0 |
| snapshots | 0 |
| volumes | 40 |
+----------------------+-------+
Utilisation des clients OpenStack en ligne de commande 33
Gestion du stockage persistant
# openstack server add volume VM_ID VOLUME_ID
# nova volume-attach VM_ID VOLUME_ID
+----------+--------------------------------------+
| Property | Value |
+----------+--------------------------------------+
| device | /dev/vdb |
| id | 02bfe67f-8528-4ae0-a5ce-9eabdfa51629 |
| serverId | c776d8c4-6812-4713-911e-5341c0504502 |
| volumeId | 3db53d16-b382-4bbc-8572-46e95b8404b5 |
+----------+--------------------------------------+
# cinder show VOLUME_ID
# nova show VM_ID
...
| os-extended-volumes:volumes_attached | [{"id": "3db53d16-b382-4bbc-8572-46e95b8404b5"}] |
...
Utilisation des clients OpenStack en ligne de commande 34
Gestion du stockage persistant
Il faut noter :
● C'est comme un disque physique
● À leur création, les nouveaux volumes sont vides et non formatés. Il
faut les initialiser avant de les utiliser
● Ils ne peuvent être utilisés que par une seule machine virtuelle à la
fois
Exercice :
● Se connecter à la VM, vérifier que le disque est disponible
● Formater le disque, le monter et copier un fichier
● Démonter le disque et l'associer à une autre VM
● Vérifier que le fichier est toujours présent
● Démonter le disque et supprimer le volume
Utilisation des clients OpenStack en ligne de commande 35
Gestion du stockage persistant
Sur la VM :
$ dmesg
...
[ 874.657442] vdb: unknown partition table
$ sudo fdisk /dev/vdb
$ sudo mkfs.ext4 /dev/vdb1
$ sudo mkdir /storage
$ sudo mount /dev/vdb1 /storage
$ ls /storage
lost+found
Pour détacher le volume :
$ umount /storage # Important si vous ne voulez pas risquer de perdre des
données
# openstack server remove volume VM_ID VOLUME_ID
# nova volume-detach VM_ID VOLUME_ID
# cinder list
Vérifiez que le disque n'est plus visible dans la VM
Utilisation des clients OpenStack en ligne de commande 36
Chiffrage du disque persistent
$ dmesg
...
[ 874.657442] vdb: unknown partition table
$ sudo dd if=/dev/urandom of=/dev/vdb bs=4k # Ici if=/dev/zero est plus rapide
$ sudo cryptsetup -v --cipher aes-xts-plain64 --key-size 512 --hash sha512 \
--iter-time 5000 –use-random
$ luksFormat /dev/vdb
$ sudo fdisk /dev/vdb
$ sudo cryptsetup luksDump /dev/vdb
$ sudo luksOpen /dev/vdb storage1
$ sudo mkfs.ext4 /dev/mapper/storage1
$ sudo mkdir /storage1
$ sudo mount /dev/mapper/storage1 /storage1
$ ls /storage
lost+found
Utilisation des clients OpenStack en ligne de commande 37
Gestion du stockage persistant
Pour détacher le volume :
Important si vous ne voulez pas risquer de perdre des données
$ umount /storage1
$ sudo cryptsetup close storage1
# openstack server remove volume VM_ID VOLUME_ID
# nova volume-detach VM_ID VOLUME_ID
Utilisation des clients OpenStack en ligne de commande 38
Gestion du stockage persistant
Redimensionner un volume détaché :
# openstack volume set --size 1
# cinder extend VOLUME_ID 1
Pour supprimer le volume :
● Détacher le volume du serveur
● Le supprimer avec la commande :
# openstack volume delete VOLUME_ID
# cinder delete VOLUME_ID
# cinder list
Il est possible de démarrer une instance avec un volume :
# nova boot --flavor [Link] --image IMAGE_ID –-key-name cloudkey –-block-device
source=volume,id=VOLUME_ID,dest=volume,shutdown=preserve,device=/dev/vdb NOM_INSTANCE
Utilisation des clients OpenStack en ligne de commande 39
Bonnes pratiques
Sécurité :
- Vous êtes responsables de la sécurité de vos VMs (mises à jour, accès, etc.)
- Idem pour les données (cryptage des disques, accès restreint, données sensibles/privées)
- Si vous avez besoin de VMs a longue durée de vie, discutez-en avec les administrateurs du
site qui les héberge.
- Attention au services WEB, ce sont des cibles privilégiées
- Attention aux ports ouverts, par défaut il n'y a que le minimum vital
- Dans un tenant, les droits peuvent être très permissifs (détruire n'importe quelle
ressource)
Cycle de vie :
- Ne pas laisser traîner de VMs inutilisées (sécurité, ressources)
- En relancer de nouvelles au besoin
- Placer les données dans un disque persistent & crypté
- Idem pour les logiciels non distribués par l'OS
- Ne pas pré-provisionner trop gros, le cloud est souple, utilisez cet avantage
Mais aussi :
- Donnez des noms utiles a vos ressources (VM, volumes, etc.)
- Le cryptage initial des disques peut prendre du temps, dimensionnez les bien !
Utilisation des clients OpenStack en ligne de commande 40
Le Cloud autrement
- OCCI (EGI fedcloud)
- Horizon (interface WEB)
- PaaS / SaaS / orchestration de VMs
- curl (CLI REST API)
- API python
Utilisation des clients OpenStack en ligne de commande 41
Pour aller plus loin...
Quelques liens complémentaires :
● [Link]
utilisation-du-cloud-openstack-de-l-iphc
● [Link]
Utilisation des clients OpenStack en ligne de commande 42
Hitchiker's guide
Des questions ?
-
La réponse est sur
cette page...
Utilisation des clients OpenStack en ligne de commande 43