とりわけ、関連するAnsibleロールがインストールされnginx、いくつかの重要な構成を実行/etc/nginxし、ファイアウォールでポート80および443を開くWebサーバーであるホストがあるとします。
ある時点で、その特定のホストがWebサーバーにならないようにします。何らかの理由でそのサービスを他の場所に移動したからです。[webservers]インベントリからサーバーを削除するだけで、サーバーにゴミが残ります。理想的には、アンインストールnginxして、/etc/nginxディレクトリ(およびその他のディレクトリ)を削除し、ファイアウォールのポート80と443を閉じます。
Puppetではこれを行うことができます。Webサーバーであるホストの構成には、次のようなものがあります。
class { 'nginx':
ensure => present,
}
そして、私がしなければならないことは、「現在」を「不在」に置き換えることです。nginxクラスが適切に記述されている場合、変更は元に戻されます。(通常、管理者は「現在」を「不在」に置き換えます。その後、影響を受けるすべてのホストが構成を元に戻したことを確認したら、マニフェストからアイテムを削除します。)
さらに、Puppetファイアウォールモジュールは、マニフェストに見つからないファイアウォールルールを自動的に削除すると思います。ファイアウォールの場合、上記の「不在の」ことをする必要さえないと思います。とにかくファイアウォールは自動的に閉じます。
Ansibleでこれらのことを達成するにはどうすればよいですか?
ensure => presentにensure => absentも...どのansibleと同じことを行うためになる」などの理想をすでに試したものの例を示します。