Installer OpenStack
Si vous voulez vous lancer rapidement, allez ici à la place:
Cette réponse est un regard plus détaillé sur la façon d'utiliser Juju avec OpenStack.
Portée
La plate-forme OpenStack est puissante et ses utilisations diversifiées. Cette section de la documentation concerne principalement le déploiement d'un système OpenStack "standard" utilisant, mais sans s'y limiter, des composants Canonical tels que MAAS, Juju et Ubuntu. Le cas échéant, d'autres méthodes et logiciels seront mentionnés.
Hypothèses
- Utilisation de MAAS - suivez d'abord ces instructions.
- Utilisation de Juju
- Configuration du réseau local - Ce document suppose que vous disposez d'une configuration de réseau local adéquate, y compris des interfaces distinctes pour l'accès au cloud OpenStack. Les réseaux idéaux sont présentés dans la [MAAS] [documentation MAAS pour OpenStack].
Planifier une installation
Avant de déployer des services, il est très utile de faire le point sur les ressources disponibles et leur utilisation. OpenStack comprend un certain nombre de services interdépendants (Nova, Swift, etc.) qui ont chacun des demandes différentes en termes d'hôtes. Par exemple, le service Swift, qui fournit le stockage d'objets, a une exigence différente de celle du service Nova, qui fournit des ressources de calcul.
Les exigences minimales pour chaque service et recommandations sont énoncées dans le Guide officiel des opérations OpenStack
La composition recommandée des nœuds pour déployer OpenStack avec MAAS et Juju est que tous les nœuds du système doivent être capables d'exécuter N'IMPORTE QUEL des services. C'est la meilleure pratique pour la robustesse du système, car comme tout nœud physique doit tomber en panne, un autre peut être réutilisé pour prendre sa place. Cela s'étend évidemment à toutes les exigences matérielles telles que les interfaces réseau supplémentaires.
Si, pour des raisons d'économie ou autrement, vous choisissez d'utiliser différentes configurations de matériel, vous devez noter que votre capacité à surmonter une défaillance matérielle sera réduite. Il sera également nécessaire de cibler les déploiements sur des nœuds spécifiques - voir la section dans la documentation MAAS sur les balises .
Créez le fichier de configuration OpenStack
Nous utiliserons les charmes Juju pour déployer les composants d'OpenStack. Chaque charme encapsule tout le nécessaire pour mettre en place un service particulier. Cependant, les services individuels ont de nombreuses options de configuration, dont certaines que nous souhaitons modifier.
Pour rendre cette tâche plus facile et plus reproductible, nous allons créer un fichier de configuration séparé avec les options pertinentes pour tous les services. Ceci est écrit dans un format YAML standard ( voir www.yaml.org si cela ne vous est pas familier ).
Voici un exemple d'un openstack-config.yaml:
keystone:
admin-password: openstack
debug: 'true'
log-level: DEBUG
nova-cloud-controller:
network-manager: 'Neutron'
quantum-security-groups: 'yes'
neutron-external-network: Public_Network
nova-compute:
enable-live-migration: 'True'
migration-auth-type: "none"
virt-type: kvm
#virt-type: lxc
enable-resize: 'True'
quantum-gateway:
ext-port: 'eth1'
plugin: ovs
glance:
ceph-osd-replication-count: 3
cinder:
block-device: None
ceph-osd-replication-count: 3
overwrite: "true"
glance-api-version: 2
ceph:
fsid: a51ce9ea-35cd-4639-9b5e-668625d3c1d8
monitor-secret: AQCk5+dR6NRDMRAAKUd3B8SdAD7jLJ5nbzxXXA==
osd-devices: /dev/sdb
osd-reformat: 'True'
Pour tous les services, nous pouvons configurer le openstack-origin
pour pointer vers une source d'installation. Dans ce cas, nous nous baserons sur la valeur par défaut, qui pointera vers les sources pertinentes pour la version Ubuntu 14.04 LTS Trusty. La configuration supplémentaire de chaque service est expliquée dans ce document .
Autres configurations
D'autres paramètres et options de configuration sont possibles pour le déploiement des services OpenStack. Ceux-ci sont détaillés dans la documentation des charmes individuels utilisés par Juju, et peuvent être inspectés en visitant le magasin de charme en ligne Juju et en recherchant le charme en utilisant le champ de recherche en haut à gauche de la page. les paramètres de configuration sont ensuite détaillés sous "Configuration" dans la page principale, comme indiqué:
Déployer OpenStack avec Juju
Maintenant que la configuration est définie, nous pouvons utiliser Juju pour déployer et relier les services.
Initialiser Juju
Juju nécessite un minimum d'installation. Ici, nous supposons qu'il a déjà été configuré pour fonctionner avec votre cluster MAAS (voir le [Guide d'installation de Juju] [juju_install] pour plus d'informations à ce sujet.
Premièrement, nous devons récupérer des images et des outils que Juju utilisera:
juju sync-tools --debug
Ensuite, nous pouvons créer l'instance d'amorçage:
juju bootstrap --upload-tools --debug
Nous utilisons le commutateur upload-tools pour utiliser les versions locales des outils que nous venons de récupérer. Le commutateur de débogage donnera une sortie détaillée qui peut être utile. Ce processus peut prendre quelques minutes, car Juju crée une instance et installe les outils. Une fois terminé, vous pouvez vérifier l'état du système avec la commande:
juju status
Cela devrait renvoyer quelque chose comme:
environment: maas
machines:
"0":
agent-state: started
agent-version: 1.18.1.1
dns-name: localhost
instance-id: localhost
series: trusty
Déployer les charmes OpenStack
Maintenant que le nœud d'amorçage Juju est opérationnel, nous pouvons déployer les services requis pour effectuer notre installation OpenStack. Pour configurer correctement ces services lors de leur déploiement, nous utiliserons le fichier de configuration que nous avons défini précédemment, en le transmettant avec le --config
commutateur à chaque commande de déploiement. Remplacez le nom et le chemin de votre fichier de configuration s'il est différent.
Il est utile mais pas indispensable de déployer les services dans l'ordre ci-dessous. Il est également fortement recommandé d'ouvrir une fenêtre de terminal supplémentaire et d'exécuter la commande juju debug-log
. Cela affichera les journaux de tous les services lors de leur exécution et peut être utile pour le dépannage.
Il est également recommandé d'exécuter juju status
périodiquement une commande pour vérifier que chaque service a été installé et fonctionne correctement. Juju essaiera automatiquement de récupérer la meilleure version possible du charme de la boutique en ligne de charme. Si vous installez à partir d'un réseau restreint ou fermé, il est possible de pré-récupérer les charmes requis. Voir [la documentation des charmes hors ligne] [charms-offline].
juju deploy --to=0 juju-gui
juju deploy rabbitmq-server
juju deploy mysql
juju deploy --config openstack-config.yaml openstack-dashboard
juju deploy --config openstack-config.yaml keystone
juju deploy --config openstack-config.yaml ceph -n 3
juju deploy --config openstack-config.yaml nova-compute -n 3
juju deploy --config openstack-config.yaml quantum-gateway
juju deploy --config openstack-config.yaml cinder
juju deploy --config openstack-config.yaml nova-cloud-controller
juju deploy --config openstack-config.yaml glance
juju deploy --config openstack-config.yaml ceph-radosgw
Ajouter des relations entre les services OpenStack
Bien que les services soient désormais déployés, ils ne sont pas encore connectés entre eux. Chaque service existe actuellement de manière isolée. Nous utilisons la juju add-relation
commande pour les informer les uns des autres et configurer les connexions et protocoles pertinents. Cette configuration supplémentaire est prise en charge par les charmes individuels eux-mêmes.
Nous devrions commencer à ajouter des relations entre les charmes en mettant en place le service d'autorisation Keystone et sa base de données, car cela sera nécessaire à de nombreuses autres connexions:
juju add-relation keystone mysql
Nous attendons que la relation soit établie. Une fois terminé, vérifiez-le avec le statut juju:
juju status mysql
juju status keystone
La mise en place de ce service peut prendre quelques instants. Bien qu'il soit certainement possible de continuer à ajouter des relations (Juju gère une file d'attente pour les actions en attente), cela peut être contre-productif en termes de temps global, car de nombreuses relations se réfèrent aux mêmes services.
Les relations suivantes doivent également être établies:
juju add-relation nova-cloud-controller mysql
juju add-relation nova-cloud-controller rabbitmq-server
juju add-relation nova-cloud-controller glance
juju add-relation nova-cloud-controller keystone
juju add-relation nova-compute mysql
juju add-relation nova-compute rabbitmq-server
juju add-relation nova-compute glance
juju add-relation nova-compute nova-cloud-controller
juju add-relation glance mysql
juju add-relation glance keystone
juju add-relation cinder keystone
juju add-relation cinder mysql
juju add-relation cinder rabbitmq-server
juju add-relation cinder nova-cloud-controller
juju add-relation openstack-dashboard keystone
juju add-relation swift-proxy swift-storage
juju add-relation swift-proxy keystone
Enfin, la sortie du statut juju doit montrer que toutes les relations sont complètes. Le cloud OpenStack est maintenant en cours d'exécution, mais il doit être rempli avec des composants supplémentaires avant d'être prêt à être utilisé.