I. Pré-requis

Tous les services OpenStack seront installés sur la même machine.

La configuration abordée suppose l'utilisation de 2 interfaces réseau.

II. Préparation du système

II-A. Réseau

L'utilisation d'une interface Wifi pour les bridges peut se révéler très complexe voire impossible. Préférez une interface virtuelle.

Modifiez avec les droits d'administration votre fichier /etc/network/interfaces comme ci-dessous en adaptant a votre configuration.

 
Sélectionnez
auto lo
iface lo inet loopback
 
auto eth0
iface eth0 inet manual
 
auto eth1
iface eth1 inet manual
 
auto br0
iface br0 inet static
        bridge_ports eth0
        address 192.168.1.250
        netmask 255.255.255.0
        gateway 192.168.1.254
        broadcast 192.168.1.255
 
auto br1
iface br1 inet manual
        bridge_ports eth1

Modifiez avec les droits d'administration votre fichier /etc/resolv.conf comme ci-dessous et ajoutez vos DNS habituels.

Les DNS ci-dessous sont ceux de Google :

 
Sélectionnez
nameserver 8.8.8.8
nameserver 8.8.4.4

Relancez les cartes réseau pour que les modifications soient prises en compte.

 
Sélectionnez
for a in `ifconfig | awk '/Link/ { if ($1 != "lo") print $1 }'`; do sudo ifdown $a ; done
sudo ifup -e lo -av

II-B. Serveur NTP

Le serveur NTP étant nécessaire à la bonne synchronisation du cloud, installez le paquet ntp.

Ensuite, ouvrez avec les droits d'administration le fichier /etc/ntp.conf et ajoutez les lignes :

 
Sélectionnez
server ntp.ubuntu.com iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10
redémarrez le service 
sudo service ntp restart

II-C. LVM

Les volumes LVM serviront de disques durs supplémentaires pour les serveurs virtuels.

Installez les paquets tgt,open-iscsi,open-iscsi-utils,lvm2.

Les commandes qui suivent supposent que vous avez un disque dur /dev/sdc vide sans partition. Adaptez les commandes en fonction de votre configuration.

Créez une partition non formatée de 100Gigas sur /dev/sdc en adaptant à votre configuration :

 
Sélectionnez
sudo fdisk /dev/sdc
n p 1 <return> +100G w

Vous avez maintenant une partition primaire vide de 100 Gigas /dev/sdc1.

Créez maintenant le volume LVM. Attention, le nom nova-volumes doit être respecté :

 
Sélectionnez
sudo pvcreate /dev/sdc1
sudo vgcreate nova-volumes /dev/sdc1

II-D. RabbitMQ

RabbitMQ est un courtier de messages se basant sur le standard AMQP afin d'échanger avec différents clients.

Pour faire simple : c'est le service qui permet aux composants OpenStack de communiquer entre eux.

Installez les paquets rabbitmq-server,memcached,python-memcache

II-E. MySQL

Il est possible d'utiliser un autre SGBD, MySQL étant recommandé dans la documentation OpenStack.

Il est possible d'utiliser un autre SGBD, MySQL étant recommandé dans la documentation OpenStack.

Pour indiquer a MySQL que le serveur doit écouter sur toutes les adresses et pas seulement sur la boucle locale, modifiez sa configuration en ouvrant avec les droits d'administration le fichier /etc/mysql/my.cnf pour remplacer :

 
Sélectionnez
bind-address            = 127.0.0.1

Par :

 
Sélectionnez
bind-address            = 0.0.0.0

Et redémarrez MySQL :

 
Sélectionnez
sudo service mysql restart

II-E-1. Gestion des utilisateurs

La gestion des utilisateurs s'articule autour de 3 objets :

  • l'objet User représentant l'utilisateur final ;
  • l'objet Tenant que l'on peut représenter par un projet, une organisation au sein duquel les instances seront regroupées et administrées par les utilisateurs ;
  • l'objet Role qui définit le rôle de l'utilisateur sur un Tenant. Un utilisateur peut avoir un ou plusieurs rôles sur différents Tenants.

II-E-2. Gestion des services et points d'accès

La gestion des différents services, comme Glance pour les images ou Swift pour le stockage.

La définition des points d'accès a ces différents services, les URL et ports pour y accéder

III. Keystone

Le composant Keystone est chargé de la gestion des utilisateurs et des services.

III-A. Préparation de la base de données Mysql

Commencez par créer la base MySQL.

La commande suivante crée un utilisateur et sa base de données nommés « keystone ». Changez SQLPASSWD par un mot de passe de votre choix.

 
Sélectionnez
mysql -u root -p <<EOF
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'SQLPASSWD';
FLUSH PRIVILEGES;
EOF

III-B. Installation

III-C. Configuration

Ouvrez avec les droits d'administration le fichier /etc/keystone/keystone.conf pour modifier les sections suivantes: Remplacez ADMPASSWD par un mot de passe de votre choix et SQLPASSWD par le mot de passe MySQL défini ci-dessus :

 
Sélectionnez
[DEFAULT]
   bind_host = 0.0.0.0
   public_port = 5000
   admin_port = 35357
# Mot de passe d'administration
   admin_token = ADMPASSWD
   compute_port = 8774
   verbose = True
   debug = True
   log_config = /etc/keystone/logging.conf
 
 
[sql]
connection = mysql://keystone:SQLPASSWDg@192.168.1.250:3306/keystone
idle_timeout = 200

Redémarrez keystone :

 
Sélectionnez
sudo service keystone restart

Et synchronisez la base de données :

 
Sélectionnez
sudo keystone-manage db_sync

III-D. Création des utilisateurs

Chaque commande ci-dessous contient l'authentification définie dans le fichier keystone.conf et utilisée par le client python sous la forme --token admin_token <mot de passe d'administration> --endpoint url_du_service_keystone <adresse du serveur:port/directory/>.

III-D-1. Création du compte administrateur

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ user-create --name=admin --pass=ADMPASSWD --email=admin@example.com

