2017-04-06 1 views
0

Comment puis-je appeler 'docker swarm unlock' de manière non interactive à partir d'un script?Comment appeler 'docker swarm unlock' de manière non-interactive?

Normalement, lorsque vous exécutez la commande de déverrouillage vous obtenez une invite interactive comme ce qui suit:

node $ docker swarm unlock 
Please enter unlock key: 

J'ai essayé de courir comme suit:

node $ echo "SWMKEY-1-g8Kpx6C7xIIaabdcefghMLB5YYaf5OSLL4sA1234567" | docker swarm unlock 

Cela ne déverrouiller mon essaim, mais la commande ne revient jamais. Il se bloque juste là.

Du documentation il ne semble pas qu'il y ait des drapeaux supplémentaires que je peux passer à la commande de déverrouillage.

+0

Avez-vous essayé de créer un script expect à la place? Il suffit de s'attendre à lire le stdout et transmettre des données automatiquement? – Dockstar

+0

@Dockstar, merci pour la suggestion. Je n'avais pas essayé un script attendu mais ça aurait probablement marché. Comme il s'est avéré que j'avais une erreur différente. – mightyroser

Répondre

0

J'ai fait d'autres recherches et tests. Je n'ai pas bien compris le problème que je voyais.

Vous pouvez déverrouiller non-interactive d'un noeud essaim docker en utilisant une commande comme suit:

node $ echo "SWMKEY-1-g8Kpx6C7xIIaabdcefghMLB5YYaf5OSLL4sA1234567" | docker swarm unlock 

où SWMKEY-1-g8Kpx6C7xIIaabdcefghMLB5YYaf5OSLL4sA1234567 est la clé de déverrouillage. Toutefois, vous devez l'exécuter sur tous les nœuds de votre cluster essaims qui sont verrouillés. J'avais supposé à tort que vous n'aviez besoin que d'exécuter la commande de déverrouillage sur un seul nœud du cluster et que cela déverrouillerait tous les nœuds.

Mon scénario était le suivant:

J'ai un noeud-1 groupe 3 noeuds constitué de machines virtuelles, node-2 et le noeud-2 en cours d'exécution en mode essaim. J'ai redémarré tous les 3 VM. J'ai ensuite exécuté la commande de déverrouillage non interactive sur le nœud 1 uniquement et la commande n'est pas revenue. Au lieu de cela, j'ai besoin d'exécuter la commande de déverrouillage sur tous les nœuds.

Je tiens également à souligner que le comportement de 'déverrouillage de docker swarm' est le même, que vous l'utilisiez de manière interactive ou non. Lorsque j'avais testé le déblocage interactif du «docker swarm», j'avais utilisé un cluster d'essaim à nœud unique.