Gibt es eine Möglichkeit, Playbooks von dort, wo sie fehlgeschlagen sind, erneut zu versuchen?Gibt es eine Möglichkeit, Playbooks von dort, wo sie fehlgeschlagen sind, erneut zu versuchen?
Ich fange es mit
vagrant provision
Gibt es eine Möglichkeit, Playbooks von dort, wo sie fehlgeschlagen sind, erneut zu versuchen?Gibt es eine Möglichkeit, Playbooks von dort, wo sie fehlgeschlagen sind, erneut zu versuchen?
Ich fange es mit
vagrant provision
Ich bin mir nicht sicher, warum diese als ansible Textbuch idempotent werden sollte tun wollen würde und so wieder läuft die ganze Sache von Anfang an sollte völlig in Ordnung sein.
Das heißt, wenn Sie dies einige Notwendigkeit zu tun haben, ansible einen Wiederholungsmechanismus am Ende eines gescheiterten Textbuch macht die wie folgt aussieht:
PLAY RECAP ********************************************************************
to retry, use: --limit @/home/user/playbook.retry
Wenn Sie direkt auf dem Feld waren, konnten Sie dann laufen etwas entlang der Linien von:
ansible-playbook playbook.yml --limit @/home/user/playbook.retry
dies als provisioner zur Verfügung stellen Sie einen anderen Namen provisioner hinzufügen müssen, um vagabundierende so Ihre Vagrantfile etwas aussehen könnte:
Vagrant.configure("2") do |config|
# ... other configuration
# Does the normal playbook run
config.vm.provision "bootstrap", type: "ansible" do |bootstrap|
bootstrap.playbook = "playbook.yml"
end
# Picks up from any failed runs
# Run this with: "vagrant provision --provision-with resume"
config.vm.provision "resume", type: "ansible" do |resume|
resume.playbook = "playbook.yml"
resume.limit = "--limit @/home/user/playbook.retry"
end
end
Wie bereits diese in den Kommentaren der Vagrantfile aus wird dann versuchen, sowohl das playbook.yml
Textbuch und das playbook.retry
Wiederholungsspiel auszuführen, die auf einem ausgefallenen Laufe auf einem ersten vagrant up
erstellt wird. Wenn die playbook.yml
fehlschlägt, wird es automatisch versuchen und wieder aufnehmen (und wahrscheinlich fehlschlagen, da Sie noch zu beheben, warum es fehlgeschlagen ist) und dann beenden.
Sie könnten dann reparieren, was in Ihrem Textbuch oder Inventar brauchte Festsetzung und dann vagrant provision --provision-with resume
führen Sie den Provisioning-Block genannt laufen resume
von abholen, wo playbook.yml
schlug fehl, wenn Sie ursprünglich die Instanz bereitgestellt.
Beachten Sie jedoch, dass die Option limit
auf Playbook bedeutet, dass alle Fakten/Variablen, die vor dem vorherigen Playbook gesammelt wurden, nicht für den Wiederholungsversuch verfügbar sind. Ich bin mir nicht sicher, ob es einen guten Weg gibt, diese Fakten zu sammeln, bevor ich den Versuch unternehme, und wie erwähnt, würde ich mich definitiv darauf verlassen, dass das ganze Spielbuch bei einem Misserfolg trotzdem erneut läuft.
mit ansible 1.9.2 und vagrant 1.7.4 auf macos funktioniert es nicht wie aufgeführt, ersetzen 'resume.raw_arguments =" --limit @/home/user/playbook.retry "' mit 'resume.limit = "@/home/user/playbook.retry" ', damit es funktioniert. Ursache dafür ist, dass 'vagrant provision'' 'default'' als Limit zu verwenden scheint, wenn nicht anders konfiguriert. – MrsTang
Immer, wenn ich Lebenslauf von beiden Arten in meine Vagrant-Datei setze, bekomme ich "undefined lokale Variable oder Methode' resume '". Verwenden von Vagrant 1.9.4 auf Ubuntu. Ich kann das Ansible-Playbook erneut mit "ansible-playbook --private-key = ~/.vagrant.d/insecure_private_key -u vagrant -i.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory setup.yml" ausführen, vorausgesetzt, ich habe keine Bereitstellung vorgenommen Die Box mit config.ssh.insert_key = false – MagicLAMP
"Ich bin mir nicht sicher, warum du das so machen willst, weil ein Ansible-Playbook idempotent sein sollte, und es sollte völlig in Ordnung sein, das ganze von Anfang an neu zu starten." Selbst mit einem kleinen Übungsbuch können Sie 15 Minuten warten, bevor Sie zu der ersten veränderten Aufgabe gelangen. Wiederholungen sind wahnsinnig nützlich mit großen Orchestrierungsbemühungen. – chpatton013
Warum soll es von wo es fehlschlägt neu starten? Die gesamte Design-Philosophie um Ansible und viele andere Konfigurations-Tools besteht darin, dass Sie in der Lage sein sollten, sie idempotent immer und immer wieder auszuführen. – ydaetskcoR
Kann nützlich sein, wenn Sie eine erste Aufgabe haben, die eine Stunde dauert, aber erfolgreich ist, und eine zweite, die fehlschlägt. –