Répondra quelque chose comme :

 
Sélectionnez
+----------+-------------------------------------------------------------------------------------------------------------------------+
| Property |                                                          Value                                                          |
+----------+-------------------------------------------------------------------------------------------------------------------------+
| email    | admin@example.com                                                                                                       |
| enabled  | True                                                                                                                    |
| id       | c97c87b3ed894401975dd6d757b40330                                                                                        |
| name     | admin                                                                                                                   |
| password | $6$rounds=40000$cZhg187ypC6hMMD1$YQAxiXspmMVsu1di.o3UlZjvjlEO9WXii48Q29tyIXTzDpT5e92XBij9Pz4A5YLoGaccf8PBf1jcAan9YLDOl. |
| tenantId | None                                                                                                                    |
+----------+-------------------------------------------------------------------------------------------------------------------------+

III-D-2. Création du compte interne du service Glance

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ user-create --name=glance --pass=ADMPASSWD --email=glance@example.com

Répondra :

 
Sélectionnez
+----------+-------------------------------------------------------------------------------------------------------------------------+
| Property |                                                          Value                                                          |
+----------+-------------------------------------------------------------------------------------------------------------------------+
| email    | glance@example.com                                                                                                      |
| enabled  | True                                                                                                                    |
| id       | 876ef0a6c0c048039f847e61da7260b4                                                                                        |
| name     | glance                                                                                                                  |
| password | $6$rounds=40000$pYJjQYtDJGdFB/nl$UOmryhbqCIROSPNhs8/svbPg2JIns31yImcAXTh/CXT3o9GOZTNYadZe2zp7M0.XeHqJD5bI1lhZYM09uSrmN0 |
| tenantId | None                                                                                                                    |
+----------+-------------------------------------------------------------------------------------------------------------------------+

III-D-3. Création du compte interne du service Nova

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ user-create --name=nova --pass=ADMPASSWD --email=nova@example.com

Répondra :

 
Sélectionnez
+----------+-------------------------------------------------------------------------------------------------------------------------+
| Property |                                                          Value                                                          |
+----------+-------------------------------------------------------------------------------------------------------------------------+
| email    | nova@example.com                                                                                                        |
| enabled  | True                                                                                                                    |
| id       | 5c54624fef2242e185af10b7a2a2768f                                                                                        |
| name     | nova                                                                                                                    |
| password | $6$rounds=40000$ogH/.VbZJgp2pDF8$w7TCuRu95Q8c6PMR5Zmbs7Osjk8tXfkDKixzRY.t/Ghv/WvOoLD1au/cCbMWVfaEhr14RAGheTA2E2rPoVEjd1 |
| tenantId | None                                                                                                                    |
+----------+-------------------------------------------------------------------------------------------------------------------------+

III-E. Création des rôles

Pour les rôles utilisateurs vous avez le choix entre :

  1. admin : donne le droit de modifier la configuration des services (ex : allouer une plage d'adresse IP, un quota d'espace disque pour un projet etc.).
  2. Member : permet de gérer le contenu du projet (création d'instances de machines, ajout d'un disque virtuel a l'une d'elles etc.).

Les rôles KeystoneAdmin et KeystoneServiceAdmin sont des rôles internes nécessaires.

III-E-1. Rôle admin

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ role-create --name=admin
 
Sélectionnez
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
| id       | 3d945f41e08e4e2db1584fdb8f05d333 |
| name     | admin                            |
+----------+----------------------------------+

III-E-2. Rôle Membre

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ role-create --name=Member
 
Sélectionnez
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
| id       | 84697b61736c439288900904bdf4a48d |
| name     | Member                           |
+----------+----------------------------------+

III-E-3. Rôle KeystoneAdmin

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ role-create --name=KeystoneAdmin
 
Sélectionnez
+----------+----------------------------------+
 
| Property |              Value               |
 
+----------+----------------------------------+
 
| id       | d4d6482b0ec04e0fa24aa8263c182d08 |
 
| name     | KeystoneAdmin                    |
 
+----------+----------------------------------+

III-E-4. Rôle KeystoneServiceAdmin

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ role-create --name=KeystoneServiceAdmin
 
Sélectionnez
+----------+----------------------------------+
| Property |              Value               |
+----------+----------------------------------+
| id       | 46590e32dbbe40f29253b5b928b83d1b |
| name     | KeystoneServiceAdmin             |
+----------+----------------------------------+

III-F. Création des Tenants

III-F-1. Tenant admin

Le Tenant admin permet à ses membres d'administrer les services.

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ tenant-create --name=admin
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | None                             |
| enabled     | True                             |
| id          | 0f71e86d30e247d3b1216fe5f2f3aa50 |
| name        | admin                            |
+-------------+----------------------------------+

III-F-2. Tenant service

Le Tenant interne des services.

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ tenant-create --name=service
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | None                             |
| enabled     | True                             |
| id          | 1a3515e468f14e0ebb4a4e83447e7bf7 |
| name        | service                          |
+-------------+----------------------------------+

III-G. Définition des rôles

Il faut pour cela utiliser les ID affichés lors de la création des Users, Roles et Tenants.

L'User « admin » a un Role admin sur le Tenant « admin ».

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ user-role-add --user-id c97c87b3ed894401975dd6d757b40330 --role-id 3d945f41e08e4e2db1584fdb8f05d333 --tenant_id 0f71e86d30e247d3b1216fe5f2f3aa50

Comme ce n'est pas pratique de recopier les IDs, les erreurs de frappe seront évitées grâce à l'outil awk. Il s'agira de définir les rôles ainsi :

  • l'User « admin » a un Role « KeystoneAdmin » sur le Tenant « admin ».
  • l'User « admin » a un Role « KeystoneServiceAdmin » sur le Tenant « admin ».
  • l'User « glance » a un Role « admin » sur le Tenant « service ».
  • l'User « nova » a un Role « admin » sur le Tenant « service ».

Voici les commandes correspondantes :

 
Sélectionnez
keystone user-role-add --user-id `keystone user-list | awk '/ admin / { print $2 }'` --role-id `keystone role-list | awk '/ KeystoneAdmin / { print $2 }'` --tenant_id `keystone tenant-list | awk '/ admin / { print $2 }'`
keystone user-role-add --user-id `keystone user-list | awk '/ admin / { print $2 }'` --role-id `keystone role-list | awk '/ KeystoneServiceAdmin / { print $2 }'` --tenant_id `keystone tenant-list | awk '/ admin / { print $2 }'`
keystone user-role-add --user-id `keystone user-list | awk '/ glance / { print $2 }'` --role-id `keystone role-list | awk '/ admin / { print $2 }'` --tenant_id `keystone tenant-list | awk '/ service / { print $2 }'`
keystone user-role-add --user-id `keystone user-list | awk '/ nova / { print $2 }'` --role-id `keystone role-list | awk '/ admin / { print $2 }'` --tenant_id `keystone tenant-list | awk '/ service / { print $2 }'`

