Angenommen, ich habe einen Host, bei dem es sich unter anderem um einen Webserver handelt, auf dem die zugehörige Ansible-Rolle installiert wird nginx
, der einige wichtige Konfigurationsschritte ausführt /etc/nginx
und die Ports 80 und 443 in der Firewall öffnet.
Irgendwann möchte ich, dass dieser bestimmte Host kein Webserver mehr ist, weil ich diesen Service aus irgendeinem Grund an einen anderen Ort verlegt habe. Wenn Sie den Server nur aus [webservers]
dem Inventar entfernen, verbleibt Müll auf dem Server. Im Idealfall möchte ich deinstallieren nginx
, das /etc/nginx
Verzeichnis (und einige andere Verzeichnisse) entfernen und die Ports 80 und 443 in der Firewall schließen.
In Puppet kann ich das machen. Ein Host, der ein Webserver ist, hat in seiner Konfiguration etwa Folgendes:
class { 'nginx':
ensure => present,
}
und alles, was ich tun muss, ist, "Gegenwart" durch "Abwesend" zu ersetzen. Wenn die nginx
Klasse gut geschrieben ist, werden die vorgenommenen Änderungen rückgängig gemacht. (In der Regel ersetzt ein Administrator "Vorhanden" durch "Abwesend". Wenn er später sicher ist, dass alle betroffenen Hosts die Konfiguration rückgängig gemacht haben, entfernt er das Element aus dem Manifest.)
Außerdem werden vom Puppet-Firewall-Modul automatisch Firewall-Regeln entfernt, die nicht mehr im Manifest enthalten sind. Daher denke ich, dass Sie für die Firewall nicht einmal das "fehlende" oben tun müssen, da die Firewall sowieso automatisch geschlossen wird.
Wie kann ich diese Dinge mit Ansible erreichen?
ensure => present
ensure => absent
ändern und Nginx deinstallieren, das zuvor installiert wurde, indem ich zu dem wechsle , der auch ... Wie man dasselbe mit Ansible macht" usw. Idealerweise mit einem Beispiel für alles, was Sie bereits versucht haben.