4. Infrastructure Openstack
- 1. Révision de l'architecture et des services
- 2. Connexion aux noeuds
- 3. Méthode d'administration d'OpenStack
- 4. Service d'identification : Keystone
- 5. Service d'images : Glance
- 6. Service de calcul : Nova
- 7. Service réseau : Neutron
- 8. Le service de stockage : Cinder
- 9. Le service d'orchestration : Heat
- 10. Gabarits d'instances
- Languages de présentation JSON et YAML
Installation OpenStack Training Labs sur un serveur Scaleway C2L 8 CPUs, 32 Go RAM
1. Révision de l'architecture et des services
...
2. Connexion aux noeuds
2.1. Connexion SSH aux noeuds Virtualbox
stack@stacktrain1:~$ tail -n14 $HOME/labs/log/stacktrain.log
14585 22:53:51.942 stacktrain.core.report INFO VM name: compute1
14585 22:53:51.943 stacktrain.core.report INFO SSH login: ssh -p 2232 osbash@127.0.0.1
14585 22:53:51.943 stacktrain.core.report INFO (password: osbash)
14585 22:53:51.943 stacktrain.core.report INFO VM name: controller
14585 22:53:51.944 stacktrain.core.report INFO SSH login: ssh -p 2230 osbash@127.0.0.1
14585 22:53:51.944 stacktrain.core.report INFO (password: osbash)
14585 22:53:51.944 stacktrain.core.report INFO Dashboard: Assuming horizon is on controller VM.
14585 22:53:51.944 stacktrain.core.report INFO http://127.0.0.1:8888/horizon/
14585 22:53:51.944 stacktrain.core.report INFO User : demo (password: demo_user_pass)
14585 22:53:51.945 stacktrain.core.report INFO User : admin (password: admin_user_secret)
14585 22:53:51.945 stacktrain.core.report INFO Network: mgmt
14585 22:53:51.945 stacktrain.core.report INFO Network address: 10.0.0.0
14585 22:53:51.945 stacktrain.core.report INFO Network: provider
14585 22:53:51.946 stacktrain.core.report INFO Network address: 203.0.113.0
Pour contrôler notre solution, nous allons nous connecter en SSH sur l'hôte de virtualisation qui héberge les deux noeuds installés en transférant localement les ports TCP 2230 (controller) et TCP 2232 (compute1), ainsi que le port TCP 8888 qui héberge le panneau de contrôle Horizon :
ssh -L 8888:127.0.0.1:8888 -L 2230:127.0.0.1:2230 -L 2232:127.0.0.1:2232 root@stacktrain
On peut alors se connecter facilement aux deux noeuds et y transférer du trafic.
Connexion au noeud "controller"
$ ssh -p 2230 osbash@127.0.0.1
osbash@127.0.0.1 s password:
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Last login: Sat Mar 2 22:37:26 2019 from 10.0.2.2
osbash@controller:~$
Connexion au noeud "compute1"
$ ssh -p 2232 osbash@127.0.0.1
osbash@127.0.0.1 s password:
Welcome to Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Last login: Sat Mar 2 22:51:19 2019 from 10.0.2.2
osbash@compute1:~$
2.2. Connexion SSH aux noeuds KVM
...
3. Méthode d'administration d'OpenStack
Les méthode d'administration d'OpenStack peuvent être les suivantes :
- Via l'interface Web du "Dashboard"
- Via des clients en ligne de commande ou des librairies Python : https://wiki.openstack.org/wiki/OpenStackClients
- Via les APIs RESTful web services directement ou indirectement avec l'outils cURL (http://curl.haxx.se/)
On notera aussi que l'on peut l'administrer avec Ansible : http://docs.ansible.com/ansible/list_of_cloud_modules.html#openstack dans des objectifs d'orchestration cloud.
OpenStackClient
OpenStackClient (aka OSC) est un client en ligne de commande pour OpenStack qui rassemble l'ensemble des commandes des APIs de calcul, d'identité, d'image, de stockage d'objets et de stockage en bloc en un shell unique avec une structure de commandes uniforme.
Chargement de l'environnement Admin
osbash@controller:~$ cat ~/admin-openrc.sh
export OS_USERNAME=admin
export OS_PASSWORD=admin_user_secret
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://10.0.0.11:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
. ~/admin-openrc.sh
Services sur le noeud Controller
osbash@controller:~$ openstack service list
+----------------------------------+-----------+----------------+
| ID | Name | Type |
+----------------------------------+-----------+----------------+
| 0147f2eb77a84c86b32c313734c39872 | nova | compute |
| 1f6d4ad10143424bba5a02e69c1eb671 | heat | orchestration |
| 295c9e72a6e9490da59fa876a60dd8f4 | cinderv3 | volumev3 |
| 3cb13c39a8454773b79ad1ceea9f9277 | neutron | network |
| 490128f58d594ed19d30ebe6cc6dd122 | heat-cfn | cloudformation |
| 7fb80054a22849be84c072a94734e488 | placement | placement |
| 983711b741a14122b0e0ed019f0923fa | cinderv2 | volumev2 |
| e0374ee5cc8145ab8d8b6d0a121b4713 | keystone | identity |
| ea937163db594f16ae6b2ca28e66a0b4 | glance | image |
+----------------------------------+-----------+----------------+
Base de données
osbash@controller:~$ sudo mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 74
Server version: 10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> SELECT user,plugin FROM mysql.user;
+----------+-------------+
| user | plugin |
+----------+-------------+
| root | unix_socket |
| keystone | |
| keystone | |
| glance | |
| glance | |
| nova | |
| nova | |
| neutron | |
| neutron | |
| cinder | |
| cinder | |
| heat | |
| heat | |
+----------+-------------+
13 rows in set (0.00 sec)
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| cinder |
| glance |
| heat |
| information_schema |
| keystone |
| mysql |
| neutron |
| nova |
| nova_api |
| nova_cell0 |
| performance_schema |
+--------------------+
11 rows in set (0.00 sec)
MariaDB [(none)]> exit
Bye
osbash@controller:~$ mysql -u keystone -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 75
Server version: 10.0.38-MariaDB-0ubuntu0.16.04.1 Ubuntu 16.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| keystone |
+--------------------+
2 rows in set (0.00 sec)
MariaDB [(none)]> USE keystone;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [keystone]> SHOW TABLES;
+------------------------+
| Tables_in_keystone |
+------------------------+
| access_token |
| assignment |
| config_register |
| consumer |
| credential |
| endpoint |
| endpoint_group |
| federated_user |
| federation_protocol |
| group |
| id_mapping |
| identity_provider |
| idp_remote_ids |
| implied_role |
| local_user |
| mapping |
| migrate_version |
| nonlocal_user |
| password |
| policy |
| policy_association |
| project |
| project_endpoint |
| project_endpoint_group |
| region |
| request_token |
| revocation_event |
| role |
| sensitive_config |
| service |
| service_provider |
| token |
| trust |
| trust_role |
| user |
| user_group_membership |
| user_option |
| whitelisted_config |
+------------------------+
38 rows in set (0.00 sec)
MariaDB [keystone]> exit
Bye
4. Service d'identification : Keystone
Fonctions du service d'identification Keystone
Gestion des utilisateurs
Suit les utilisateurs et leurs permissions.
Catalogue de services
Un catalogue des services disponibles et de leur endpoint d'API.
Crédits
Données qui permet aux utilisateurs de prouver qui ils sont :
- Username/Password
- Username/API key
- Jeton d'authentification (authentication token)
Domaine
Un domaine OpenStack est une entité Identity APIv3. Il représente un ensemble de projets, de groupes et d'utilisateurs qui définissent les limites administratives pour la gestion des entités OpenStack Identity.
Jeton d'authentification
Un jeton est un texte arbitraire utilisé pour accéder aux ressources. Chaque jeton a une portée, décrivant quelles ressources sont accessibles avec lui. Le jeton peut être révoqué à tout moment et est valable pour une durée limitée.
Projet
Un projet est une sorte de conteneur utilisé pour regrouper ou isoler des ressources et/ou des objets d'identité. Selon l'opérateur de service, un projet peut correspondre à un client, un compte, une organisation ou un projet.
Service
Un service tel que Compute (Nova), Object storage (Swift) ou Image service (Glance). Il fournit un ou plusieurs points terminaux (endpoints) grâce auxquels les utilisateurs peuvent accéder aux ressources et effectuer des opérations.
Points terminal (Endpoint)
Un point terminal (Endpoint) est une adresse accessible au réseau, généralement décrite par une URL, à partir de laquelle on peut accéder à un service.
Rôle
Un rôle est la personnalité qu'un utilisateur assume et qui lui permet d'effectuer un ensemble spécifique d'opérations. Un rôle comprend un ensemble de droits et de privilèges. Un utilisateur prenant ce rôle en charge hérite de ses droits et privilèges. Dans le service d'identité, un jeton délivré à un utilisateur inclut une liste des rôles qu'un utilisateur possède. Les services qui sont appelés par cet utilisateur déterminent comment ils interprètent l'ensemble des rôles d'un utilisateur et à quelles opérations ou ressources chaque rôle donne accès.
Examen sur le noeud Controller
Chargement des variables d'environnement
osbash@controller:~$ . admin-openrc.sh
Domaines
osbash@controller:~$ openstack domain list
+----------------------------------+---------+---------+--------------------------+
| ID | Name | Enabled | Description |
+----------------------------------+---------+---------+--------------------------+
| c414549a7d9442fc82c7bd914297aeaa | heat | True | Stack projects and users |
| default | Default | True | The default domain |
+----------------------------------+---------+---------+--------------------------+
Projets
osbash@controller:~$ openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 6ec31424782241649f1f1165c1621db3 | service |
| 88286827b5bf4ca197928a47ea118136 | admin |
| e7bb777bdfae4003939e5bffe920f0c9 | demo |
+----------------------------------+---------+
Utilisateurs
osbash@controller:~$ openstack user list
+----------------------------------+-------------------+
| ID | Name |
+----------------------------------+-------------------+
| 1f6a1ea4b7884a1583a148e517a6a65c | glance |
| 308f0be7c9b5494db8e0ec055b76efb9 | neutron |
| 3bacac47f77f48aa9a83b902dd65519a | cinder |
| 3c5a42369af94e27a051790bff61370e | heat_domain_admin |
| 51e03b69079341288c4e9aea2ce859fe | nova |
| 91e1392791a145f985ea1153e2b2525b | demo |
| dc18ccebb49746ffaeec988a86196436 | placement |
| e5f2b47e72de4d858893880538b0d39f | heat |
| f62d54a6ee694e90a36e6612d97b475c | admin |
+----------------------------------+-------------------+
Rôles
osbash@controller:~$ openstack role list
+----------------------------------+------------------+
| ID | Name |
+----------------------------------+------------------+
| 5abbdafd8a81419eb22ccb9dd7744585 | admin |
| 72f15611395e4d7181f0b8b38090262f | user |
| 9fe2ff9ee4384b1894a90878d3e92bab | _member_ |
| c5e2289ad8294142a6639c5bdfce5e81 | heat_stack_user |
| c76fbb01b98346dcb7d4d19f316f2af4 | heat_stack_owner |
+----------------------------------+------------------+
5. Service d'images : Glance
Le service d'image d'OpenStack permet aux utilisateurs de découvrir, enregistrer et récupérer des images VM. Glance propose une API RESTful qui permet d'interroger les métadonnées des machines virtuelles et de récupérer l'image. Il prend en charge le stockage d'images de disque ou de serveur sur différents types de dépôts, y compris OpenStack Object Storage.
Composants
- glance-api : accepte les appels API pour la découverte, la récupération et l'archivage des images.
- glance-registry : stocke, traite et récupère les métadonnées sur les images. Les métadonnées comprennent des informations comme la taille et le type.
- base de donnée : Stocke les métadonnées des images. La plupart des déploiements utilisent MySQL ou SQLite.
- Dépôts de stockage : Différents types de référentiels sont pris en charge, y compris les systèmes de fichiers normaux, le stockage d'objets, les périphériques de type bloc "Reliable Autonomic Distributed Object Store (RADOS)", HTTP, et Amazon S3. Certains dépôts ne prennent en charge que l'utilisation en lecture seule.
Liste des images
Sur le noeud de contrôle.
openstack image list
+--------------------------------------+--------+--------+
| ID | Name | Status |
+--------------------------------------+--------+--------+
| 9173ec36-6beb-4361-9446-021cf5dc8b9c | cirros | active |
+--------------------------------------+--------+--------+
6. Service de calcul : Nova
OpenStack Compute héberge et gère les systèmes cloud computing. Il interagit avec OpenStack Identity pour l'authentification, OpenStack Image service pour les disques et les images des serveurs, et avec OpenStack Dashboard pour l'interface utilisateur et administrative. L'accès aux images est limité par projet, et par utilisateur ; les quotas sont limités par projet (le nombre d'instances, par exemple). OpenStack Compute peut évoluer horizontalement sur du matériel standard et télécharger des images pour lancer des instances.
APIs
Service nova-api
Accepte et répond aux appels de l'API de calcul par l'utilisateur final. Le service prend en charge l'API OpenStack Compute, l'API Amazon Elastic Compute 2 (EC2) et une API d'administration spéciale pour les utilisateurs privilégiés pour effectuer des actions administratives. Il renforce certaines politiques et lance la plupart des activités d'orchestration, comme l'exécution d'une instance.
Service nova-api-metadata
Accepte les demandes de métadonnées provenant des instances. Le service nova-api-metadata est généralement utilisé lorsque vous exécutez en mode multi-hôte avec des installations "nova-network".
Coeur du calcul
Service nova-compute
Un "Worker Daemon" qui crée et termine les instances des machines virtuelles par l'intermédiaire des API de l'hyperviseur. Par exemple :
- Xen API for XenServer/XenCloudPlatform (XCP)
- libvirt for KVM or QEMU
- VMware API for VMware.
Service nova-scheduler
Service qui prend une requête d'instance de VM dans la file d'attente et détermine sur quel serveur de calcul elle s'exécute.
Module nova-conductor
Assure la liaison entre le service nova-compute et la base de données. Il élimine l'accès direct à la base de données en nuage du service nova-compute. Le module nova-conductor s'adapte horizontalement. Cependant, il ne faut pas le déployer sur les nœuds où le service nova-compute fonctionne.
Service réseau pour les instances
nova-network worker daemon
Semblable au service nova-compute, il accepte les tâches réseau de la file d'attente et manipule le réseau. Effectue des tâches telles que la mise en place d'interfaces de pontage ou la modification des règles IPtables.
Les interfaces console
- nova-novnc proxy daemon : Fournit un proxy pour accéder aux instances en cours d'exécution via une connexion Virtual Network Computing (VNC). Prend en charge les clients novnc basés sur un navigateur.
- nova-spicehtml5 proxy daemon : Fournit un proxy pour accéder aux instances en cours d'exécution via une connexion SPICE (Simple Protocol for Independent Computing Environments). Prise en charge du client HTML5 par navigateur.
- nova-xvpvnc proxy daemon : Fournit un proxy pour accéder aux instances en cours d'exécution via une connexion VNC. Prise en charge d'un client Java spécifique à OpenStack.
- nova-cert module : Un démon de serveur qui sert le service Nova Cert pour les certificats X509. Il est utilisé pour générer des certificats pour euca-bundle-image. Nécessaire uniquement pour l'API EC2.
- Démon nova-cert : certificats x509.
Gestion des images
Client euca2ools : Un ensemble de commandes pour la gestion des ressources en nuage. Bien que ce ne soit pas un module OpenStack, vous pouvez configurer nova-api pour supporter cette interface EC2.
Ligne de commande et autres interfaces
Client nova : Permet aux utilisateurs de soumettre des commandes en tant qu'administrateur de projet ou utilisateur final.
La file d'attente
Un concentrateur central est nécessaire pour passer les messages entre les démons. Généralement implémenté avec RabbitMQ, mais peut être implémenté avec une file de messages AMQP, comme Apache Qpid ou Zero MQ.
La base de donnée SQL
La base de donnée SQL stocke la plupart des états de construction et d'exécution d'une infrastructure cloud, y compris :
- Les types d'instances disponibles
- Les instances en utilisation
- Les réseaux disponibles
- Les projets.
En théorie, OpenStack Compute peut supporter n'importe quelle base de données que SQL-Alchemy supporte. Les bases de données communes sont SQLite3 pour le développement et les tests, MySQL et PostgreSQL. SQL-Alchemy est la boîte à outils SQL de Python et l'Object Relational Mapper (ORM) qui donne aux développeurs d'applications la pleine puissance et la flexibilité du SQL. Il fournit une suite complète de modèles de persistance bien connus au niveau de l'entreprise, conçus pour un accès efficace et performant aux bases de données, adaptés à un langage de domaine simple et en Python.
Services compute sur le noeud Controller
osbash@controller:~$ openstack compute service list
+----+------------------+------------+----------+---------+-------+----------------------------+
| ID | Binary | Host | Zone | Status | State | Updated At |
+----+------------------+------------+----------+---------+-------+----------------------------+
| 1 | nova-scheduler | controller | internal | enabled | up | 2019-03-02T18:53:14.000000 |
| 2 | nova-consoleauth | controller | internal | enabled | up | 2019-03-02T18:53:08.000000 |
| 3 | nova-conductor | controller | internal | enabled | up | 2019-03-02T18:53:08.000000 |
| 7 | nova-compute | compute1 | nova | enabled | up | 2019-03-02T18:53:11.000000 |
+----+------------------+------------+----------+---------+-------+----------------------------+
7. Service réseau : Neutron
Le service réseau OpenStack permet la création et la connexion d'adaptateurs gérés par d'autres services OpenStack aux réseaux, à l'infrastructure de réseau virtuel (VNI) et son accès à l'infrastructure de réseau physique (PNI). Des plug-ins peuvent être implémentés pour s'adapter à différents équipements et logiciels réseau, offrant ainsi une flexibilité à l'architecture et au déploiement OpenStack.
Pour ce faire, Neutron fournit des objets pour imiter son homologue physique :
- Réseaux
- Sous-réseaux
- Routeurs
- Groupes de sécurité
Composants du service Neutron
neutron-server
Accepte et achemine les requêtes APIs vers le plug-in réseau approprié pour agir.
Agents et plug-ins réseau
- Branchement et débranchement des ports, création de réseaux ou de sous-réseaux, et fourniture d'adresses IP. Ces plug-ins et agents diffèrent en fonction du fournisseur et des technologies utilisées dans le nuage en présence.
- Mise en réseau avec des plug-ins et des agents pour les commutateurs virtuels et physiques Cisco, les produits NEC OpenFlow, Open vSwitch (OvS), Linux Bridging et le produit VMware NSX.
- Les agents habituels sont L3 (couche 3), Dynamic Host Configuration Protocol (DHCP) et un agent plug-in.
File d'attente de messages
Utilisé par la plupart des installations OpenStack pour acheminer les informations entre le serveur neutron et les différents agents. Il sert également de base de données pour stocker l'état de mise en réseau de plug-ins particuliers.
Liste des extension réseau sur le controlleur
osbash@controller:~$ openstack extension list --column "Name" --network
+----------------------------------------------------------------------------------------------+
| Name |
+----------------------------------------------------------------------------------------------+
| Default Subnetpools |
| Network IP Availability |
| Network Availability Zone |
| Auto Allocated Topology Services |
| Neutron L3 Configurable external gateway mode |
| Port Binding |
| agent |
| Subnet Allocation |
| L3 Agent Scheduler |
| Tag support |
| Neutron external network |
| Tag support for resources with standard attribute: trunk, policy, security_group, floatingip |
| Neutron Service Flavors |
| Network MTU |
| Availability Zone |
| Quota management support |
| If-Match constraints based on revision_number |
| HA Router extension |
| Provider Network |
| Multi Provider Network |
| Quota details management support |
| Address scope |
| Neutron Extra Route |
| Network MTU (writable) |
| Subnet service types |
| Resource timestamps |
| Neutron Service Type Management |
| Router Flavor Extension |
| Port Security |
| Neutron Extra DHCP options |
| Resource revision numbers |
| Pagination support |
| Sorting support |
| security-group |
| DHCP Agent Scheduler |
| Router Availability Zone |
| RBAC Policies |
| Tag support for resources: subnet, subnetpool, port, router |
| standard-attr-description |
| Neutron L3 Router |
| Allowed Address Pairs |
| project_id field enabled |
| Distributed Virtual Router |
+----------------------------------------------------------------------------------------------+
Liste des agents
openstack network agent list
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
| 391aff6f-3932-4a70-a86a-cdbc4dfceebc | L3 agent | controller | nova | :-) | UP | neutron-l3-agent |
| 88352283-11ac-4560-8457-00000683e4c2 | Metadata agent | controller | None | :-) | UP | neutron-metadata-agent |
| 8e3c59cc-a09d-45ad-a470-1e074936a1d2 | Linux bridge agent | compute1 | None | :-) | UP | neutron-linuxbridge-agent |
| a2418f32-726f-48ad-8595-f441b243573f | Linux bridge agent | controller | None | :-) | UP | neutron-linuxbridge-agent |
| bed4d037-e0dc-4d5e-981f-2410d11c6c8e | DHCP agent | controller | nova | :-) | UP | neutron-dhcp-agent |
+--------------------------------------+--------------------+------------+-------------------+-------+-------+---------------------------+
Organisation des réseaux
La configuration réseau utilise un réseau de provider (externe) qui se connecte à l'infrastructure réseau physique via la couche 2 (pontage/commutation). Ce réseau comprend un serveur DHCP qui fournit des adresses IP aux instances.
Le réseau du provider utilise le réseau 203.0.113.0/24 avec une passerelle à l'adresse 203.0.113.1. Le serveur DHCP attribue à chaque instance une adresse IP flottante comprise entre 203.0.113.101 et 203.0.113.250. Toutes les instances utilisent 8.8.4.4.4 comme résolveur DNS.
Il est à noter que sur l'instance VM elle-même, l'adresse IP flottante n'est pas connue. Neutron agit comme un routeur NAT mappant l'adresse IP privée interne avec l'adresse IP flottante.
Liste des réseaux
osbash@controller:~$ openstack network list --external
+--------------------------------------+----------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+----------+--------------------------------------+
| f3e4c1f9-0df6-4eb4-ac8b-6cc41ec21dbf | provider | 0d737ddd-1128-49cd-acae-78a73ac91503 |
+--------------------------------------+----------+--------------------------------------+
osbash@controller:~$ openstack subnet show provider
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| allocation_pools | 203.0.113.101-203.0.113.200 |
| cidr | 203.0.113.0/24 |
| created_at | 2019-02-28T22:49:07Z |
| description | |
| dns_nameservers | 8.8.4.4 |
| enable_dhcp | True |
| gateway_ip | 203.0.113.1 |
| host_routes | |
| id | 0d737ddd-1128-49cd-acae-78a73ac91503 |
| ip_version | 4 |
| ipv6_address_mode | None |
| ipv6_ra_mode | None |
| name | provider |
| network_id | f3e4c1f9-0df6-4eb4-ac8b-6cc41ec21dbf |
| project_id | 88286827b5bf4ca197928a47ea118136 |
| revision_number | 0 |
| segment_id | None |
| service_types | |
| subnetpool_id | None |
| tags | |
| updated_at | 2019-02-28T22:49:07Z |
| use_default_subnet_pool | None |
+-------------------------+--------------------------------------+
Activation du NAT sur l'hôte
Ce script donne accès à l'Internet aux instances virtuelles.
Il est à exécuter sur l'hôte physique qui héberge la solution de lab avec la commande sudo
:
sudo $OS_LAB/nat_tables.sh
echo "1" > /proc/sys/net/ipv4/ip_forward
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- any eth0 anywhere anywhere
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- eth0 vboxnet1 anywhere anywhere state RELATED,ESTABLISHED
0 0 ACCEPT all -- vboxnet1 eth0 anywhere anywhere
8. Le service de stockage : Cinder
Cinder, le service de stockage type blocs OpenStack ajoute le stockage persistant à une machine virtuelle. Block Storage fournit une infrastructure de gestion des volumes et interagit avec OpenStack Compute pour fournir des volumes pour les instances. Le service permet également de gérer les instantanés de volume et les types de volume.
Composants Cinder
- cinder-api : Accepte les demandes d'API et les achemine vers cinder-volume pour action.
- cinder-volume
- Interagit directement avec le service de stockage de blocs et les processus tels cinder-scheduler
- Interagit avec ces processus par l'intermédiaire d'une file d'attente de messages
- Répond aux demandes de lecture et d'écriture adressées au service Block Storage pour maintenir l'état
- Interagit avec une variété de fournisseurs de stockage par l'intermédiaire d'un pilote l'architecture.
- Démon cinder-scheduler : Sélectionne le nœud de fournisseur de stockage optimal sur lequel créer le volume.
- Démon cinder-backup :
- Fournit des volumes de sauvegarde de tout type à un fournisseur de stockage de sauvegarde
- Interagit avec une variété de fournisseurs de stockage grâce à une architecture de pilotes.
- File d'attente de messages : Achemine les informations entre les processus de stockage en bloc.
Liste des services de volumes
osbash@controller:~$ openstack volume service list
+------------------+--------------+------+---------+-------+----------------------------+
| Binary | Host | Zone | Status | State | Updated At |
+------------------+--------------+------+---------+-------+----------------------------+
| cinder-scheduler | controller | nova | enabled | up | 2019-03-02T20:48:17.000000 |
| cinder-volume | compute1@lvm | nova | enabled | up | 2019-03-02T20:48:16.000000 |
+------------------+--------------+------+---------+-------+----------------------------+
9. Le service d'orchestration : Heat
Heat, le service d'orchestration fournit une orchestration basée sur des modèles pour décrire une application en nuage en exécutant des appels de l'API OpenStack pour générer des applications en nuage. Le logiciel intègre tous les autres composants de base d'OpenStack dans un système de modèle à fichier unique. Les modèles permettent la création de la plupart des types de ressources OpenStack tels que les instances, les IP flottantes, les volumes, les groupes de sécurité et les utilisateurs. Il fournit également des fonctionnalités avancées telles que l'instance Haute Disponibilité (HA), la mise à l'échelle automatique des instances et les stacks imbriqués. Ceci permet aux projets de base OpenStack de recevoir une plus grande base d'utilisateurs.
Le service peut être intégré au service Orchestration directement ou via des plug-ins personnalisés.
Composants du service d'orchestration Heat
- Client en ligne de commande Heat
- heat-api
- heat-api-cfn
- heat-engine
Liste des services d'orchestration
osbash@controller:~$ openstack orchestration service list
+------------+-------------+--------------------------------------+------------+--------+----------------------------+--------+
| Hostname | Binary | Engine ID | Host | Topic | Updated At | Status |
+------------+-------------+--------------------------------------+------------+--------+----------------------------+--------+
| controller | heat-engine | d5c5cf0e-d7f3-4976-b71f-e7c5ec7634d6 | controller | engine | 2019-03-02T20:58:33.000000 | up |
| controller | heat-engine | d32baf2f-9c6d-4393-9ffc-d97414126b57 | controller | engine | 2019-03-02T20:58:32.000000 | up |
| controller | heat-engine | 5fde3605-f341-4226-ad09-48d83454194d | controller | engine | 2019-03-02T20:58:32.000000 | up |
| controller | heat-engine | 7205ef1f-4589-409f-ad4f-1cdc8c58e859 | controller | engine | 2019-03-02T20:58:32.000000 | up |
+------------+-------------+--------------------------------------+------------+--------+----------------------------+--------+
10. Gabarits d'instances
Les profils d'instance des machines virtuelles s'appellent des "flavours". Ces gabarits précisent le profil d'allocation des ressources virtuelles qui inclut le processeur, la mémoire et le stockage. La plus petite "flavour" par défaut consomme 512 mégaoctets (Mo) de mémoire par instance. Pour les environnements dont les nœuds de calcul contiennent moins de 4 Gigaoctets (Go) de mémoire, il est recommandé de créer la variante m1.nano qui nécessite seulement 64 Mo par exemple. Ce gabarit ne peut être utilisée qu'avec l'image CirrOS à des fins de test.
Liste des gabarits
osbash@controller:~$ openstack flavor list
Pour l'instant, aucun gabarit n'est configuré.
Création de gabarits
osbash@controller:~$ openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
+----------------------------+---------+
| Field | Value |
+----------------------------+---------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 1 |
| id | 0 |
| name | m1.nano |
| os-flavor-access:is_public | True |
| properties | |
| ram | 64 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 1 |
+----------------------------+---------+
osbash@controller:~$ openstack flavor create --id 1 --vcpus 1 --ram 2048 --disk 6 m1.small
+----------------------------+----------+
| Field | Value |
+----------------------------+----------+
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 6 |
| id | 1 |
| name | m1.small |
| os-flavor-access:is_public | True |
| properties | |
| ram | 2048 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 1 |
+----------------------------+----------+
osbash@controller:~$ openstack flavor list
+----+----------+------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+----------+------+------+-----------+-------+-----------+
| 0 | m1.nano | 64 | 1 | 0 | 1 | True |
| 1 | m1.small | 2048 | 1 | 0 | 1 | True |
+----+----------+------+------+-----------+-------+-----------+
Languages de présentation JSON et YAML
OpenStack, comme d'autres solutions de gestion des infrastructures en nuage, rend des sorties sous différents formats :
- Tabulaire
- CSV
- JSON
- YAML
Illustration par l'exemple
Ici un exemple de liste à deux entrées qui contiennent chacune 7 champs clé/valeur.
osbash@controller:~$ openstack flavor list
+----+----------+------+------+-----------+-------+-----------+
| ID | Name | RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+----------+------+------+-----------+-------+-----------+
| 0 | m1.nano | 64 | 1 | 0 | 1 | True |
| 1 | m1.small | 2048 | 1 | 0 | 1 | True |
+----+----------+------+------+-----------+-------+-----------+
[
{
"Name": "m1.nano",
"RAM": 64,
"Ephemeral": 0,
"VCPUs": 1,
"Is Public": true,
"Disk": 1,
"ID": "0"
},
{
"Name": "m1.small",
"RAM": 2048,
"Ephemeral": 0,
"VCPUs": 1,
"Is Public": true,
"Disk": 1,
"ID": "1"
}
]
- Disk: 1
Ephemeral: 0
ID: '0'
Is Public: true
Name: m1.nano
RAM: 64
VCPUs: 1
- Disk: 1
Ephemeral: 0
ID: '1'
Is Public: true
Name: m1.small
RAM: 2048
VCPUs: 1
Traitement des sorties avec JQ (Json Query)
osbash@controller:~$ openstack flavor list -f json | jq -r '.[]'
{
"Name": "m1.nano",
"RAM": 64,
"Ephemeral": 0,
"VCPUs": 1,
"Is Public": true,
"Disk": 1,
"ID": "0"
}
{
"Name": "m1.small",
"RAM": 2048,
"Ephemeral": 0,
"VCPUs": 1,
"Is Public": true,
"Disk": 1,
"ID": "1"
}
osbash@controller:~$ openstack flavor list -f json | jq -r '.[].Name'
m1.nano
m1.small
osbash@controller:~$ openstack flavor list -f json | jq -r '.[0].RAM'
64
osbash@controller:~$ openstack flavor list -f json | jq -r '.[1].RAM'
2048