III-H. Création d'un utilisateur supplémentaire

Il s'agira dans l'exemple qui suit de la création d'un compte utilisateur, d'un projet supplémentaire et définition du role avec la variable d'environnement $USER (remplacer par ce que vous voulez, c'est juste un exemple).

Le rôle « Member » est suffisant. Remplacez USRPASSWD par un mot de passe de votre choix.

III-H-1. User

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ user-create --name=$USER --pass=USRPASSWD --email=$USER@example.com
 
Sélectionnez
+----------+-------------------------------------------------------------------------------------------------------------------------+
| Property |                                                          Value                                                          |
+----------+-------------------------------------------------------------------------------------------------------------------------+
| email    | xavier@example.com                                                                                                      |
| enabled  | True                                                                                                                    |
| id       | 13247a59ad844458ad36c0bd06451376                                                                                        |
| name     | xavier                                                                                                                  |
| password | $6$rounds=40000$3YPS4NJ1DqKdzEjc$XPGFlqCfu2ZCNUMJCjFMkvFfXrOkixuVq1I6.mjd9PXzU.4u6ELHYeNbvYJyiCGvUHaggIgo9rMESeA8v4x3Y1 |
| tenantId | None                                                                                                                    |
+----------+-------------------------------------------------------------------------------------------------------------------------+

III-H-2. Tenant

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ tenant-create --name=$USER
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | None                             |
| enabled     | True                             |
| id          | c6f05a03b4aa482c91b61a2230356618 |
| name        | xavier                           |
+-------------+----------------------------------+

III-H-3. Rôle

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ user-role-add --user 13247a59ad844458ad36c0bd06451376 --role 84697b61736c439288900904bdf4a48d --tenant_id c6f05a03b4aa482c91b61a2230356618

III-I. Création des services et leurs points d'accès

III-I-1. Le service Keystone

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ service-create --name=keystone --type=identity --description='Keystone Identity Service'
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | Keystone Identity Service        |
| id          | 41905e02540d48228166c6d06ddcd9f0 |
| name        | keystone                         |
| type        | identity                         |
+-------------+----------------------------------+

III-I-2. Le point d'accès Keystone

 
Sélectionnez
keystone --token ADMPASSWD --endpoint http://192.168.1.250:35357/v2.0/ endpoint-create --region RegionOne --service_id=41905e02540d48228166c6d06ddcd9f0 --publicurl=http://192.168.1.250:5000/v2.0 --internalurl=http://192.168.1.250:5000/v2.0 --adminurl=http://192.168.1.250:35357/v2.0
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| adminurl    | http://192.168.1.250:35357/v2.0  |
| id          | f1c517d5754a493fa67fc21b3f4264c4 |
| internalurl | http://192.168.1.250:5000/v2.0   |
| publicurl   | http://192.168.1.250:5000/v2.0   |
| region      | RegionOne                        |
| service_id  | 41905e02540d48228166c6d06ddcd9f0 |
+-------------+----------------------------------+

Les services et points d'accès des autres services seront ajoutés après l'installation du composant bien qu'il soit possible de les définir dès maintenant.

III-J. Utilisation

Il y a plusieurs façons possibles de s'identifier en lançant une commande keystone.

  • La méthode d'identification utilisée précédemment avec le mot de passe d'administration (variable admin_token définie dans le fichier keystone.conf) avec les arguments --endpoint et --token
 
Sélectionnez
keystone --endpoint http://localhost:35357/v2.0 --token  ADMPASSWD user-list
  • La méthode user/password avec les arguments --username, --tenant_name et --password, après définition des utilisateurs, rôles et projets.
 
Sélectionnez
keystone --username admin --password ADMPASSWD --tenant_name admin --auth_url http://localhost:5000/v2.0 user-list

Pour les deux méthodes, il est possible d'utiliser des variables d'environnement pour éviter de ressaisir tous les arguments à chaque commande.

1ère méthode :

 
Sélectionnez
export SERVICE_ENDPOINT=http://localhost:5000/v2.0/
export SERVICE_TOKEN=ADMPASSWD
keystone user-list

2ème méthode :

 
Sélectionnez
export OS_TENANT_NAME=admin 
export OS_USERNAME=admin 
export OS_PASSWORD=ADMPASSWD 
export OS_AUTH_URL="http://localhost:5000/v2.0/"
keystone user-list

Pour éviter de refaire un export des variables à chaque ouverture de terminal, vous pouvez les exporter automatiquement.

Il suffit de créer un fichier .novarc dans votre Dossier Personnel contenant les lignes suivantes :

 
Sélectionnez
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=ADMPASSWD
export OS_AUTH_URL="http://192.168.1.250:5000/v2.0/"

Ajoutez ensuite la ligne suivante a la fin de votre fichier .bashrc :

 
Sélectionnez
source ~/.novarc

Les variables seront exportées comme variables d'environnement et vous pourrez utiliser toutes les commandes sous la forme simple sans ressaisir les informations d'authentification.

 
Sélectionnez
keystone user-list
 
Sélectionnez
+----------------------------------+---------+--------------------------+--------+
|                id                | enabled |          email           |  name  |
+----------------------------------+---------+--------------------------+--------+
| 13247a59ad844458ad36c0bd06451376 | True    | xavier@example.com       | xavier |
| 5c54624fef2242e185af10b7a2a2768f | True    | nova@example.com         | nova   |
| 876ef0a6c0c048039f847e61da7260b4 | True    | glance@example.com       | glance |
| c97c87b3ed894401975dd6d757b40330 | True    | admin@example.com        | admin  |
+----------------------------------+---------+--------------------------+--------+

Les commandes keystone role-list et keystone tenant-list affichent respectivement la liste des rôles et tenants.

