Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
openstack [Le 15/07/2012, 10:57]
xavier4811
openstack [Le 22/05/2023, 19:03] (Version actuelle)
lyondif02 [Pré-requis] typo. +reformulation mineure
Ligne 1: Ligne 1:
-{{tag>​Precise virtualisation serveur tutoriel ​BROUILLON}}+{{tag>​Precise virtualisation serveur tutoriel}}
 ---- ----
    
 ====== OpenStack ====== ====== OpenStack ======
    
-OpenStack est un logiciel libre (license Apache 2.0) qui permet la construction de cloud privé et public. ​OpenStack ​est aussi une communauté et un projet ​en plus d'un logiciel ​qui à pour but d'aider les organisations à mettre en oeuvre ​un système de serveur et de stockage virtuel. OpenStack est composé d'une série de logiciels et de projets au code source libre qui sont maintenu ​par la communauté ​incluant: ​OpenStack Compute ​(nommé Nova), OpenStack Object Storage ​(nommé Swift), et OpenStack Image Service ​(nommé Glance)+OpenStack est un logiciel libre((license Apache 2.0)) qui permet la construction de [[:cloud]] privé et public. ​C’est aussi le nom d’une communauté et d’un projet qui ont pour but daider les organisations à mettre en œuvre ​un système de serveur et de stockage virtuel. 
-Ce document présente l'installation des composant ​d'identité, d'images et virtualisation sur une seule machine.\\ + 
-Il s'agit plutôt d'une configuration de développement ​mais néanmoins fonctionnelle. ​les services réseau(Quantum) et stockage(Swiftne sont pas abordés(du moins pour l'​instant).+OpenStack est composé dune série de logiciels et de projets au code source libre qui sont maintenus ​par la communauté. Il comprend notamment les composants ​OpenStack Computenommé Nova, OpenStack Object Storagenommé Swift, et OpenStack Image Servicenommé Glance. 
 + 
 +Ce document présente linstallation des composants ​didentité, dimages et de virtualisationsur une seule machine. ​Cela correspond davantage à une configuration de développement. Elle est néanmoins fonctionnelle. ​Les services réseau ​avancé, nommé Neutron ​(ex-Quantum)et stockage ​objet, nommé ​Swiftne sont pas abordés ​ici.
    
 ===== Pré-requis ===== ===== Pré-requis =====
- + 
 +Dispositions générales :​
   * Disposer des [[:​sudo|droits d'​administration]].   * Disposer des [[:​sudo|droits d'​administration]].
-  * Disposer d'une connexion à Internet configurée et activée. +  * Disposer dune connexion à Internet configurée et activée. 
-  * Un processeur supportant la virtualisation matérielle ([[kvm#​mise_en_place|test sur la page KVM]]) +  * Avoir activé les [[:​dépôts]] logiciels. 
-  * Disposer d'un disque dur ou d'une partition non formatée pour LVM +  * Disposer d’un ​processeur supportant la virtualisation matérielle ([[:kvm#​mise_en_place|test sur la page KVM]]). 
-  * Ne pas avoir peur de la ligne de commande +  * Disposer dun disque dur ou dune partition non formatée pour [[:LVM]]. 
-  * Avoir [[:​tutoriel:​comment_installer_un_paquet|installé les paquet]] **[[apt>​kvm|kvm]] [[apt>libvirt-bin|libvirt-bin]] [[apt>​virtinst|virtinst]]**. +  * Ne pas avoir peur de la [[:​commande_shell|ligne de commande]]. 
-  Avoir [[:​tutoriel:​comment_installer_un_paquet|installé les paquet]] ​**[[apt>​mysql-server|mysql-server]] [[apt>​python-mysqldb|python-mysqldb]]** +  * [[:​tutoriel:​comment_installer_un_paquet|Avoir installé les paquets]] suivants :​ 
-  Avoir [[:​tutoriel:​comment_installer_un_paquet|installé les paquet]] ​**[[apt>​bridge-utils|bridge-utils]]** +    * **[[apt>​kvm,libvirt-bin,virtinst]]** 
-  * Il est nécéssaire de configurer ​le réseau ​en IP FixeSupprimez ​les paquets Network-Manager ou Wicd et resolvconf.+    * **[[apt>​mysql-server,python-mysqldb]]** 
 +    * **[[apt>​bridge-utils|bridge-utils]]**. 
 +  * Avoir configuré ​le réseau ​avec un adressage ​IP statiqueSupprimer ​les paquets Network-Manager ou Wicd et resolvconf.
  
-Les paquets OpenStack utilisés sont ceux des dépots Ubuntu.\\ +Notes particulières :​ 
-Tous les services OpenStack seront installés sur la même machine.\\ +  ​* ​Tous les services OpenStack seront installés sur la même machine ; 
-La configuration abordée ​suppose ​l'utilisation de 2 interfaces réseau\\ +  ​* ​La configuration abordée ​considère ​lutilisation de 2 interfaces réseau.
-Toutes les éditions de fichier, sans precision contraire, sont faites avec les droits de root(sudo)Donc avant de commencer,​choisissez votre méthode d'​édition : [[:​tutoriel:​comment_modifier_un_fichier|Modifier un fichier]]+
  
 + ===== Préparation du système =====
    
-===== Préparation du système ===== +==== Réseau ​====
-  +
-=== Réseau ​=== +
-<note important>​l'​utilisation d'une interface wifi pour les bridges peut se réveler très complexe voire impossible. Préferez une interface virtuelle</​note>​ +
-[[:​tutoriel:​comment_modifier_un_fichier|Modifiez votre fichier]] **/​etc/​network/​interfaces** comme ci-dessous en adaptant a votre configuration.\\+
  
-<code>+<note important>​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</​note>​ 
 +[[:​tutoriel:​comment_modifier_un_fichier|Modifiez avec les droits d'​administration]] votre fichier **/​etc/​network/​interfaces** comme ci-dessous en adaptant a votre configuration. 
 + 
 +<file>
 auto lo auto lo
 iface lo inet loopback iface lo inet loopback
Ligne 43: Ligne 47:
  
 auto br0 auto br0
-iface inet br0 static+iface br0 inet static
  bridge_ports eth0  bridge_ports eth0
  address 192.168.1.250  address 192.168.1.250
Ligne 51: Ligne 55:
  
 auto br1 auto br1
-iface inet br1 manual+iface br1 inet manual
  bridge_ports eth1  bridge_ports eth1
  
-</code>+</file>
    
-[[:​tutoriel:​comment_modifier_un_fichier|Modifiez ​votre fichier]] **/​etc/​resolv.conf** comme ci-dessous et ajoutez vos DNS habituels.\\+[[:​tutoriel:​comment_modifier_un_fichier|Modifiez ​avec les droits d'​administration]] votre fichier ​**/​etc/​resolv.conf** comme ci-dessous et ajoutez vos [[wpfr>​Domain_Name_System|DNS]] habituels.\\
 Les DNS ci dessous sont ceux de Google Les DNS ci dessous sont ceux de Google
  
-<code>+<file>
 nameserver 8.8.8.8 nameserver 8.8.8.8
 nameserver 8.8.4.4 nameserver 8.8.4.4
 +</​file>​
 +
 +Relancez les cartes réseau pour que les modifications soient prises en compte.\\
 +<​code>​
 +for a in `ifconfig | awk '/​Link/​ { if ($1 != "​lo"​) print $1 }'`; do sudo ifdown $a ; done
 +sudo ifup -e lo -av
 </​code>​ </​code>​
  
-Redémarrez pour que les modifications réseau soit prisent ​en compte.\\+<note tip> Assurez-vous d'​avoir décommenté l'​option permettant le forward des paquets ​en IPV4 dans le fichier /etc/sysctl.conf 
 + : 
 +<​file>​ 
 +net.ipv4.ip_forward=1 
 +</​file>​ 
 +puis lancez la commande : 
 +<​code>​sysctl -p</​code>​ 
 +</​note>​ 
 +==== Serveur NTP ====
  
-=== Serveur ​NTP ===+Le serveur [[:ntp|NTP]] étant nécessaire à la bonne synchronisation du cloud, ​ [[:​tutoriel:​comment_installer_un_paquet|installez le paquet]] **[[apt>​ntp|ntp]]**.\\ 
 +Ensuite, [[:​tutoriel:​comment_modifier_un_fichier|ouvrez avec les droits d'​administration]] le fichier **/​etc/​ntp.conf** et ajoutez les lignes
  
-Le serveur [[ntp|NTP]] est nécéssaires a la bonne synchronisation du cloud.\\ +<file
-Installez le paquet **[[apt>​ntp|ntp]]**.\\ +server ​ntp.ubuntu.com iburst 
-[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez le fichier]] **/​etc/​ntp.conf** et ajoutez les lignes +server ​127.127.1.0
- +
-<code+
-serveur ​ntp.ubuntu.com iburst +
-serveur ​127.127.1.0+
 fudge 127.127.1.0 stratum 10 fudge 127.127.1.0 stratum 10
-</code>+</file>
  
-redémarrez le service ​+redémarrez le service
 <​code>​ <​code>​
 sudo service ntp restart sudo service ntp restart
 </​code>​ </​code>​
  
-=== LVM === +==== LVM ==== 
-Les volumes [[lvm|LVM]] serviront de disques durs supplémentaires pour les serveurs virtuels.\\ +Les volumes [[:lvm|LVM]] serviront de disques durs supplémentaires pour les serveurs virtuels. 
-Installez les paquets **[[apt>​tgt|tgt]] [[apt>open-iscsi|open-iscsi]] [[apt>open-iscsi-utils|open-iscsi-utils]] [[apt>​lvm2|lvm2]]** \\ + 
-Cette commande suppose ​que vous ayez un disque dur /dev/sdc vide sans partition. Adaptez en fonction de votre configuration.Si vous utilisez ​[[gparted|Gparted]], créez une partition ​non formatée.\\ +[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​tgt,open-iscsi,open-iscsi-utils,lvm2]]** \\ 
-Créez une partion ​de 100Giga ​sur /dev/sdc+ 
 +Les commandes qui suivent supposent ​que vous avez un disque dur **/dev/sdc** vide sans [[:​partitions|partition]]. Adaptez ​les commandes ​en fonction de votre configuration.\\ 
 +Créez une [[:partitions|partition]] non formatée de 100Gigas ​sur **/dev/sdc** en adaptant à votre configuration:​
 <​code>​ <​code>​
 sudo fdisk /dev/sdc sudo fdisk /dev/sdc
 n p 1 <​return>​ +100G w n p 1 <​return>​ +100G w
 </​code>​ </​code>​
-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é.\\+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é:
 <​code>​ <​code>​
 sudo pvcreate /dev/sdc1 sudo pvcreate /dev/sdc1
Ligne 98: Ligne 116:
 </​code>​ </​code>​
  
-=== RabbitMQ === +==== RabbitMQ ​==== 
-RabbitMQ est un broker ​de messages se basant sur le standard AMQP afin d'​échanger avec différents clients.\\ +RabbitMQ est un courtier ​de messages se basant sur le standard ​[[wpfr>​Advanced_Message_Queuing_Protocol|AMQP]] afin d'​échanger avec différents clients.\\ 
-C'est le service qui permet aux composants OpenStack de communiquer entre eux(pour faire simple).\\+Pour faire simple: c'est le service qui permet aux composants OpenStack de communiquer entre eux.
  
-Installez les paquets **[[apt>​rabbitmq-server|rabbitmq-server]] [[apt>memcached|memcached]] [[apt>​python-memcache|python-memcache]]**+[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​rabbitmq-server,memcached,python-memcache]]**
  
-=== Mysql === +==== Mysql ==== 
-Chaque composant possède sa base de données [[mysql|MySQL]],​ contenant toutes les données modifiables ​chaud(ID des images disques, des instances virtuelles, réseaux, identités...). Les données de configuration fixes sont stockées dans des fichiers texte.\\ +Chaque composant possède sa base de données [[:mysql|MySQL]],​ contenant toutes les données modifiables ​à chaud (ID des images disques, des instances virtuelles, réseaux, identités...). Les données de configuration fixes sont stockées dans des fichiers texte.\\ 
-Il est possible d'​utiliser un autre [[sgbd|SGBD]],​ MySQL étant recommandé dans la documentation OpenStack.\\ +<note tip>Il est possible d'​utiliser un autre [[:sgbd|SGBD]],​ MySQL étant recommandé dans la documentation OpenStack.</​note>​ 
-Modifiez ​la configuration ​de Mysql.\\ + 
-[[:​tutoriel:​comment_modifier_un_fichier|modifiez le fichier]] **/​etc/​mysql/​my.cnf** pour indiquer a MySQL que le serveur doit écouter sur toutes les adresses, pas seulement sur la boucle locale. +Pour indiquer a MySQL que le serveur doit écouter sur toutes les adresses et pas seulement sur la boucle locale, modifiez sa configuration ​en [[:​tutoriel:​comment_modifier_un_fichier|ouvrant avec les droits d'​administration]] le fichier ​**/​etc/​mysql/​my.cnf** pour remplacer: 
-Remplacez +<file>
-<code>+
 bind-address = 127.0.0.1 bind-address = 127.0.0.1
-</code>+</file>
 par par
-<code>+<file>
 bind-address = 0.0.0.0 bind-address = 0.0.0.0
-</code>+</file>
 et redémarrez MySQL et redémarrez MySQL
 <​code>​ <​code>​
Ligne 123: Ligne 140:
  
 ===== Keystone ===== ===== Keystone =====
-===Installation du module de gestion d'​identités Keystone=== 
-Le composant Keystone est chargé de la gestion des utilisateurs et des services.\\ 
-==Gestion des utilisateurs. Users, roles & tenants== 
-La gestion des utilisateurs s'​articule autour de 3 objets\\ 
-l'​objet User représentant l'​utilisateur final.\\ 
-L'​objet Tenant qui 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.\\ 
  
-==Gestion des services et points d'​accès== +Le composant Keystone est chargé de la gestion des utilisateurs et des services. 
-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\\+=== Gestion des utilisateurs === 
 +La gestion des utilisateurs s’articule autour de 3 objets : 
 +  * l’objet //​[[#​Création_des_utilisateurs|User]]//​ représentant l’utilisateur final ; 
 +  * l’objet //​[[#​Création des Tenants|Tenant]]//​ que l’on peut représenter par un projet ou une organisation au sein desquels les instances seront regroupées et administrées par les utilisateurs ;​ 
 +  * l’objet //​[[#​Création des rôles|Role]]//​ qui définit le rôle de l’utilisateur sur un //Tenant//. Un utilisateur peut être associé à un ou plusieurs rôles sur différents Tenants. 
 + 
 +=== Gestion des services et points d'​accès ​=== 
 +La gestion des différents services ​s’applique notamment aux : 
 +  * composant //Glance// pour les images
 +  * composant //Swift// pour le stockage ​objet.
  
-===Préparation de la base de données Mysql=== +La définition des points d’accès à ces différents services porte en l’occurrence sur : 
-Commençons ​par créer la base MySQL.+  * des adresses de type URL, 
 +  * des ports réseau. 
 + 
 +==== 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.
 <​code>​ <​code>​
 mysql -u root -p <<EOF mysql -u root -p <<EOF
 CREATE DATABASE keystone; CREATE DATABASE keystone;
-GRANT ALL PRIVILEGES ON keystone.* TO '​keystone'​@'​%'​ IDENTIFIED BY 'qhKz6YYg';+GRANT ALL PRIVILEGES ON keystone.* TO '​keystone'​@'​%'​ IDENTIFIED BY 'SQLPASSWD';
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
 EOF EOF
 </​code>​ </​code>​
  
-===Installation=== 
  
-Installez les paquets **[[apt>​keystone|keystone]] [[apt>​python-keystone|python-keystone]] [[apt>​python-keystoneclient|python-keystoneclient]]**\\+==== Installation ====
  
-===Configuration===+[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​keystone,​python-keystone,​python-keystoneclient,​python-mysqldb]]**.
  
-[[:tutoriel:​comment_modifier_un_fichier|Ouvrez le fichier]] **/etc/​keystone/​keystone.conf** dans un éditeur et modifier les sections suivantes\\+Puis supprimez la base de données SQLite ​: 
 +<​code>​ 
 +rm /var/lib/​keystone/​keystone.db 
 +</​code>​ 
 +==== Configuration ====
  
-<code>+[[:​tutoriel:​comment_modifier_un_fichier|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 précédemment défini. 
 +<file>
 [DEFAULT] [DEFAULT]
-   bind_host = 0.0.0.0 +bind_host = 0.0.0.0 
-   ​public_port = 5000 +public_port = 5000 
-   ​admin_port = 35357 +admin_port = 35357 
-   ​admin_token = 2BSpUaPV +# Mot de passe d'​administration 
-   ​compute_port = 8774 +admin_token = ADMPASSWD 
-   ​verbose = True +compute_port = 8774 
-   ​debug = True +verbose = True 
-   ​log_config = /​etc/​keystone/​logging.conf+debug = True 
 +log_config = /​etc/​keystone/​logging.conf
  
  
 [sql] [sql]
-connection = mysql://​keystone:​qhKz6YYg@192.168.1.250:​3306/​keystone+connection = mysql://​keystone:​SQLPASSWD@192.168.1.250:​3306/​keystone
 idle_timeout = 200 idle_timeout = 200
-</code> +</file>
- +
-Redémarrez keystone+
  
 +Redémarrez le service //​keystone//​ :​
 <​code>​ <​code>​
 sudo service keystone restart sudo service keystone restart
 </​code>​ </​code>​
  
-et synchronisez ​la base de données +Synchronisez ​la base de données :
 <​code>​ <​code>​
 sudo keystone-manage db_sync sudo keystone-manage db_sync
 </​code>​ </​code>​
  
-===Création des utilisateurs=== +et donnez les droits en lecture / écriture à l’utilisateur / au groupe //​keystone//​ :​ 
-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 ​(jeton ​d'authentification de l'​admin) ​--endpoint url_du_service_keystone ​(adresse du serveur:​port/​directory/).\\ +<​code>​ 
-Il est bien sur possible d'​envoyer des commandes à partir de n'​importe quel autre ordinateur ou python-keystoneclient est installé.\\ +chown keystone:​keystone /​var/​lib/​keystone/​keystone.db 
-Création du compte admin+</​code>​ 
 +==== Création des utilisateurs ​==== 
 +Chaque commande ci-dessous contient lauthentification définie dans le fichier ​**keystone.conf** et utilisée par le client ​Python ​sous la forme suivante :​ 
 +<​code>​ 
 +  ​--token admin_token ​# mot de passe d'administration 
 +  ​--endpoint url_du_service_keystone ​adresse du serveur:​port/​dossier
 +</​code>​ 
 + 
 +=== Création du compte ​administrateur === 
 +Commande à exécuter après adaptation :​ 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=admin --pass=ADMPASSWD --email=admin@example.com 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=admin --pass=2BSpUaPV --email=admin@example.com 
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
 | Property |                                                          Value                                                          | | Property |                                                          Value                                                          |
Ligne 199: Ligne 240:
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
 </​code>​ </​code>​
-Le compte interne du service Glance+ 
 +=== Création du compte interne du service Glance ​== 
 +Commande à exécuter après adaptation :​ 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=glance --pass=ADMPASSWD --email=glance@example.com 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=glance --pass=2BSpUaPV --email=glance@example.com 
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
 | Property |                                                          Value                                                          | | Property |                                                          Value                                                          |
Ligne 213: Ligne 259:
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
 </​code>​ </​code>​
-Le compte interne du service Nova+ 
 +=== Création du compte interne du service Nova === 
 +Commande à exécuter après adaptation :​ 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=nova --pass=ADMPASSWD --email=nova@example.com 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=nova --pass=2BSpUaPV --email=nova@example.com 
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
 | Property |                                                          Value                                                          | | Property |                                                          Value                                                          |
Ligne 227: Ligne 278:
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
 </​code>​ </​code>​
-===Création des rôles=== + 
-Pour les rôles ​utilisateurs vous avez le choix entre :\\  +==== Création des rôles ​==== 
- -admin, donnant ​le droit de modifier la configuration des services(ex. allouer une plage d'​adresse ​IP, un quota d'espace disque pour un projet etc...)\\ + 
- -Memberpermet de gérer le contenu ​du projet(création ​d'​instances ​de machinesajout d'un disque virtuel ​a l'une d'​elles ​etc...)\\ +Chaque utilisateur peut être associé à un des deux rôles ​suivants 
-Les rôles KeystoneAdmin et KeystoneServiceAdmin sont des rôles internes ​nécéssaires.\\+  //​[[#​Role_admin|admin]]// : ce rôle donne le droit de modifier la configuration des services. ​Exemples : ​allouer une plage d’adresses ​IP, définir ​un quota despace disque pour un projetetc. 
 +  //​[[#​Role_Membre|Member]]// : ce rôle permet de gérer le contenu d’un projet. Exemples : créer une instance ​de machineajouter ​un disque virtuel ​à une machine, ​etc. 
 + 
 +Les rôles ​//​[[#​Role_KeystoneAdmin|KeystoneAdmin]]// et //​[[#​Role_KeystoneServiceAdmin|KeystoneServiceAdmin]]// sont des rôles internes ​et __nécessaires__. 
 + 
 +Par la suite, les commandes proposées intègrent l’authentification et l’accès au service sur le même modèle que pour la création des utilisateurs supra. 
 + 
 +=== Rôle admin === 
 +Commande à exécuter de manière adaptée :​ 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=admin 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=admin 
 +----------+----------------------------------+ +----------+----------------------------------+
 | Property |              Value               | | Property |              Value               |
Ligne 240: Ligne 302:
 | name     | admin                            | | name     | admin                            |
 +----------+----------------------------------+ +----------+----------------------------------+
-keystone --token ​2BSpUaPV ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=Member+</​code>​ 
 + 
 +=== Rôle Membre === 
 +Commande à exécuter de manière adaptée :​ 
 +<​code>​ 
 +keystone --token ​ADMPASSWD ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=Member 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​ 
 +<​code>​
 +----------+----------------------------------+ +----------+----------------------------------+
 | Property |              Value               | | Property |              Value               |
Ligne 247: Ligne 317:
 | name     | Member ​                          | | name     | Member ​                          |
 +----------+----------------------------------+ +----------+----------------------------------+
-keystone --token ​2BSpUaPV ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=KeystoneAdmin+</​code>​ 
 + 
 +=== Rôle KeystoneAdmin === 
 +Commande à exécuter de manière adaptée :​ 
 +<​code>​ 
 +keystone --token ​ADMPASSWD ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=KeystoneAdmin 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​ 
 +<​code>​
 +----------+----------------------------------+ +----------+----------------------------------+
 | Property |              Value               | | Property |              Value               |
Ligne 254: Ligne 332:
 | name     | KeystoneAdmin ​                   | | name     | KeystoneAdmin ​                   |
 +----------+----------------------------------+ +----------+----------------------------------+
-keystone --token ​2BSpUaPV ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=KeystoneServiceAdmin+</​code>​ 
 + 
 +=== Rôle KeystoneServiceAdmin === 
 +Commande à exécuter de manière adaptée :​ 
 +<​code>​ 
 +keystone --token ​ADMPASSWD ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ role-create --name=KeystoneServiceAdmin 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​ 
 +<​code>​
 +----------+----------------------------------+ +----------+----------------------------------+
 | Property |              Value               | | Property |              Value               |
Ligne 262: Ligne 348:
 +----------+----------------------------------+ +----------+----------------------------------+
 </​code>​ </​code>​
-===Création des "​tenants"​=== + 
-En premier ​le "​tenant" ​admin qui permet ​ses membres d'administrer les services.\\ +==== Création des Tenants ==== 
-Ensuite le "​tenant"​ interne des services.\\+Par la suite, les commandes proposées intègrent l’authentification et l’accès au service sur le même modèle que pour la création des utilisateurs supra. 
 + 
 +=== Tenant admin === 
 +Le //​Tenant ​admin// permet ​à ses membres dadministrer les services. 
 + 
 +Commande à exécuter de manière adaptée :​ 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://192.168.1.250:​35357/​v2.0/​ tenant-create --name=admin 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ tenant-create --name=admin 
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 275: Ligne 369:
 | name        | admin                            | | name        | admin                            |
 +-------------+----------------------------------+ +-------------+----------------------------------+
-keystone --token ​2BSpUaPV ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ tenant-create --name=service+</​code>​ 
 + 
 +=== Tenant service === 
 +Le //Tenant service// permet à ses membres d’accéder au service. 
 + 
 +Commande à exécuter de manière adaptée :​ 
 +<​code>​ 
 +keystone --token ​ADMPASSWD ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ tenant-create --name=service 
 +</​code>​ 
 +Réponse obtenue de manière approximative :​ 
 +<​code>​
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 285: Ligne 389:
 +-------------+----------------------------------+ +-------------+----------------------------------+
 </​code>​ </​code>​
-===Définition des rôles=== + 
-Il faut pour cela utiliser les ID affichés lors de la création des usersroles & tenants.\\ +==== Définition des rôles ​==== 
-L'utilisateur ​admin a un rôle admin sur le "​tenant" admin.\\+ 
 +Il faut pour cela utiliser les ID affichés lors de la création des //​[[#​Création_des_utilisateurs|Users]]((utilisateurs))[[#​Création_des_rôles|Roles]]((rôles))//​ et //[[# Création_des_Tenants|Tenants]]//​.\\ 
 +L'//User// "admin" ​a un //​Role// ​admin sur le //​Tenant// ​"admin".\\
 <​code>​ <​code>​
-keystone --token ​2BSpUaPV ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ user-role-add --user c97c87b3ed894401975dd6d757b40330 --role 3d945f41e08e4e2db1584fdb8f05d333 --tenant_id 0f71e86d30e247d3b1216fe5f2f3aa50+keystone --token ​ADMPASSWD ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ user-role-add --user-id c97c87b3ed894401975dd6d757b40330 --role-id 3d945f41e08e4e2db1584fdb8f05d333 --tenant_id 0f71e86d30e247d3b1216fe5f2f3aa50
 </​code>​ </​code>​
-Comme ce n'est pas pratique de recopier les IDs, on vas s'​éviter ​les erreurs de frappe ​avec awk\\ +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'utilisateur ​admin a un rôle KeystoneAdmin sur le "​tenant" admin.\\ +  ​* ​L'//User// "admin" ​a un //Role// "KeystoneAdmin" ​sur le //​Tenant// ​"admin"
-L'utilisateur ​admin a un rôle KeystoneServiceAdmin sur le "​tenant" admin.\\ +  ​* ​L'//User// "admin" ​a un //Role// "KeystoneServiceAdmin" ​sur le //​Tenant// ​"admin"
-L'utilisateur ​glance a un rôle admin sur le "​tenant" service.\\ +  ​* ​L'//User// "glance" ​a un //Role// "admin" ​sur le //​Tenant// ​"​service"
-L'utilisateur ​nova a un rôle admin sur le "​tenant" service.\\+  ​* ​L'//User// "nova" ​a un //Role// "admin" ​sur le //​Tenant// ​"​service".
 Voici les commandes correspondantes : Voici les commandes correspondantes :
 <​code>​ <​code>​
-keystone user-role-add --user `keystone user-list | awk '/ admin / { print $2 }'` --role `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 '/ KeystoneAdmin / { print $2 }'` --tenant_id `keystone tenant-list | awk '/ admin / { print $2 }'` 
-keystone user-role-add --user `keystone user-list | awk '/ admin / { print $2 }'` --role `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 '/ 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 `keystone user-list | awk '/ glance / { print $2 }'` --role `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 '/ 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 `keystone user-list | awk '/ nova / { print $2 }'` --role `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 }'`
 </​code>​ </​code>​
  
-===Création d'un utilisateur supplémentaire=== + 
-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) +==== Création d'un utilisateur supplémentaire ​==== 
-Le rôle "​Member"​ est suffisant. ​+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. 
 +L'User $USER (xavier ici) a un Role "​Member"​ sur le Tenant $USER (xavier ici). 
 + 
 +=== User === 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=$USER --pass=USRPASSWD --email=$USER@example.com 
 +</​code>​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-create --name=$USER --pass=STRONGPWD --email=$USER@example.com 
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
 | Property |                                                          Value                                                          | | Property |                                                          Value                                                          |
Ligne 319: Ligne 431:
 | tenantId | None                                                                                                                    | | tenantId | None                                                                                                                    |
 +----------+-------------------------------------------------------------------------------------------------------------------------+ +----------+-------------------------------------------------------------------------------------------------------------------------+
-keystone --token ​2BSpUaPV ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ tenant-create --name=$USER+</​code>​ 
 +=== Tenant === 
 +<​code>​ 
 +keystone --token ​ADMPASSWD ​--endpoint http://​192.168.1.250:​35357/​v2.0/​ tenant-create --name=$USER 
 +</​code>​ 
 +<​code>​
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 328: Ligne 445:
 | name        | xavier ​                          | | name        | xavier ​                          |
 +-------------+----------------------------------+ +-------------+----------------------------------+
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-role-add --user 13247a59ad844458ad36c0bd06451376 --role 84697b61736c439288900904bdf4a48d --tenant_id c6f05a03b4aa482c91b61a2230356618 
 </​code>​ </​code>​
  
-===Création des services et leurs points d'​accès===+=== Rôle === 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://​192.168.1.250:​35357/​v2.0/​ user-role-add --user-id 13247a59ad844458ad36c0bd06451376 --role-id 84697b61736c439288900904bdf4a48d --tenant_id c6f05a03b4aa482c91b61a2230356618 
 +</​code>​ 
 + 
 + 
 + 
 +==== Création des services et leurs points d'​accès ​====
  
-En premier le service Keystone+=== Le service Keystone ​=== 
 +<​code>​ 
 +keystone --token ADMPASSWD --endpoint http://​192.168.1.250:​35357/​v2.0/​ service-create --name=keystone --type=identity --description='​Keystone Identity Service'​ 
 +</​code>​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --endpoint http://​192.168.1.250:​35357/​v2.0/​ service-create --name=keystone --type=identity --description='​Keystone Identity Service'​ 
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 345: Ligne 470:
 +-------------+----------------------------------+ +-------------+----------------------------------+
 </​code>​ </​code>​
-Le point d'​accès ​correspondant+=== Le point d'​accès ​Keystone === 
 +<​code>​ 
 +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 
 +</​code>​
 <​code>​ <​code>​
-keystone --token 2BSpUaPV --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 
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
 +-------------+----------------------------------+ +-------------+----------------------------------+
-| adminurl ​   | http://​192.168.1.250:​35357/​v2.0 ​ |+| adminurl ​   | http://​192.168.2.250:​35357/​v2.0 ​ |
 | id          | f1c517d5754a493fa67fc21b3f4264c4 | | id          | f1c517d5754a493fa67fc21b3f4264c4 |
-| internalurl | http://​192.168.1.250:​5000/​v2.0 ​  | +| internalurl | http://​192.168.2.250:​5000/​v2.0 ​  | 
-| publicurl ​  | http://​192.168.1.250:​5000/​v2.0 ​  |+| publicurl ​  | http://​192.168.2.250:​5000/​v2.0 ​  |
 | region ​     | RegionOne ​                       | | region ​     | RegionOne ​                       |
 | service_id ​ | 41905e02540d48228166c6d06ddcd9f0 | | service_id ​ | 41905e02540d48228166c6d06ddcd9f0 |
 +-------------+----------------------------------+ +-------------+----------------------------------+
 </​code>​ </​code>​
-Les services et points d'​accès des autes services seront ajoutés après l'​installation du composant bien qu'il soit possible de les définir dès maintenant.\\ 
  
-===Utilisation===+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.
  
-Il y plusieurs façon possible de s'​identifier en lançant une commande keystone.\\+==== Utilisation ====
  
-La méthode d'​identification avec le token de l'administrateur ​avec les arguments, utilisable dès que le fichier de configuration de Keystone est renseigné\\+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''​
 <​code>​ <​code>​
-keystone --endpoint http://​localhost:​35357/​v2.0 --token  ​2BSpUaPV ​user-list+keystone --endpoint http://​localhost:​35357/​v2.0 --token  ​ADMPASSWD ​user-list
 </​code>​ </​code>​
- +  * La méthode user/​password avec les arguments ​''​%%--%%username'',​ ''​%%--%%tenant_name'',​ ''​%%--%%password''​, après définition des utilisateurs,​ rôles et projets, et l'​argument ​ ''​%%--%%auth_url''​.
-la méthode user/​password avec les arguments, après définition des utilisateurs,​ rôles et projets.+
 <​code>​ <​code>​
-keystone --username admin --password ​2BSpUaPV ​--tenant_name admin --auth_url http://​localhost:​5000/​v2.0 user-list+keystone --username admin --password ​ADMPASSWD ​--tenant_name admin --auth_url http://​localhost:​5000/​v2.0 user-list
 </​code>​ </​code>​
  
-Pour les deux méthodes, il est possible d'​utiliser des variables d'​environnement pour éviter de ressaisir tous les arguments ​chaque commande.\\+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+__1ère méthode__:
 <​code>​ <​code>​
 export SERVICE_ENDPOINT=http://​localhost:​5000/​v2.0/​ export SERVICE_ENDPOINT=http://​localhost:​5000/​v2.0/​
-export SERVICE_TOKEN=2BSpUaPV+export SERVICE_TOKEN=ADMPASSWD
 keystone user-list keystone user-list
 </​code>​ </​code>​
  
-2ème méthode+__2ème méthode__:
 <​code>​ <​code>​
 export OS_TENANT_NAME=admin ​ export OS_TENANT_NAME=admin ​
 export OS_USERNAME=admin ​ export OS_USERNAME=admin ​
-export OS_PASSWORD=2BSpUaPV ​+export OS_PASSWORD=ADMPASSWD ​
 export OS_AUTH_URL="​http://​localhost:​5000/​v2.0/"​ export OS_AUTH_URL="​http://​localhost:​5000/​v2.0/"​
 keystone user-list keystone user-list
 </​code>​ </​code>​
  
-Pour éviter de refaire un export des variables ​chaque ouverture de terminal, vous pouvez les exporter automatiquement.\\ +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 contenant les lignes suivantes ​a la racine de votre dossier personnel ​ +Il suffit de [[:​tutoriel:​comment_modifier_un_fichier|créer]] un fichier ​**.novarc** dans votre //Dossier Personnel// ​contenant les lignes suivantes  
-<code>+<file>
 export OS_TENANT_NAME=admin export OS_TENANT_NAME=admin
 export OS_USERNAME=admin export OS_USERNAME=admin
-export OS_PASSWORD=2BSpUaPV+export OS_PASSWORD=ADMPASSWD
 export OS_AUTH_URL="​http://​192.168.1.250:​5000/​v2.0/"​ export OS_AUTH_URL="​http://​192.168.1.250:​5000/​v2.0/"​
-</code+</file
-Ajoutez ensuite la ligne suivante a la fin de votre fichier .bashrc+Ajoutez ensuite la ligne suivante a la fin de votre fichier ​**.bashrc**
 <​code>​ <​code>​
 source ~/.novarc source ~/.novarc
 </​code>​ </​code>​
-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.\\+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.
  
 <​code>​ <​code>​
 keystone user-list keystone user-list
 +</​code>​
 +<​code>​
 +----------------------------------+---------+--------------------------+--------+ +----------------------------------+---------+--------------------------+--------+
 |                id                | enabled |          email           ​| ​ name  | |                id                | enabled |          email           ​| ​ name  |
Ligne 417: Ligne 545:
 | c97c87b3ed894401975dd6d757b40330 | True    | admin@example.com ​       | admin  | | c97c87b3ed894401975dd6d757b40330 | True    | admin@example.com ​       | admin  |
 +----------------------------------+---------+--------------------------+--------+ +----------------------------------+---------+--------------------------+--------+
-keystone role-list 
-+----------------------------------+----------------------+ 
-|                id                |         ​name ​        | 
-+----------------------------------+----------------------+ 
-| 3d945f41e08e4e2db1584fdb8f05d333 | admin                | 
-| 46590e32dbbe40f29253b5b928b83d1b | KeystoneServiceAdmin | 
-| 84697b61736c439288900904bdf4a48d | Member ​              | 
-| d4d6482b0ec04e0fa24aa8263c182d08 | KeystoneAdmin ​       | 
-+----------------------------------+----------------------+ 
-keystone tenant-list 
-+----------------------------------+---------+---------+ 
-|                id                |   ​name ​ | enabled | 
-+----------------------------------+---------+---------+ 
-| 0f71e86d30e247d3b1216fe5f2f3aa50 | admin   | True    | 
-| 1a3515e468f14e0ebb4a4e83447e7bf7 | service | True    | 
-| c6f05a03b4aa482c91b61a2230356618 | xavier ​ | True    | 
-+----------------------------------+---------+---------+ 
 </​code>​ </​code>​
  
 +Les commandes ''​keystone role-list''​ et ''​ keystone tenant-list''​ affichent respectivement la liste des rôles et tenants.
  
-Pour voir la liste des commandes disponibles et les détails utilisez : + 
 +Il est bien sûr possible d'​envoyer des commandes à partir de n'​importe quel autre ordinateur où le paquet **[[apt>​python-keystoneclient|python-keystoneclient]]** est installé.\\ 
 + 
 +Pour voir la liste des commandes disponibles et les détails utilisez :
 <​code>​ <​code>​
 keystone help [NOM DE LA COMMANDE] keystone help [NOM DE LA COMMANDE]
Ligne 444: Ligne 559:
 ===== Glance ===== ===== Glance =====
 La prochaine étape est l'​installation du service d'​images 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\\+C'est le service chargé de distribuer les images de disque dur système utilisées par les machines virtuelles.
  
-===préparation ​de la base de données Mysql===+==== 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.
  
 <​code>​ <​code>​
 mysql -u root -p <<EOF mysql -u root -p <<EOF
 CREATE DATABASE glance; CREATE DATABASE glance;
-GRANT ALL PRIVILEGES ON glance.* TO '​glance'​@'​%'​ IDENTIFIED BY '4Wh7g9GE';+GRANT ALL PRIVILEGES ON glance.* TO '​glance'​@'​%'​ IDENTIFIED BY 'SQLPASSWD';
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
 EOF EOF
 </​code>​ </​code>​
  
-===Installation===+==== Installation ​====
  
-installez les paquets **[[apt>​glance|glance]] [[apt>​glance-api|glance-api]] [[apt>glance-client|glance-client]] [[apt>glance-common|glance-common]] [[apt>glance-registry|glance-registry]] [[apt>​python-glance|python-glance]]**\\+[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​glance,glance-api,glance-client,glance-common,glance-registry,python-glance]]**
  
-===Configuration===+==== Configuration ​====
  
-Il faut aussi créer les services et points d'​accès correspondants Keystone+Il faut aussi créer les services et points d'​accès correspondants ​pour Keystone
 <​code>​ <​code>​
 keystone service-create ​ --name=glance --type=image --description='​Glance Image Service'​ keystone service-create ​ --name=glance --type=image --description='​Glance Image Service'​
 +</​code>​
 +<​code>​
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 473: Ligne 591:
 | type        | image                            | | type        | image                            |
 +-------------+----------------------------------+ +-------------+----------------------------------+
 +</​code>​ 
 +<​code>​
 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 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
 +</​code>​
 +<​code>​
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 487: Ligne 608:
 </​code>​ </​code>​
  
 +Dans les fichiers ci-dessous, SQLPASSWD est le mot de passe MySQL [[#​Glance|Glance]],​ ADMPASSWD le mot de passe du [[#​Création_du_compte_interne_du_service_Glance|compte de service Glance]]
  
-[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​le fichier]] **/​etc/​glance/​glance-api-paste.ini** ​dans un éditeur et allez la fin. modifiez ​ces lignes avec les valeurs ​correctes pour votre installation.\\+[[:​tutoriel:​comment_modifier_un_fichier|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:
  
-<code>+<file>
 admin_tenant_name = service admin_tenant_name = service
 admin_user = glance admin_user = glance
-admin_password = 2BSpUaPV +admin_password = ADMPASSWD 
-</code>+</file>
  
 La section [pipeline:​glance-api] doit contenir La section [pipeline:​glance-api] doit contenir
-<code>+<file>
 [pipeline:​glance-api] [pipeline:​glance-api]
 pipeline = versionnegotiation authtoken auth-context apiv1app pipeline = versionnegotiation authtoken auth-context apiv1app
-</code>+</file>
  
-[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​le fichier]] **/​etc/​glance/​glance-api.conf**. Ajoutez ​les lignes suivantes\\ +[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​avec les droits d'​administration]] le fichier ​**/​etc/​glance/​glance-api.conf** ​pour y ajouter ​les lignes suivantes: 
-<code>+<file>
 [paste_deploy] [paste_deploy]
 flavor = keystone flavor = keystone
-</code>+</file>
  
-[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​le fichier]] **/​etc/​glance/​glance-registry.conf** ​dans un éditeur. ​modifiez ​les lignes suivantes\\ +[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​avec les droits d'​administration]] le fichier ​**/​etc/​glance/​glance-registry.conf** ​et modifiez ​la ligne suivante: 
-<code+<file
-sql_connection = mysql://​glance:​4Wh7g9GE@192.168.1.250:​3306/​glance +sql_connection = mysql://​glance:​SQLPASSWD@192.168.1.250:​3306/​glance 
-</code+</file
-et ajoutez ​la fin +et ajoutez ​à la fin 
-<code>+<file>
 [paste_deploy] [paste_deploy]
 flavor = keystone flavor = keystone
-</code>+</file>
  
-[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​le fichier]] **/​etc/​glance/​glance-scrubber.conf**. Ajoutez ​les lignes suivantes\\ +[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​avec les droits d'​administration]] le fichier ​**/​etc/​glance/​glance-scrubber.conf** ​pour ajouter ​les lignes suivantes: 
-<code+<file
-sql_connection = mysql://​glance:​4Wh7g9GE@192.168.1.250:​3306/​glance+sql_connection = mysql://​glance:​SQLPASSWD@192.168.1.250:​3306/​glance
 sql_idle_timeout = 3600 sql_idle_timeout = 3600
-</code>+</file>
  
-[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​le fichier]] **/​etc/​glance/​glance-registry-paste.ini**.Modifiez ​les lignes suivantes\\ +[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez ​avec les droits d'​administration]] le fichier ​**/​etc/​glance/​glance-registry-paste.ini** ​et modifiez ​les lignes suivantes: 
-<code>+<file>
 admin_tenant_name = service admin_tenant_name = service
 admin_user = glance admin_user = glance
-admin_password = 2BSpUaPV +admin_password = ADMPASSWD 
-</code+</file
-et la section  +et la section 
-<code>+<file>
 [pipeline:​glance-registry] [pipeline:​glance-registry]
 pipeline = authtoken auth-context context registryapp pipeline = authtoken auth-context context registryapp
-</code>+</file>
  
 Synchronisez maintenant la base de données MySQL Synchronisez maintenant la base de données MySQL
Ligne 541: Ligne 663:
 sudo glance-manage version_control 0 sudo glance-manage version_control 0
 sudo glance-manage db_sync sudo glance-manage db_sync
 +</​code>​
 +
 +Si message d'​erreur "​CRITICAL glance [-] ValueError: Tables "​migrate_version"​ have non utf8 collation, please make sure all tables are CHARSET=utf8"​ :
 +
 +<​code>​
 +mysql -u root -p glance
 +alter table migrate_version convert to character set utf8 collate utf8_unicode_ci;​
 +flush privileges;
 +quit
 </​code>​ </​code>​
  
Ligne 548: Ligne 679:
 </​code>​ </​code>​
  
-===Utilisation===+==== Utilisation ​====
  
-vérifiez ​maintenant si tous fonctionne correctement, téléchargez ​une première image pour tester.+Vérifiez ​maintenant si tout fonctionne correctement. Téléchargez ​une première ​[[wpfr>​Image_disque|image]] pour tester:
  
 <​code>​ <​code>​
Ligne 556: Ligne 687:
 </​code>​ </​code>​
  
-ajoutez ​maintenant l'​image téléchargée aux images Glance+Ajoutez ​maintenant l'​image téléchargée aux images Glance
  
 <​code>​ <​code>​
 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 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
 +</​code>​
 +<​code>​
 Uploading image '​Ubuntu 12.04 cloudimg amd64' Uploading image '​Ubuntu 12.04 cloudimg amd64'
 =====================================================================================================================================================================================================================================[100%] 136.648660M/​s,​ ETA  0h  0m  0s =====================================================================================================================================================================================================================================[100%] 136.648660M/​s,​ ETA  0h  0m  0s
 Added new image with ID: d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 Added new image with ID: d1b7defa-0c35-4e8c-aef5-0d58c8d80a52
-glance index 
-ID                                   ​Name ​                          Disk Format ​         Container Format ​    ​Size ​         ​ 
------------------------------------- ------------------------------ -------------------- -------------------- -------------- 
-d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 Ubuntu 12.04 cloudimg amd64    qcow2                ovf                       ​230490112 
-glance details 
-================================================================================ 
-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 
-================================================================================ 
 </​code>​ </​code>​
  
-La commande glance index donne une liste des images\\ +La commande ​''​glance index'' ​donne une liste des images: 
-La commande glance details affiche des infos détaillées sur toutes les images.\\+
 <​code>​ <​code>​
 glance index glance index
 +</​code>​
 +<​code>​
 ID                                   ​Name ​                          Disk Format ​         Container Format ​    ​Size ​         ​ ID                                   ​Name ​                          Disk Format ​         Container Format ​    ​Size ​         ​
 ------------------------------------ ------------------------------ -------------------- -------------------- -------------- ------------------------------------ ------------------------------ -------------------- -------------------- --------------
 d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 Ubuntu 12.04 cloudimg amd64    qcow2                ovf                       ​230490112 d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 Ubuntu 12.04 cloudimg amd64    qcow2                ovf                       ​230490112
 +</​code>​
 +La commande ''​glance details''​ affiche des informations détaillées sur toutes les images.
 +<​code>​
 glance details glance details
 +</​code>​
 +<​code>​
 ================================================================================ ================================================================================
 URI: http://​192.168.1.250:​9292/​v1/​images/​d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 URI: http://​192.168.1.250:​9292/​v1/​images/​d1b7defa-0c35-4e8c-aef5-0d58c8d80a52
Ligne 608: Ligne 729:
 </​code>​ </​code>​
  
-La syntaxe de la commande **glance add** est la suivante :\\ +La syntaxe de la commande **glance add** est la suivante : 
-glance add name="%Image name%" is_public=true container_format=%container_formatdisk_format=%disk_format< %filename%+<​code>​ 
 +glance add name="<Image name>" is_public=true container_format=<container_formatdisk_format=<disk_format<​filename>​ 
 +</​code>​ 
 +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
  
-%Image name% Nom que l'on veut donner a l'​image\\ +Pour voir la liste des commandes disponibles et les détails utilisez : 
-is_public=true L'​image est elle visible dans tous les projets\\ +<​code>​ 
-%container_format% Container Type de container bare pas de container, ovf OVF Container, aki ari ami Amazon kernel ramdisk ou machine \\ +glance help [NOM DE LA COMMANDE] 
-%disk_format% Format de l'​image raw, qcow2, vmdk, iso etc...\\ +</​code>​
-%filename% Le nom de l'​image a uploader\\+
  
 ===== Nova ===== ===== Nova =====
-Passez maintenant ​l'​installation de Nova, la gestion des instances des machines virtuelles, de leur espace disque et du réseau.\\+Passez maintenant ​à l'​installation de Nova, la gestion des instances des machines virtuelles, de leur espace disque et du réseau.
  
-===Préparation de la base de données Mysql===+==== 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
  
 <​code>​ <​code>​
 mysql -u root -p <<EOF mysql -u root -p <<EOF
 CREATE DATABASE nova; CREATE DATABASE nova;
-GRANT ALL PRIVILEGES ON nova.* TO '​nova'​@'​%' ​ +GRANT ALL PRIVILEGES ON nova.* TO '​nova'​@'​%'​ IDENTIFIED BY 'SQLPASSWD';
-  ​IDENTIFIED BY '5DTSDdzj';+
 EOF EOF
 </​code>​ </​code>​
  
-===Installation=== 
  
-installez les paquets [[apt>​nova-api|nova-api]] [[apt>​nova-cert|nova-cert]] [[apt>​nova-common|nova-common]] [[apt>​nova-compute|nova-compute]] [[apt>​nova-compute-kvm|nova-compute-kvm]] [[apt>​nova-doc|nova-doc]] [[apt>​nova-network|nova-network]] [[apt>​nova-objectstore|nova-objectstore]] [[apt>​nova-scheduler|nova-scheduler]] [[apt>​novnc|novnc]] [[apt>​nova-consoleauth|nova-consoleauth]] [[apt>​nova-volume|nova-volume]] [[apt>​python-nova|python-nova]] [[apt>​python-novaclient|python-novaclient]].\\ 
  
-===Configuration===+==== Installation ====
  
-Création des services et points d'​accès pour Keystone, au nombre de 2les services compute et volume.+[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​nova-api,​nova-cert,​nova-common,​nova-compute,​nova-compute-kvm,​nova-doc,​nova-network,​nova-objectstore,​nova-scheduler,​novnc,​nova-consoleauth,​nova-volume,​python-nova,​python-novaclient|nova-api nova-cert nova-common nova-compute nova-compute-kvm nova-doc nova-network nova-objectstore nova-scheduler novnc nova-consoleauth nova-volume python-nova python-novaclient]]**. 
 + 
 +==== Configuration ==== 
 +  
 +Création des services et points d'​accès pour Keystone, au nombre de 2les services ​de type [[#​service ​compute|compute]] (auquel on donne le nom de "​nova"​) ​et de type [[#​service ​volume|volume]] (auquel on donne le nom de "​volume"​). 
 +== Service compute ==
 <​code>​ <​code>​
 keystone service-create --name=nova --type=compute --description='​OpenStack Compute Service'​ keystone service-create --name=nova --type=compute --description='​OpenStack Compute Service'​
 +</​code>​
 +<​code>​
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 647: Ligne 780:
 | type        | compute ​                         | | type        | compute ​                         |
 +-------------+----------------------------------+ +-------------+----------------------------------+
 +</​code>​
 +<​code>​
 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'​ 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'​
 +</​code>​
 +<​code>​
 +-------------+--------------------------------------------+ +-------------+--------------------------------------------+
 |   ​Property ​ |                   ​Value ​                   | |   ​Property ​ |                   ​Value ​                   |
Ligne 658: Ligne 795:
 | service_id ​ | 4ba6c7149dd1421f8c429afc0c8dbdfe ​          | | service_id ​ | 4ba6c7149dd1421f8c429afc0c8dbdfe ​          |
 +-------------+--------------------------------------------+ +-------------+--------------------------------------------+
 +</​code>​
 +
 +== Service volume ==
 +<​code>​
 keystone service-create --name=volume --type=volume --description='​OpenStack Volume Service'​ keystone service-create --name=volume --type=volume --description='​OpenStack Volume Service'​
 +</​code>​
 +<​code>​
 +-------------+----------------------------------+ +-------------+----------------------------------+
 |   ​Property ​ |              Value               | |   ​Property ​ |              Value               |
Ligne 667: Ligne 810:
 | type        | volume ​                          | | type        | volume ​                          |
 +-------------+----------------------------------+ +-------------+----------------------------------+
 +</​code>​
 +<​code>​
 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'​ 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'​
 +</​code>​
 +<​code>​
 +-------------+--------------------------------------------+ +-------------+--------------------------------------------+
 |   ​Property ​ |                   ​Value ​                   | |   ​Property ​ |                   ​Value ​                   |
Ligne 679: Ligne 826:
 +-------------+--------------------------------------------+ +-------------+--------------------------------------------+
 </​code>​ </​code>​
 +\\
  
-[[:​tutoriel:​comment_modifier_un_fichier|ouvrez le fichier]] **/​etc/​nova/​api-paste.ini** et modifiez les lignes: +Dans les fichiers ci-dessous, SQLPASSWD est le mot de passe MySQL [[#​Nova|Nova]],​ ADMPASSWD le mot de passe du [[#​Création_du_compte_interne_du_service_Nova|compte de service Nova]] 
-<code>+ 
 +[[:​tutoriel:​comment_modifier_un_fichier|Ouvrez avec les droits d'​administration]] le fichier ​**/​etc/​nova/​api-paste.ini** et modifiez les lignes: 
 +<file>
 admin_tenant_name = service admin_tenant_name = service
 admin_user = nova admin_user = nova
-admin_password = 2BSpUaPV +admin_password = ADMPASSWD 
-</code+</file
-[[:​tutoriel:​comment_modifier_un_fichier|ouvrez le fichier]] **/​etc/​nova/​nova.conf** et remplacer tout avec les lignes ci dessous.\\ +[[:​tutoriel:​comment_modifier_un_fichier|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.\\ +La configuration obtenue utilisera le mode DHCP. La ligne "​nova.scheduler.simple.SimpleScheduler" ​définit ​une utilisation avec un seul serveur.\\ 
-Pour un mode Vlan, pour utiliser plusieurs serveurs ou d'​autres options, reportez vous la documentation OpenStack.\\+Pour un mode VLAN, pour utiliser plusieurs serveurs ou d'​autres options, reportez-vous à la [[http://​docs.openstack.org/​|documentation OpenStack]] **(en)**.
  
-<code>+<file>
 # LOGS/STATE # LOGS/STATE
 --verbose --verbose
Ligne 706: Ligne 856:
 --keystone_ec2_url=http://​192.168.1.250:​5000/​v2.0/​ec2tokens --keystone_ec2_url=http://​192.168.1.250:​5000/​v2.0/​ec2tokens
 --scheduler_driver=nova.scheduler.simple.SimpleScheduler --scheduler_driver=nova.scheduler.simple.SimpleScheduler
 +#​root_helper est deprecie, rootwrap_config=/​etc/​nova/​rootwrap.conf
 --root_helper=sudo nova-rootwrap --root_helper=sudo nova-rootwrap
 # AUTHENTICATION # AUTHENTICATION
Ligne 713: Ligne 864:
 --iscsi_ip_prefix=172.16.0 --iscsi_ip_prefix=172.16.0
 # DATABASE # DATABASE
---sql_connection=mysql://​nova:​5DTSDdzj@192.168.1.250/​nova+--sql_connection=mysql://​nova:​SQLPASSWD@192.168.1.250/​nova
 # COMPUTE # COMPUTE
 --libvirt_type=kvm --libvirt_type=kvm
Ligne 738: Ligne 889:
 --flat_injected=False --flat_injected=False
 --my_ip=192.168.1.250 --my_ip=192.168.1.250
---floating_range=192.168.1.0/​24 ​+--floating_range=192.168.1.0/​24
 --force_dhcp_release --force_dhcp_release
 --public_interface=br0 --public_interface=br0
Ligne 746: Ligne 897:
 --vncserver_proxyclient_address=127.0.0.1 --vncserver_proxyclient_address=127.0.0.1
 --vncserver_listen=127.0.0.1 --vncserver_listen=127.0.0.1
-</code>+</file> 
 + 
 +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...\\
  
-toutes les entrées --flat... correspondent au réseau privé (172.16.0.0/24, début 172.16.0.2)\\ +//%%--%%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.\\
---floating_range est le réseau public(LAN) 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+Modifiez les [[:droits]] sur le répertoire ​**/etc/nova**
  
 <​code>​ <​code>​
Ligne 770: Ligne 922:
 </​code>​ </​code>​
  
- +Redémarrez de nouveau tous les services
-Redémarrez de nouveau tous les service+
  
 <​code>​ <​code>​
Ligne 777: Ligne 928:
 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 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
 </​code>​ </​code>​
 +==== Utilisation ====
  
-Vous pouvez maintenant vérifier que tous les services fonctionnent,​ le résultat dans la colonne STATE doit être un smiley :-) pour OK. Si c'​est ​un XXXquelque chose n'as pas fonctionné,​ consultez les logs dans /​var/​log/​nova/​nova-le_nom_du_service_KO.\\+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**.
  
 <​code>​ <​code>​
 sudo nova-manage service list sudo nova-manage service list
 +</​code>​
 +<​code>​
 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 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 Binary ​          ​Host ​                                ​Zone ​            ​Status ​    State Updated_At
Ligne 792: Ligne 948:
 </​code>​ </​code>​
  
-<note important>​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.\\ +<note important>​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.\\ 
-Exemples: l'atribution ​d'une adresse IP publique ou la création d'un disque virtuel.\\+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</​note>​ N'​hésitez pas à... patienter</​note>​
 +
 +=== Images disques ===
  
 Listez les images disque fournies par le service Glance Listez les images disque fournies par le service Glance
Ligne 800: Ligne 958:
 <​code>​ <​code>​
 nova image-list nova image-list
 +</​code>​
 +<​code>​
 +--------------------------------------+-----------------------------+--------+--------+ +--------------------------------------+-----------------------------+--------+--------+
 |                  ID                  |             ​Name ​           | Status | Server | |                  ID                  |             ​Name ​           | Status | Server |
Ligne 807: Ligne 967:
 </​code>​ </​code>​
  
-Profitons en pour créer les réseaux privés et publics, les adresses seront enregistrées dans la base MySQL.\\+=== 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
 <​code>​ <​code>​
-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 
 sudo nova-manage floating create --ip_range=192.168.1.0/​24 sudo nova-manage floating create --ip_range=192.168.1.0/​24
 </​code>​ </​code>​
 +Le réseau privé, destiné aux communications entre les VMs, les autres serveurs Nova ou de stockage s'il y a...
 +<​code>​
 +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
 +</​code>​
 +
 +=== Parefeu ===
  
-Par défaut, les règles de parefeu 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 )+Par défaut, les règles de parefeu bloquent les paquets entrants sur l'​interface publique ​à destination des VMs. Il est possible de créer des ensembles de règles. L'​ensemble ​des règles ​utilisées ​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 ).
  
 <​code>​ <​code>​
 nova secgroup-add-rule default icmp -1 -1  0.0.0.0/0 nova secgroup-add-rule default icmp -1 -1  0.0.0.0/0
 +</​code>​
 +<​code>​
 +-------------+-----------+---------+-----------+--------------+ +-------------+-----------+---------+-----------+--------------+
 | IP Protocol | From Port | To Port |  IP Range | Source Group | | IP Protocol | From Port | To Port |  IP Range | Source Group |
Ligne 823: Ligne 992:
 | icmp        | -1        | -1      | 0.0.0.0/0 |              | | icmp        | -1        | -1      | 0.0.0.0/0 |              |
 +-------------+-----------+---------+-----------+--------------+ +-------------+-----------+---------+-----------+--------------+
 +</​code>​
 +<​code>​
 nova secgroup-add-rule default tcp 22 22 0.0.0.0/0 nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
 +</​code>​
 +<​code>​
 +-------------+-----------+---------+-----------+--------------+ +-------------+-----------+---------+-----------+--------------+
 | IP Protocol | From Port | To Port |  IP Range | Source Group | | IP Protocol | From Port | To Port |  IP Range | Source Group |
Ligne 835: Ligne 1008:
 <​code>​ <​code>​
 nova secgroup-list-rules default nova secgroup-list-rules default
 +</​code>​
 +<​code>​
 +-------------+-----------+---------+-----------+--------------+ +-------------+-----------+---------+-----------+--------------+
 | IP Protocol | From Port | To Port |  IP Range | Source Group | | IP Protocol | From Port | To Port |  IP Range | Source Group |
Ligne 844: Ligne 1019:
  
  
-===== Première machine virtuelle ​===== +==== Première machine virtuelle ==== 
-Maintenant que tout fonctionne, vous allez pouvoir créez votre première VM +Maintenant que tout fonctionne, vous allez pouvoir créez votre première VM.\\ 
-Assurez vous d'​avoir créé une clé SSH+Assurez-vous d'​avoir créé une clé [[:SSH]]:
  
 <​code>​ <​code>​
Ligne 852: Ligne 1027:
 </​code>​ </​code>​
  
-ajoutez ​la au serveur+Ajoutez-la au serveur
  
 <​code>​ <​code>​
Ligne 858: Ligne 1033:
 </​code>​ </​code>​
  
-il faut définir les spécifications de la future VM, pour voir les possibilités,​ utilisez la commande ci-dessousla création de vos propres définitions ​est bien sur possible.+Il faut définir les spécifications de la future VM, pour voir les possibilités,​ utilisez la commande ci-dessousla création de vos propres définitions ​étant ​bien sûr possible:
  
 <​code>​ <​code>​
 nova flavor-list nova flavor-list
 +</​code>​
 +<​code>​
 +----+-----------+-----------+------+-----------+------+-------+-------------+ +----+-----------+-----------+------+-----------+------+-------+-------------+
 | ID |    Name   | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | | ID |    Name   | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor |
Ligne 873: Ligne 1050:
 </​code>​ </​code>​
  
-Utilisons ​l'ID 1 correspondant ​une machine disposant de 512 Mb de RAM, 1 CPU virtuel et aucun disque supplémentaire.+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 parfeu, sinon c'est l'​ensemble "​default"​ qui est appliqué.+Lancez ​votre première VM avec la commande ​''​nova boot''​, le paramètre ​//%%--%%flavor// indique ​les spécifications ​choisies//%%--%%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 [[#​Parefeu|parefeu]], sinon c'est l'​ensemble "​default"​ qui est appliqué.
  
 <​code>​ <​code>​
 nova boot --flavor 1 --image d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 myfirstvm --key_name key1 & nova boot --flavor 1 --image d1b7defa-0c35-4e8c-aef5-0d58c8d80a52 myfirstvm --key_name key1 &
 +</​code>​
 +<​code>​
 [1] 5472 [1] 5472
 +-------------------------------------+--------------------------------------+ +-------------------------------------+--------------------------------------+
Ligne 913: Ligne 1092:
 </​code>​ </​code>​
  
-Un récapitulatif des propriétés de la machine s'​affiche. Pour le réafficher,​ utilisez la commande ​+Un récapitulatif des propriétés de la machine s'​affiche. Pour le réafficher,​ utilisez la commande
  
 <​code>​ <​code>​
Ligne 923: Ligne 1102:
 <​code>​ <​code>​
 nova list nova list
 +</​code>​
 +<​code>​
 +--------------------------------------+-----------+--------+--------------------+ +--------------------------------------+-----------+--------+--------------------+
 |                  ID                  |    Name   | Status |      Networks ​     | |                  ID                  |    Name   | Status |      Networks ​     |
Ligne 930: Ligne 1111:
 </​code>​ </​code>​
  
-Connectez vous sur la VM+Connectez-vous sur la VM
  
 <​code>​ <​code>​
 ssh ubuntu@172.16.0.2 ssh ubuntu@172.16.0.2
 +</​code>​
 +<​code>​
 Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual x86_64) Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-25-virtual x86_64)
  
Ligne 939: Ligne 1122:
  
   System information as of Mon Jul  9 17:10:53 UTC 2012   System information as of Mon Jul  9 17:10:53 UTC 2012
- +
-  System load:  0.56              Processes: ​          65 +
-  Usage of /:   33.4% of 1.98GB ​  Users logged in:     0 +.
-  ​Memory usage: 10%               IP address for eth0: 172.16.0.2 +
-  Swap usage: ​  0% +
- +
-  Graph this data and manage this system at https://​landscape.canonical.com/​ +
- +
-0 packages can be updated. +
-0 updates are security updates. +
- +
-Get cloud support with Ubuntu Advantage Cloud Guest +
-  http://​www.ubuntu.com/​business/​services/​cloud +
- +
-The programs included with the Ubuntu system are free software; +
-the exact distribution terms for each program are described in the +
-individual files in /​usr/​share/​doc/​*/​copyright. +
- +
-Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by +
-applicable law. +
 To run a command as administrator (user "​root"​),​ use "sudo <​command>"​. To run a command as administrator (user "​root"​),​ use "sudo <​command>"​.
 See "man sudo_root"​ for details. See "man sudo_root"​ for details.
Ligne 974: Ligne 1139:
 </​code>​ </​code>​
  
-Attachez le à la VM+Attachez-le à la VM
  
 <​code>​ <​code>​
 nova volume-attach myfirstvm 1 /dev/vdb nova volume-attach myfirstvm 1 /dev/vdb
 +</​code>​
  
 +Vérifiez le rattachement
 +<​code>​
 nova volume-list nova volume-list
 +</​code>​
 +<​code>​
 +----+--------+--------------+------+-------------+--------------------------------------+ +----+--------+--------------+------+-------------+--------------------------------------+
 | ID | Status | Display Name | Size | Volume Type |             ​Attached to              | | ID | Status | Display Name | Size | Volume Type |             ​Attached to              |
Ligne 987: Ligne 1157:
 </​code>​ </​code>​
  
-Vous pouvez maintenant vous reconnecter ​la Vm pour partitionner ce disque et l'​utiliser.+Vous pouvez maintenant vous reconnecter ​à la VM pour partitionner ce disque et l'​utiliser.
  
-Connectez maintenant cette instance virtuelle ​votre LAN.\\ +Connectez maintenant cette instance virtuelle ​à votre LAN.\\ 
-Il faut tout d'​abord allouer une adresse IP +Il faut tout d'​abord allouer une adresse IP
  
 <​code>​ <​code>​
 nova floating-ip-create nova floating-ip-create
 +</​code>​
 +<​code>​
 +-------------+-------------+----------+------+ +-------------+-------------+----------+------+
 |      Ip     | Instance Id | Fixed Ip | Pool | |      Ip     | Instance Id | Fixed Ip | Pool |
Ligne 1001: Ligne 1173:
 </​code>​ </​code>​
  
-Puis attachez cette adresse ​la VM+Puis attachez cette adresse ​à la VM
 <​code>​ <​code>​
 nova add-floating-ip myfirstvm 192.168.1.1 nova add-floating-ip myfirstvm 192.168.1.1
 </​code>​ </​code>​
-Patientez quelques secondes et vérifiez la présence sur votre LAN d'​une ​mchine a cette adresse+Patientez quelques secondes et vérifiez la présence sur votre LAN d'​une ​machine à cette adresse 
 +<​code>​ 
 +ping -c 2 192.168.1.1 
 +</​code>​
 <​code>​ <​code>​
-ping 192.168.1.1 
 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 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=1 ttl=64 time=0.589 ms
 64 bytes from 192.168.1.1:​ icmp_req=2 ttl=64 time=0.452 ms 64 bytes from 192.168.1.1:​ icmp_req=2 ttl=64 time=0.452 ms
-^C+
 --- 192.168.1.1 ping statistics --- --- 192.168.1.1 ping statistics ---
 2 packets transmitted,​ 2 received, 0% packet loss, time 999ms 2 packets transmitted,​ 2 received, 0% packet loss, time 999ms
Ligne 1020: Ligne 1194:
 <​code>​ <​code>​
 nova list nova list
 +</​code>​
 +<​code>​
 +--------------------------------------+-----------+--------+---------------------------------+ +--------------------------------------+-----------+--------+---------------------------------+
 |                  ID                  |    Name   | Status |             ​Networks ​           | |                  ID                  |    Name   | Status |             ​Networks ​           |
Ligne 1027: Ligne 1203:
 </​code>​ </​code>​
  
 +Il est bien sûr possible d'​envoyer des commandes à partir de n'​importe quel autre ordinateur où les paquets **[[apt>​python-novaclient,​python-nova-adminclient]]** sont installés.\\
 +
 +Pour voir la liste des commandes disponibles et les détails utilisez :
 +<​code>​
 +nova help [NOM DE LA COMMANDE]
 +</​code>​
  
 ===== Dashboard Horizon ===== ===== Dashboard Horizon =====
-Passons a l'​interface graphique, le 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 à partir d'un [[:​navigateur]] web pointant à 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 à portée d'un clic de souris.\\ 
 + 
 +==== Installation ====
  
-Installez les paquets ​[[apt>​apache2|apache2]] [[apt>​libapache2-mod-wsgi|libapache2-mod-wsgi]] [[apt>​openstack-dashboard|openstack-dashboard]]+[[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] ​**[[apt>apache2,libapache2-mod-wsgi,openstack-dashboard]]**
  
-redémarrez ​le serveur web Apache pour vérifier que tout est OK+Redémarrez ​le serveur web [[:Apache2|Apache]] pour vérifier que tout est OK
  
 <​code>​ <​code>​
Ligne 1039: Ligne 1224:
 </​code>​ </​code>​
  
-Ouvrez votre navigateur favori à l'​adresse de votre interface publique ou 127.0.0.1\\+==== Utilisation ====
  
-{{ ::dashboard.png?600 |}}\\+Ouvrez votre [[:navigateur]] favori à l'​adresse de votre interface publique ou 127.0.0.1\\
  
-<note important>​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.\\ +{{ ::​dashboard.png?​600 |Interface de dashboard Horizon}} 
-Exemplesl'​atribution d'une adresse IP publique ou la création ​d'un disque virtuel.\\+ 
 +<note important>​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. ​Exemplelors 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</​note>​ N'​hésitez pas à... patienter</​note>​
  
-Les identifiants de connexion de l'admin sont les mêmes que ceux du fichier **.novarc**\\ +<note important>​L'​url par défaut est http://​IP/​horizon</​note>​ 
-Si vous avez suivi ce document sans rien changer ​c'est\\ + 
-Username :​ admin ​   Password: 2BSpUaPV ​   pour le compte d'​administration+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:\\ 
-Les comptes qui ont pour role "​admin"​ ont accès ​l'​interface d'​administration sur le Dashboard, ainsi qu'leur(s) projet(s). Les roles Member n'ont accès qu'leur(s) projet(s).\\+//Username ​//:%% %%[[#​Création_du_compte_administrateur|admin]]%%    %%//Password//:%%  %%[[#​Création_du_compte_administrateur|ADMPASSWD]].\\ 
 +Les comptes qui ont pour rôle "​admin"​ ont accès ​à l'​interface d'​administration sur le Dashboard, ainsi qu'à leur(s) projet(s). Les rôles "Member" ​n'ont accès qu'à leur(s) projet(s)
 + 
 +=== 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 à plusieurs projets. 
 + * //Quotas// :Les quotas définis sur les ressources des serveurs, pas de modification possible. 
 + 
 +=== Accès projets === 
 + 
 +Un bouton permet de basculer entre les différents projets dont l'​utilisateur est membre, si 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 a 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 pare-feu et leur interface d'​édition,​ et enfin la liste des clés SSH avec l'​import ou la création de certificat. 
 +===== Créez vos propres images ===== 
 + 
 +L'​intérêt d'​OpenStack étant de déployer rapidement des instances de machines virtuelles, ça ne servirait à 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 [[http://​alt.fedoraproject.org/​pub/​alt/​virtio-win/​latest/​images/​bin/​|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 à jour.\\ 
 +Pour finir, pour les images Linux, [[:​tutoriel:​comment_modifier_un_fichier|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. 
 + 
 +<​file>​ 
 +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 "​************************"​ 
 +</​file>​ 
 + 
 +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:​ 
 +<​code>​ 
 +sudo rm -rf /​etc/​udev/​rules.d/​70-persistent-net.rules 
 +</​code>​ 
 + 
 +Votre image disque est maintenant prête à être exportée sur le serveur Glance.
  
 ===== Désinstallation ===== ===== Désinstallation =====
    
 Pour supprimer cette application,​ [[:​tutoriel:​comment_supprimer_un_paquet|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.\\ Pour supprimer cette application,​ [[:​tutoriel:​comment_supprimer_un_paquet|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\\ +Supprimez ensuite les bases de données keystone, glance et nova
  
 ===== Voir aussi ===== ===== Voir aussi =====
    
-  * **(en)** [[http://​openstack.org/​]] +  * **(en)** [[http://​openstack.org/​|Le site du Projet]]
-  ​+
  
 +----
 +//​Contributeurs principaux :​[[utilisateurs:​xavier4811|Xavier4811]].//​
  
-//​Contributeurs principaux : [[utilisateurs:​xavier4811|Xavier4811]].\\ 
  • openstack.1342342649.txt.gz
  • Dernière modification: Le 15/07/2012, 10:57
  • par xavier4811