Ich suche nach dem besten Weg, um regelmäßig rollierende Upgrades für meine Infrastruktur durchzuführen.
In der Regel wird dies auf jedem Host einzeln ausgeführt:
sudo yum update -y && sudo reboot
Aber ich stoße an die Grenzen einer Skalierbarkeit.
Ich möchte in jeder meiner Rollen jeweils nur einen Knoten neu starten, damit beispielsweise nicht alle meine Load Balancer oder DB-Cluster-Mitglieder gleichzeitig heruntergefahren werden.
Im Idealfall möchte ich etwas tun wie:
for role in $(< roles_list.txt) ; do
mco package update_all_and_reboot \
--batch 1 --batch-sleep 90 \
-C $role -F environment=test
done
Aber das scheint nicht ganz zu existieren. Ich bin mir nicht sicher, ob die Verwendung des "Shell" -Agenten auch der beste Ansatz ist.
mco shell run 'yum update -y && reboot' \
--batch 1 --batch-sleep 90
Schaue ich mir nur das falsche Werkzeug für diesen Job an? Gibt es etwas Besseres für die Verwaltung dieser Art von fortlaufenden Neustarts, aber dass ich mich irgendwie mit meinen von Puppet zugewiesenen Rollen verbinden kann, damit ich mich sicher sein kann, dass ich nicht alles Wichtige auf einmal ausschalte, sondern es trotzdem kann Führen Sie einige parallele Updates und Neustarts durch?
quelle
Antworten:
Aufbau
Bereitstellen
und
auf beiden Hosts, dh
test-server1
undtest-server2
.Dienstleistungen
Starten Sie mcollective auf beiden Diensten neu:
und
Befehle
Führen Sie die folgenden Befehle auf dem mcollective-Serverknoten aus:
Der Gastgeber
test-server2
hört zu:Starten Sie Folgendes neu
test-server2
:Das
test-server2
wird neu gestartet:und es wurde neu gestartet:
Beachten Sie, dass es auch möglich ist, einen Host herunterzufahren:
Originalcode
/usr/libexec/mcollective/mcollective/agent/power.rb
/usr/libexec/mcollective/mcollective/agent/power.ddl
/usr/share/ruby/vendor_ruby/mcollective/application/power.rb
Geänderter Code
/usr/libexec/mcollective/mcollective/agent/power.ddl
/usr/libexec/mcollective/mcollective/agent/power.rb
Befehl
quelle