Il est bien sur possible d'envoyer des commandes à partir de n'importe quel autre ordinateur où le paquet python-keystoneclient est installé.

Pour voir la liste des commandes disponibles et les détails utilisés :

 
Sélectionnez
keystone help [NOM DE LA COMMANDE]

IV. Glance

La prochaine étape est l'installation du service d'images Glance.

C'est le service chargé de distribuer les images de disque dur système utilisées par les machines virtuelles.

IV-A. Préparation de la base de données MySQL

La commande suivante crée un utilisateur et sa base de données nommés « glance ». Changez SQLPASSWD par un mot de passe de votre choix.

 
Sélectionnez
mysql -u root -p <<EOF
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'SQLPASSWD';
FLUSH PRIVILEGES;
EOF

IV-B. Installation

IV-C. Configuration

Il faut aussi créer les services et points d'accès correspondants pour Keystone :

 
Sélectionnez
keystone service-create  --name=glance --type=image --description='Glance Image Service'
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | Glance Image Service             |
| id          | 39bbd3107c4c4153a408a3b6a34ef931 |
| name        | glance                           |
| type        | image                            |
+-------------+----------------------------------+
 
Sélectionnez
keystone endpoint-create --region RegionOne --service_id=39bbd3107c4c4153a408a3b6a34ef931 --publicurl=http://192.168.1.250:9292/v1 --internalurl=http://192.168.1.250:9292/v1 --adminurl=http://192.168.1.250:9292/v1
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| adminurl    | http://192.168.1.250:9292/v1     |
| id          | 8fa4c9092dbb4ce989fdcbaceddec45d |
| internalurl | http://192.168.1.250:9292/v1     |
| publicurl   | http://192.168.1.250:9292/v1     |
| region      | RegionOne                        |
| service_id  | 39bbd3107c4c4153a408a3b6a34ef931 |
+-------------+----------------------------------+

Dans les fichiers ci-dessous, SQLPASSWD est le mot de passe MySQL Glance, ADMPASSWD le mot de passe du compte de service Glance.

Ouvrez avec les droits d'administration le fichier /etc/glance/glance-api-paste.ini, allez à la fin pour modifier ces lignes avec les valeurs correspondant à votre installation :

 
Sélectionnez
admin_tenant_name = service
admin_user = glance
admin_password = ADMPASSWD

La section [pipeline:glance-api] doit contenir :

 
Sélectionnez
[pipeline:glance-api]
pipeline = versionnegotiation authtoken auth-context apiv1app

Ouvrez avec les droits d'administration le fichier /etc/glance/glance-api.conf pour y ajouter les lignes suivantes:

 
Sélectionnez
[paste_deploy]
flavor = keystone

Ouvrez avec les droits d'administration le fichier /etc/glance/glance-registry.conf et modifiez la ligne suivante:

 
Sélectionnez
sql_connection = mysql://glance:SQLPASSWD@192.168.1.250:3306/glance

Et ajoutez à la fin :

 
Sélectionnez
[paste_deploy]
flavor = keystone

Ouvrez avec les droits d'administration le fichier /etc/glance/glance-scrubber.conf pour ajouter les lignes suivantes :

 
Sélectionnez
sql_connection = mysql://glance:SQLPASSWD@192.168.1.250:3306/glance
sql_idle_timeout = 3600

Ouvrez avec les droits d'administration le fichier /etc/glance/glance-registry-paste.ini et modifiez les lignes suivantes :

 
Sélectionnez
admin_tenant_name = service
admin_user = glance
admin_password = ADMPASSWD

Et la section :

 
Sélectionnez
[pipeline:glance-registry]
pipeline = authtoken auth-context context registryapp

Synchronisez maintenant la base de données MySQL :

 
Sélectionnez
sudo glance-manage version_control 0
sudo glance-manage db_sync

Redémarrez les services pour la prise en compte des modifications :

 
Sélectionnez
sudo service glance-api restart && sudo service glance-registry restart

IV-D. Utilisation

Vérifiez maintenant si tout fonctionne correctement. Téléchargez une première image pour tester :

 
Sélectionnez
wget http://uec-images.ubuntu.com/releases/precise/release/ubuntu-12.04-server-cloudimg-amd64-disk1.img

Ajoutez maintenant l'image téléchargée aux images Glance :

 
Sélectionnez
glance add name="Ubuntu 12.04 cloudimg amd64" is_public=true container_format=ovf disk_format=qcow2 < ubuntu-12.04-server-cloudimg-amd64-disk1.img
 
Sélectionnez
Uploading image 'Ubuntu 12.04 cloudimg amd64'
=====================================================================================================================================================================================================================================[100%] 136.648660M/s, ETA  0h  0m  0s
Added new image with ID: d1b7defa-0c35-4e8c-aef5-0d58c8d80a52

La commande glance index donne une liste des images :

 
Sélectionnez
glance index
 
Sélectionnez
ID                                   Name                           Disk Format          Container Format     Size          
------------------------------------ ------------------------------ -------------------- -------------------- --------------
d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 Ubuntu 12.04 cloudimg amd64    qcow2                ovf                       230490112

La commande glance details affiche des informations détaillées sur toutes les images.

 
Sélectionnez
glance details
 
Sélectionnez
================================================================================
URI: http://192.168.1.250:9292/v1/images/d1b7defa-0c35-4e8c-aef5-0d58c8d80a52
Id: d1b7defa-0c35-4e8c-aef5-0d58c8d80a52
Public: Yes
Protected: No
Name: Ubuntu 12.04 cloudimg amd64
Status: active
Size: 230490112
Disk format: qcow2
Container format: ovf
Minimum Ram Required (MB): 0
Minimum Disk Required (GB): 0
Owner: 0f71e86d30e247d3b1216fe5f2f3aa50
================================================================================

La syntaxe de la commande glance add est la suivante :

 
Sélectionnez
glance add name="<Image name>" is_public=true container_format=<container_format> disk_format=<disk_format> < <filename>

Où :

  • <Image name> : Nom que l'on veut donner a l'image ;
  • is_public=true : L'image est visible (true) ou non (false) dans tous les projets ;
  • <container_format> : Container Type de container bare pas de container, ovf OVF Container, aki ari ami Amazon kernel ramdisk ou machine ;
  • <disk_format> : Format de l'image raw, qcow2, vmdk, ISO, etc. ;
  • <filename> : Le nom de l'image a uploader.

