Bessonov.docker-swarm
Rôle Ansible pour configurer un cluster Docker Swarm
Ce rôle :
- Configure un cluster
- Gère les gestionnaires et les travailleurs
L'exécution est basée sur une machine à états finis, ce qui signifie que ce rôle peut transformer un cluster existant dans l'état désiré. Voir les avertissements et tester la transformation avant l'exécution !
Voir rôle Ansible Docker pour l'installation de Docker.
Exigences
Ansible 2.3 et Docker installé.
Avertissements
Si les nœuds gestionnaires changent, au moins l'un d'eux doit rester statique pour chaque exécution de playbook. Par exemple, pour échanger le gestionnaire-1 avec le gestionnaire-2 :
- Ajoutez le gestionnaire-2 aux gestionnaires
- Exécutez le playbook
- Retirez le gestionnaire-1 des gestionnaires
- Exécutez le playbook
Déclasser ou supprimer des nœuds avec le playbook :
- Laissez les nœuds dans l'inventaire (voir l'exemple ci-dessous)
- Exécutez le playbook
- Maintenant, vous pouvez retirer les nœuds qui ne participent pas au cluster de l'inventaire
Exemple de Playbook
Installez le rôle globalement avec :
ansible-galaxy install Bessonov.docker-swarm
ou localement :
ansible-galaxy install --roles-path roles Bessonov.docker-swarm
Inventaire (vous pouvez choisir n'importe quel nom pour les groupes, removed-nodes
est optionnel pour un nouveau cluster) :
[managers]
node-1
node-2
node-3
[workers]
node-1
node-3
node-4
[removed-nodes]
node-5
node-6
Playbook :
# rassembler des informations sur les nœuds qui doivent être retirés ou déclassés de l'ensemble du cluster existant
- hosts: removed-nodes:workers
tasks: []
# Docker doit être installé au préalable
# vous pouvez utiliser n'importe quel rôle pour l'installation de Docker
- hosts: managers:workers
roles:
- role: Bessonov.docker
- hosts: managers
# le CLI Docker ne prend pas en charge l'accès simultané
serial: 1
roles:
- role: Bessonov.docker-swarm
swarm_worker_hosts: workers
# optionnel : remplacer les paramètres par défaut ; voir `defaults/main.yml`
swarm_cluster_bootstrap_parameters:
--advertise-addr: enp0s8
Licence
Licence MIT (MIT)
Copyright (c) 2017, Anton Bessonov
Par la présente, une permission est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le "Logiciel"), de traiter le Logiciel sans restriction, y compris sans limitation les droits d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier et/ou de vendre des copies du Logiciel, et d'autoriser les personnes à qui le Logiciel est fourni à le faire, sous réserve des conditions suivantes :
L'avis de copyright ci-dessus et cet avis de permission devront être inclus dans toutes les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI "TEL QUEL", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS S'Y LIMITER AUX GARANTIES DE VENTE, ADÉQUATION À UN USAGE PARTICULIER ET NON-VIOLATION. EN AUCUN CAS, LES AUTEURS OU DÉTENTIONNAIRES DU COPYRIGHT NE POURRONT ÊTRE TENUS RESPONSABLES DE QUELQUE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION DE CONTRAT, DÉLIT OU AUTRE, RESSORTISSANT DE, OU EN LIEN AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.