您能取消应用傀儡清单操作吗?

您能取消应用傀儡清单操作吗?

我已经应用了一个 Puppet 清单,它又包含一个 Puppet 模块,该模块向 /opt/ 添加了几个实体...

有没有办法可以撤消应用的傀儡模块的效果?

即“puppet模块卸载...”

答案1

没有。因为 puppet 模块可以执行任意命令,所以无法确定“unapply”的具体含义。

一些模块附带了相应的反模块来执行卸载(例如,foovs foo::disable),但这需要明确的编码。

答案2

虽然这样会很好,但是没有可用的取消申请。

您必须自己编写撤消配方,具体取决于您具体做了什么(安装了包?然后清除它,添加了用户?然后禁用它,等等)

替换的文件应存储在客户端存储桶中(通常为 /var/lib/puppet/clientbucket,但取决于您的版本和设置)

答案3

没有。模块的功能很大程度上取决于系统的状态。例如,如果您已经在系统的 /opt 中添加了一些条目,会怎么样?那么它只会添加缺失的条目。一旦状态发生变化,Puppet 就不再关心之前的状态。下次代理运行时,它只会将系统当前的状态与它认为应该的状态进行比较,然后将它们对齐。

Puppet 的一个关键概念是幂等性,这意味着如果您多次运行清单,最终结果总是相同的。您要做的就是强制执行您希望发生的已知最终状态。如果模块执行了您不希望它执行的操作,您可以不使用它并编写自己的模块,也可以修改它。

正如 robbyt 提到的,在测试新清单时使用 --noop 模式非常有用。在将它们应用到生产系统之前,您还应该在其他地方测试它们。虚拟机非常适合这种测试,您可以拍摄快照,然后在需要时回滚。

您的代理运行应该记录到 syslog 中。您还可以检查日志并查看已完成的操作并手动撤消更改(如果您使用的是 Puppet Enterprise,您还可以通过 Web 控制台查看历史日志)。但如果该模块仍应用于节点,这将无济于事,代理只会在再次运行时将内容恢复原状。

相关内容