Pour voir la liste des commandes disponibles et les détails utilisés :

 
Sélectionnez
glance help [NOM DE LA COMMANDE]

V. Nova

Passez maintenant à l'installation de Nova, la gestion des instances des machines virtuelles, de leur espace disque et du réseau.

V-A. Préparation de la base de données Mysql

La commande suivante crée un utilisateur et sa base de données nommés « nova ». Changez SQLPASSWD par un mot de passe de votre choix :

 
Sélectionnez
mysql -u root -p <<EOF
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'SQLPASSWD';
EOF

V-B. Installation

V-C. Configuration

Création des services et points d'accès pour Keystone, au nombre de 2: les services compute et volume.

V-C-1. Service compute

 
Sélectionnez
keystone service-create --name=nova --type=compute --description='OpenStack Compute Service'
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | OpenStack Compute Service        |
| id          | 4ba6c7149dd1421f8c429afc0c8dbdfe |
| name        | nova                             |
| type        | compute                          |
+-------------+----------------------------------+
 
Sélectionnez
keystone endpoint-create --region RegionOne --service_id=4ba6c7149dd1421f8c429afc0c8dbdfe --publicurl='http://192.168.1.250:8774/v2/%(tenant_id)s' --internalurl='http://192.168.1.250:8774/v2/%(tenant_id)s' --adminurl='http://192.168.1.250:8774/v2/%(tenant_id)s'
 
Sélectionnez
+-------------+--------------------------------------------+
|   Property  |                   Value                    |
+-------------+--------------------------------------------+
| adminurl    | http://192.168.1.250:8774/v2/%(tenant_id)s |
| id          | f783461a1d0f4d9fb8e6dabc0fd0a177           |
| internalurl | http://192.168.1.250:8774/v2/%(tenant_id)s |
| publicurl   | http://192.168.1.250:8774/v2/%(tenant_id)s |
| region      | RegionOne                                  |
| service_id  | 4ba6c7149dd1421f8c429afc0c8dbdfe           |
+-------------+--------------------------------------------+

V-C-2. Service volume

 
Sélectionnez
keystone service-create --name=volume --type=volume --description='OpenStack Volume Service'
 
Sélectionnez
+-------------+----------------------------------+
|   Property  |              Value               |
+-------------+----------------------------------+
| description | OpenStack Volume Service         |
| id          | de65a68c5ae34737bc6678f6c7bc884a |
| name        | volume                           |
| type        | volume                           |
+-------------+----------------------------------+
 
Sélectionnez
keystone endpoint-create --region RegionOne --service_id=de65a68c5ae34737bc6678f6c7bc884a --publicurl='http://192.168.1.250:8776/v1/%(tenant_id)s' --internalurl='http://192.168.1.250:8776/v1/%(tenant_id)s' --adminurl='http://192.168.1.250:8776/v1/%(tenant_id)s'
 
Sélectionnez
+-------------+--------------------------------------------+
|   Property  |                   Value                    |
+-------------+--------------------------------------------+
| adminurl    | http://192.168.1.250:8776/v1/%(tenant_id)s |
| id          | 36834fdc7ce3410a8442dffd90c3d3e2           |
| internalurl | http://192.168.1.250:8776/v1/%(tenant_id)s |
| publicurl   | http://192.168.1.250:8776/v1/%(tenant_id)s |
| region      | RegionOne                                  |
| service_id  | de65a68c5ae34737bc6678f6c7bc884a           |
+-------------+--------------------------------------------+

Dans les fichiers ci-dessous, SQLPASSWD est le mot de passe MySQL Nova, ADMPASSWD le mot de passe du compte de service Nova.

Ouvrez avec les droits d'administration le fichier /etc/nova/api-paste.ini et modifiez les lignes :

 
Sélectionnez
admin_tenant_name = service
admin_user = nova
admin_password = ADMPASSWD

Ouvrez avec les droits d'administration le fichier /etc/nova/nova.conf et remplacer tout avec les lignes ci-dessous.

La configuration obtenue utilisera le mode Dhcp. La ligne « nova.scheduler.simple.SimpleScheduler » défini une utilisation avec un seul serveur.
Pour un mode Vlan, pour utiliser plusieurs serveurs ou d'autres options, reportez-vous à la documentation OpenStack (en).

 
Sélectionnez
# LOGS/STATE
--verbose
--logdir=/var/log/nova
--state_path=/var/lib/nova
--lock_path=/var/lock/nova
--allow_admin_api=true
--use_deprecated_auth=false
--cc_host=192.168.1.250
--nova_url=http://192.168.1.250:8774/v1.1/
--routing_source_ip=192.168.1.250
--s3_host=192.168.1.250
--ec2_host=192.168.1.250
--ec2_url=http://192.168.1.250:8773/services/Cloud
--keystone_ec2_url=http://192.168.1.250:5000/v2.0/ec2tokens
--scheduler_driver=nova.scheduler.simple.SimpleScheduler
--root_helper=sudo nova-rootwrap
# AUTHENTICATION
--auth_strategy=keystone
# VOLUMES
--iscsi_helper=tgtadm
--iscsi_ip_prefix=172.16.0
# DATABASE
--sql_connection=mysql://nova:SQLPASSWD@192.168.1.250/nova
# COMPUTE
--libvirt_type=kvm
--connection_type=libvirt
--libvirt_use_virtio_for_bridges=true
--api_paste_config=/etc/nova/api-paste.ini
--allow_resize_to_same_host=True
--start_guests_on_host_boot=true
--resume_guests_state_on_host_boot=true
# RABBITMQ
--rabbit_host=192.168.1.250
# GLANCE
--image_service=nova.image.glance.GlanceImageService
--glance_api_servers=192.168.1.250:9292
# NETWORK
--network_manager=nova.network.manager.FlatDHCPManager
--dhcpbridge_flagfile=/etc/nova/nova.conf
--dhcpbridge=/usr/bin/nova-dhcpbridge
--fixed_range=172.16.0.0/24
--flat_network_dhcp_start=172.16.0.2
--flat_network_bridge=br1
--flat_interface=eth1
--network_size=256
--flat_injected=False
--my_ip=192.168.1.250
--floating_range=192.168.1.0/24 
--force_dhcp_release
--public_interface=br0
# NOVNC CONSOLE
--vnc_enabled=true
--novncproxy_base_url=http://192.168.1.250:6080/vnc_auto.html
--vncserver_proxyclient_address=127.0.0.1
--vncserver_listen=127.0.0.1

