Назад | Перейти на главную страницу

Можно ли отменить действие марионеточного манифеста?

Я применил марионеточный манифест, который, в свою очередь, включал марионеточный модуль, добавляющий несколько сущностей в / opt / ...

Есть ли способ отменить эффекты примененного марионеточного модуля?

т.е. "удалить модуль марионетки ..."

Нет. Поскольку марионеточный модуль может выполнять произвольные команды, невозможно точно определить, что означает «неприменить».

Некоторые модули поставляются с соответствующим антимодулем, который будет выполнять удаление (например, foo против foo::disable), но для этого требуется явное кодирование.

хотя было бы неплохо, но неприменимых нет в наличии.

вам придется написать рецепт отмены самостоятельно, в зависимости от того, что именно вы сделали (установленный пакет? затем очистить его, добавить пользователя? затем отключить его и т. д.)

замененные файлы должны храниться в clientbucket (обычно / var / lib / puppet / clientbucket, но это зависит от вашей версии и ваших настроек)

Нет, нет. То, что будет делать модуль, может во многом зависеть от состояния вашей системы. Например, что, если у вас уже были некоторые из этих записей, которые были добавлены в / opt в вашей системе? Тогда бы добавил только недостающие. И как только состояние изменилось, Puppet больше не заботится о том, каким было это предыдущее состояние. В следующий раз, когда агент запустится, он просто сравнит текущее состояние системы с тем, что, по его мнению, должно быть, а затем выровняет их.

Одна из ключевых концепций Puppet - идемпотентность, то есть если вы запускаете манифест несколько раз, вы всегда будете получать один и тот же результат. Что вы пытаетесь сделать, так это обеспечить известное конечное состояние, которое вы хотите наступить. Если модуль делает то, чего вы не хотите, вы можете либо не использовать его и написать свое, либо изменить его.

Как упоминал robbyt, использование режима --noop очень полезно при тестировании новых манифестов. Вы также должны попытаться протестировать их в другом месте, прежде чем применять их в своих производственных системах. Виртуальные машины отлично подходят для такого рода тестирования, вы можете сделать снимок и при необходимости откатиться.

Ваш агент должен быть зарегистрирован в системном журнале. Вы также можете изучить журналы и увидеть, что было сделано, и отменить изменения вручную (вы также можете просмотреть исторические журналы через веб-консоль, если вы используете Puppet Enterprise). Но это не поможет, если этот модуль по-прежнему применяется к узлу, агент просто вернет все обратно, когда он снова запустится.