Предположим, у меня есть хост, который, помимо прочего, является веб-сервером, на котором устанавливается соответствующая роль Ansible nginx
, выполняет некоторые важные настройки /etc/nginx
и открывает порты 80 и 443 в брандмауэре.
В какой-то момент я хочу, чтобы этот конкретный хост больше не был веб-сервером, потому что по какой-то причине я переместил этот сервис в другое место. Простое удаление сервера из [webservers]
инвентаря оставит мусор на сервере. В идеале я хотел бы удалить nginx
, удалить /etc/nginx
каталог (и некоторые другие каталоги) и закрыть порты 80 и 443 в брандмауэре.
В Puppet я могу это сделать. Хост, являющийся веб-сервером, будет иметь такую конфигурацию:
class { 'nginx':
ensure => present,
}
и все, что мне нужно сделать, это заменить «настоящее» на «отсутствующее». Если nginx
класс хорошо написан, он отменит внесенные изменения. (Обычно администратор заменяет «присутствует» на «отсутствует», и позже, когда он уверен, что все затронутые хосты отменили конфигурацию, он удалит элемент из манифеста.)
Более того, я думаю, что модуль межсетевого экрана Puppet автоматически удаляет правила межсетевого экрана, которые больше не могут быть найдены в манифесте; поэтому я думаю, что для брандмауэра вам даже не нужно делать эту «отсутствующую» вещь выше, брандмауэр автоматически все равно закроется.
Как я могу достичь этих вещей с Ansible?
ensure => present
наensure => absent
который также ... Как сделать то же самое с ansible» и т. Д. В идеале с примером всего, что вы уже попробовали.