Toutes les entrées --flat… correspondent au réseau privé(172.16.0.0/24, début 172.16.0.2), destiné aux communications entre les VMs (pour Virtual Machine ou machines virtuelles), les autres serveurs Nova ou de stockage s'il y a…

--floating_range est le réseau public (LAN ou Internet) sur lequel est branché l'interface br0, pour attribuer une adresse aux VMs sur le réseau public. L'adresse 192.168.1.250 est celle de l'interface br0, ne remplacez pas par 127.0.0.1, ça ne fonctionnera pas.

Modifiez les droits sur le répertoire /etc/nova :

 
Sélectionnez
sudo chown -R nova:nova /etc/nova/

Redémarrez tous les services nova :

 
Sélectionnez
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler nova-volume nova-cert nova-consoleauth novnc; do sudo service "$a" stop; done
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler nova-volume nova-cert nova-consoleauth novnc; do sudo service "$a" start; done

Synchronisez la base de données :

 
Sélectionnez
sudo nova-manage db sync

Redémarrez de nouveau tous les services :

 
Sélectionnez
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler nova-volume nova-cert nova-consoleauth novnc; do sudo service "$a" stop; done
for a in libvirt-bin nova-network nova-compute nova-api nova-objectstore nova-scheduler nova-volume nova-cert nova-consoleauth novnc; do sudo service "$a" start; done

V-D. Utilisation

Vous pouvez maintenant vérifier que tous les services fonctionnent, le résultat dans la colonne STATE doit être :

  • un smiley, représenté par :-), pour « OK » ;
  • un XXX : quelque chose n'as pas fonctionné, consultez les logs dans /var/log/nova/nova-le_nom_du_service_KO.
 
Sélectionnez
sudo nova-manage service list
 
Sélectionnez
2012-05-16 00:20:09 DEBUG nova.utils [req-527f4f50-f02e-41da-bc96-43d3d9070807 None None] backend <module 'nova.db.sqlalchemy.api' from '/usr/lib/python2.7/dist-packages/nova/db/sqlalchemy/api.pyc'> from (pid=9869) __get_backend /usr/lib/python2.7/dist-packages/nova/utils.py:658
Binary           Host                                 Zone             Status     State Updated_At
nova-scheduler   myhost                                 nova             enabled    :-)   2012-05-15 22:20:04
nova-volume      myhost                                 nova             enabled    :-)   2012-05-15 22:20:03
nova-compute     myhost                                 nova             enabled    :-)   2012-05-15 22:20:05
nova-network     myhost                                 nova             enabled    :-)   2012-05-15 22:20:03
nova-consoleauth myhost                                 nova             enabled    :-)   2012-05-15 22:20:03
nova-cert        myhost                                 nova             enabled    :-)   2012-05-15 22:20:04

L'affichage du résultat d'une commande est beaucoup plus rapide que son exécution réelle. Si vous n'obtenez pas de message d'erreur, patientez quelques instants et vérifiez avec une commande d'affichage que l'action a bien été prise en compte.
Relancer une commande ou demander son annulation alors qu'elle est en cours d'exécution peut rendre le composant Nova instable et empêcher la suppression de l'action demandée ou laisser des entrées indésirables dans la base de données. Exemples: l'attribution d'une adresse IP publique ou la création d'un disque virtuel.
N'hésitez pas à… patienter

V-D-1. Images disques

Listez les images disque fournies par le service Glance :

 
Sélectionnez
nova image-list
 
Sélectionnez
+--------------------------------------+-----------------------------+--------+--------+
|                  ID                  |             Name            | Status | Server |
+--------------------------------------+-----------------------------+--------+--------+
| d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 | Ubuntu 12.04 cloudimg amd64 | ACTIVE |        |
+--------------------------------------+-----------------------------+--------+--------+

V-D-2. Réseaux

Profitez-en pour créer les réseaux privés et publics. Les adresses seront enregistrées dans la base MySQL. Le réseau public :

 
Sélectionnez
sudo nova-manage floating create --ip_range=192.168.1.0/24

Le réseau privé, destiné aux communications entre les VMs, les autres serveurs Nova ou de stockage s'il y a… :

 
Sélectionnez
sudo nova-manage network create private --fixed_range_v4=172.16.0.0/24 --num_networks=1 --bridge=br1 --bridge_interface=eth1 --network_size=256

V-D-3. Pare-feu

Par défaut, les règles de pare-feu bloquent les paquets entrants sur l'interface publique à destination des VMs. Il est possible de créer des ensembles de règles. L'ensemble de règles utilisée devra être spécifié au lancement de chaque instance. Ci-dessous un exemple de création de règles sur l'ensemble « default » créé automatiquement à l'installation, si vous voulez autoriser le ping et SSH pour toutes les VMs sur l'interface publique (icmp -1 correspond a tout.

 
Sélectionnez
nova secgroup-add-rule default icmp -1 -1  0.0.0.0/0
 
Sélectionnez
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port |  IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+
 
Sélectionnez
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
 
Sélectionnez
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port |  IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

Listez les règles de ports autorisés sur le groupe de règles « default » :

 
Sélectionnez
nova secgroup-list-rules default
 
Sélectionnez
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port |  IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| icmp        | -1        | -1      | 0.0.0.0/0 |              |
| tcp         | 22        | 22      | 0.0.0.0/0 |              |
+-------------+-----------+---------+-----------+--------------+

V-E. Première machine virtuelle

Maintenant que tout fonctionne, vous allez pouvoir créez votre première VM.

Assurez-vous d'avoir créé une clé SSH :

 
Sélectionnez
ssh-keygen -t rsa

Ajoutez-la au serveur :

 
Sélectionnez
nova keypair-add --pub_key ~/.ssh/id_rsa.pub key1

