Припустимо, у мене є хост, який є, між іншим, веб-сервером, де встановлена відповідна роль Ansible nginx
, виконує деяку істотну конфігурацію в /etc/nginx
і відкриває порти 80 та 443 в брандмауері.
В якийсь момент я хочу, щоб той конкретний хост більше не був веб-сервером, тому що я чомусь перенесла цю послугу в інше місце. Просто видалення сервера з [webservers]
інвентарю залишатиме сміття на сервері. В ідеалі я хотів би видалити nginx
, видалити /etc/nginx
каталог (та деякі інші каталоги) та закрити порти 80 та 443 у брандмауері.
У Ляльці я можу це зробити. Хост, який є веб-сервером, матиме щось подібне у своїй конфігурації:
class { 'nginx':
ensure => present,
}
і все, що я повинен зробити, це замінити "присутній" на "відсутній". Якщо nginx
клас добре записаний, він скасує внесені зміни. (Зазвичай адміністратор замінить "присутній" на "відсутній", а пізніше, коли він буде впевнений, що всі постраждалі хости скасували конфігурацію, він видалить елемент із маніфесту.)
Більше того, я думаю, що модуль брандмауера Puppet автоматично видаляє правила брандмауера, які більше не можна знайти в маніфесті; тому я думаю, що для брандмауера вам навіть не потрібно робити це "відсутнє" вище, брандмауер все одно автоматично закриється.
Як я можу досягти цих речей за допомогою Ansible?
ensure => present
наensure => absent
який також буде ... Як зробити те ж саме з ansible" тощо. Ідеально з прикладом усього, що ви вже пробували.