Il faut définir les spécifications de la future VM, pour voir les possibilités, utilisez la commande ci-dessous, la création de vos propres définitions étant bien sur possible :

 
Sélectionnez
nova flavor-list
 
Sélectionnez
+----+-----------+-----------+------+-----------+------+-------+-------------+
| ID |    Name   | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor |
+----+-----------+-----------+------+-----------+------+-------+-------------+
| 1  | m1.tiny   | 512       | 0    | 0         |      | 1     | 1.0         |
| 2  | m1.small  | 2048      | 10   | 20        |      | 1     | 1.0         |
| 3  | m1.medium | 4096      | 10   | 40        |      | 2     | 1.0         |
| 4  | m1.large  | 8192      | 10   | 80        |      | 4     | 1.0         |
| 5  | m1.xlarge | 16384     | 10   | 160       |      | 8     | 1.0         |
+----+-----------+-----------+------+-----------+------+-------+-------------+

Pour la suite, il sera utilisé l'ID 1 correspondant à une machine disposant de 512 Mb de RAM, 1 CPU virtuel et aucun disque supplémentaire.

Lancez votre première VM avec la commande nova boot, le paramètre --flavor indique quelles spécifications, --image l'ID de l'image fournie par glance, vient ensuite le nom et la clé ssh utilisée. Indiquez aussi l'ensemble de règles de pare-feu, sinon c'est l'ensemble « default » qui est appliqué.

 
Sélectionnez
nova boot --flavor 1 --image d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 myfirstvm --key_name key1 &
 
Sélectionnez
[1] 5472
+-------------------------------------+--------------------------------------+
|               Property              |                Value                 |
+-------------------------------------+--------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                               |
| OS-EXT-SRV-ATTR:host                | myhost                               |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                 |
| OS-EXT-SRV-ATTR:instance_name       | instance-00000003                    |
| OS-EXT-STS:power_state              | 0                                    |
| OS-EXT-STS:task_state               | scheduling                           |
| OS-EXT-STS:vm_state                 | building                             |
| accessIPv4                          |                                      |
| accessIPv6                          |                                      |
| adminPass                           | 4BMRzdXgtLvF                         |
| config_drive                        |                                      |
| created                             | 2012-07-09T17:09:18Z                 |
| flavor                              | m1.tiny                              |
| hostId                              |                                      |
| id                                  | 9360ae16-6b3a-4eb6-9b15-6b05d3f83989 |
| image                               | Ubuntu 12.04 cloudimg amd64          |
| key_name                            | key1                                 |
| metadata                            | {}                                   |
| name                                | myfirstvm                            |
| progress                            | 0                                    |
| status                              | BUILD                                |
| tenant_id                           | 0f71e86d30e247d3b1216fe5f2f3aa50     |
| updated                             | 2012-07-09T17:09:19Z                 |
| user_id                             | c97c87b3ed894401975dd6d757b40330     |
+-------------------------------------+--------------------------------------+
 
[1]+  Fini                    nova boot --flavor 1 --image d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 myfirstvm --key_name key1

Un récapitulatif des propriétés de la machine s'affiche. Pour le réafficher, utilisez la commande :

 
Sélectionnez
nova show myfirstvm

Pour lister les VM existantes :

 
Sélectionnez
nova list
 
Sélectionnez
+--------------------------------------+-----------+--------+--------------------+
|                  ID                  |    Name   | Status |      Networks      |
+--------------------------------------+-----------+--------+--------------------+
| 9360ae16-6b3a-4eb6-9b15-6b05d3f83989 | myfirstvm | ACTIVE | private=172.16.0.2 |
+--------------------------------------+-----------+--------+--------------------+

Connectez-vous sur la VM :

 
Sélectionnez
ssh ubuntu@172.16.0.2
 
Sélectionnez
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual x86_64)
 
 * Documentation:  https://help.ubuntu.com/
 
  System information as of Mon Jul  9 17:10:53 UTC 2012
.
.
.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
 
ubuntu@myfirstvm:~$ exit
logout
Connection to 172.16.0.2 closed.

Vous pouvez créer un disque dur supplémentaire :

 
Sélectionnez
nova volume-create --display_name "volume1" 10

Attachez-le à la VM :

 
Sélectionnez
nova volume-attach myfirstvm 1 /dev/vdb

Vérifiez le rattachement :

 
Sélectionnez
nova volume-list
 
Sélectionnez
+----+--------+--------------+------+-------------+--------------------------------------+
| ID | Status | Display Name | Size | Volume Type |             Attached to              |
+----+--------+--------------+------+-------------+--------------------------------------+
| 1  | in-use | volume1      | 10   | None        | 9360ae16-6b3a-4eb6-9b15-6b05d3f83989 |
+----+--------+--------------+------+-------------+--------------------------------------+

Vous pouvez maintenant vous reconnecter à la VM pour partitionner ce disque et l'utiliser.

Connectez maintenant cette instance virtuelle a votre LAN.

Il faut tout d'abord allouer une adresse IP :

 
Sélectionnez
nova floating-ip-create
 
Sélectionnez
+-------------+-------------+----------+------+
|      Ip     | Instance Id | Fixed Ip | Pool |
+-------------+-------------+----------+------+
| 192.168.1.1 | None        | None     | nova |
+-------------+-------------+----------+------+

Puis attachez cette adresse à la VM :

 
Sélectionnez
nova add-floating-ip myfirstvm 192.168.1.1

Patientez quelques secondes et vérifiez la présence sur votre LAN d'une machine à cette adresse :

 
Sélectionnez
ping -c 2 192.168.1.1
 
Sélectionnez
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=0.589 ms
64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=0.452 ms
 
--- 192.168.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.452/0.520/0.589/0.072 ms

La commande nova list vous confirme l'attribution :

 
Sélectionnez
nova list
 
Sélectionnez
+--------------------------------------+-----------+--------+---------------------------------+
|                  ID                  |    Name   | Status |             Networks            |
+--------------------------------------+-----------+--------+---------------------------------+
| 9360ae16-6b3a-4eb6-9b15-6b05d3f83989 | myfirstvm | ACTIVE | private=172.16.0.2, 192.168.1.1 |
+--------------------------------------+-----------+--------+---------------------------------+

Il est bien sur possible d'envoyer des commandes à partir de n'importe quel autre ordinateur où les paquets python-novaclient,python-nova-adminclient sont installés.

Pour voir la liste des commandes disponibles et les détails utilisés :

 
Sélectionnez
nova help [NOM DE LA COMMANDE]

VI. Dashboard Horizon

L'interface graphique, le Dashboard Horizon a été développée pour simplifier l'administration du serveur et des projets. L'accès se fait a partir d'un navigateur web pointant a l'adresse du serveur.

Les différents services doivent être installés et configurés avant de pouvoir l'utiliser. Une grande partie des commandes est alors a portée d'un clic de souris.

VI-A. Installation

Installez les paquets apache2,libapache2-mod-wsgi,openstack-dashboard

Redémarrez le serveur web Apache pour vérifier que tout est OK :

 
Sélectionnez
sudo service apache2 restart

VI-B. Utilisation

Ouvrez votre navigateur favori à l'adresse de votre interface publique ou 127.0.0.1

Image non disponible

Comme pour les commandes shell, l'affichage du résultat d'une commande ne garantit pas qu'elle soit entièrement exécutée. Si vous n'obtenez pas de message d'erreur, la mise à jour de la page peut demander quelques secondes supplémentaires.
Relancer une commande ou demander son annulation alors qu'elle est en cours d'exécution peut rendre le composant Nova instable et empêcher la suppression de l'action demandée ou laisser des entrées indésirables dans la base de données. Exemple: lors de la suppression d'un disque virtuel, les données sont supprimées avant que l'espace ne soit libéré.
N'hésitez pas à… patienter

Les identifiants de connexion de l'administrateur sont les mêmes que ceux du fichier .novarc. Si vous avez suivi ce document sans rien changer il s'agit donc pour le compte d'administration de :

Username : admin Password: ADMPASSWD.

Les comptes qui ont pour rôle « admin » ont accès a l'interface d'administration sur le Dashboard, ainsi qu'a leur(s) projet(s). Les rôles « Member » n'ont accès qu'a leur(s) projet(s).

VI-B-1. Accès Admin

Dans l'ordre les différents menus :

  • Overview : Récapitulatif de l'usage des serveurs par projet, utilisation actuelle en nombre de CPU virtuels, RAM et Disques puis compteur en CPU et espace disque(GB) par heures ;
  • Instances : Liste des instances de machines virtuelles actuelles plus quelques infos globales comme le projet auquel elles appartiennent, le serveur hôte, l'adresse IP, la taille, le statut et les actions en cours ;
  • Services : Liste des services activés et le serveur hôte.
  • Flavors : La liste des types d'instances disponibles, leurs spécifications en nombre de CPUs, mémoire, espace disque. La création de nouvelles définitions d'instance est possible ;
  • Images : Les images disques stockées par le service Glance ;
  • Projects : les projets existants et leur statut. Il est possible de créer de nouveaux projets ;
  • Users : La liste des utilisateurs enregistrés, avec la possibilité d'ajouter ou d'éditer les détails mais pas d'ajouter l'utilisateur a plusieurs projets ;
  • Quotas : les quotas définis sur les ressources des serveurs, pas de modification possible.

VI-B-2. Accès projets

Un bouton permet de basculer entre les différents projets dont l'utilisateur est membre, s'il y a. Puis viennent les menus :

  • Overview : Récapitulatif, comme dans la partie Admin, mais ne concernant que le projet sélectionné ;
  • Instances & Volumes : La liste des instances existantes et les possibilités de les éditer, la création ou modification des volumes disques virtuels ;
  • Images & Snapshots : Liste des images autorisées pour le projet, sert à lancer de nouvelles instances. Regroupe aussi les instantanés disponibles, instances et volumes disques ;
  • Acces & Security : Les adresses IP disponibles pour connecter les instances au réseau public avec possibilité de création, les groupes de règles de parefeu et leur interface d'édition et enfin la liste des clés SSH avec l'import ou la création de certificat.

VII. Créez vos propres images

L'intérêt d'OpenStack étant de déployer rapidement des instances de machines virtuelles, ça ne servirait a rien de devoir passer ensuite des heures à les configurer. La création de vos propres images vous permettra de gagner un temps précieux.

Plusieurs grandes distributions ont été testées avec succès, dont Ubuntu et Debian, RedHat et Centos mais aussi Mandriva. D'autres systèmes peuvent aussi servir comme FreeBSD ou encore Windows.

Pour un système Linux, les pré-requis sont : un système à jour, Curl et un serveur SSH. Pour FreeBSD ou Windows, prévoyez l'installation du pilote Virtio.(driver Windows signé disponible ici).

Installez et configurez une VM avec KVM, installez les logiciels et services voulus et les comptes utilisateurs. Gardez à l'esprit que tout ce que vous faites sur cette image se retrouvera sur chaque instance. Et à l'inverse, tout ce que vous n'aurez pas fait sera aussi à refaire à chaque nouvelle VM.

Pour simplifier l'administration des comptes sur les instances, l'utilisation d'un annuaire LDAP facilite grandement le travail. Il suffira ensuite de faire les changements sur l'annuaire pour ne pas être obligé de remettre ses images a jour.

Pour finir, pour les images Linux, ouvrez avec les droits d'administration le fichier /etc/rc.local et ajoutez les lignes suivantes avant la ligne "exit 0" (ou avant "/var/lock/subsys/local" pour Centos). Ceci permettra à l'instance de récupérer les clés SSH au lancement.

 
Sélectionnez
echo >> /root/.ssh/authorized_keys
curl -m 10 -s http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key | grep 'ssh-rsa' >> /root/.ssh/authorized_keys
echo "AUTHORIZED_KEYS:"
echo "************************"
cat /root/.ssh/authorized_keys
echo "************************"

Une dernière précaution à prendre pour éviter les conflits de nommage des interfaces réseau: effacer la règle udev y faisant référence :

 
Sélectionnez
sudo rm -rf /etc/udev/rules.d/70-persistent-net.rules

Votre image disque est maintenant prête à être exportée sur le serveur Glance.

VIII. Désinstallation

Pour supprimer cette application, supprimer les paquets. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.

Supprimez ensuite les bases de données keystone, glance et nova.

IX. Voir aussi