jayunit100 Asked: 2013-07-24 12:26:58 +0800 CST2013-07-24 12:26:58 +0800 CST 2013-07-24 12:26:58 +0800 CST 您可以取消应用木偶清单操作吗? 772 我应用了一个 puppet 清单,它又包含一个 puppet 模块,该模块将几个实体添加到 /opt/... 有没有办法撤销应用木偶模块的效果? 即“木偶模块卸载...” puppet 3 个回答 Voted Best Answer larsks 2013-07-24T12:38:31+08:002013-07-24T12:38:31+08:00 那没有。因为 puppet 模块可以执行任意命令,所以无法确定“unapply”的确切含义。 一些模块附带了相应的反模块来执行卸载(例如foovs foo::disable),但这需要显式编码。 johnshen64 2013-07-24T12:38:42+08:002013-07-24T12:38:42+08:00 虽然会很好,但没有 unapply 可用。 您必须自己编写撤消配方,具体取决于您所做的事情(安装包?然后清除它,添加用户?然后禁用它等) 替换的文件应存储在 clientbucket 中(通常是 /var/lib/puppet/clientbucket,但这取决于您的版本和设置) Rich Burroughs 2013-08-27T23:14:17+08:002013-08-27T23:14:17+08:00 不,没有。模块的作用很大程度上取决于系统的状态。例如,如果您已经在系统上的 /opt 中添加了一些条目怎么办?那么它只会添加缺少的那些。一旦状态发生变化,Puppet 就不再关心之前的状态是什么。下次代理运行时,它只会将系统当前的状态与它认为应该是的状态进行比较,然后将它们排列起来。 Puppet 的关键概念之一是幂等性,这意味着如果您多次运行清单,您总是会得到相同的结果。您要做的是强制执行您想要发生的已知最终状态。如果模块做了您不希望它做的事情,您可以不使用它并编写自己的,也可以修改它。 正如 robbyt 所提到的,在测试新清单时使用 --noop 模式非常有用。在将它们应用到生产系统之前,您还应该在其他地方测试它们。虚拟机非常适合这种测试,您可以拍摄快照,然后在需要时回滚。 您的代理运行应该会记录到系统日志中。您还可以检查日志并查看已完成的操作并手动撤消更改(如果您使用的是 Puppet Enterprise,您还可以通过 Web 控制台查看历史日志)。但是,如果该模块仍然应用于节点,那将无济于事,代理将在再次运行时将其放回原处。
那没有。因为 puppet 模块可以执行任意命令,所以无法确定“unapply”的确切含义。
一些模块附带了相应的反模块来执行卸载(例如
foo
vsfoo::disable
),但这需要显式编码。虽然会很好,但没有 unapply 可用。
您必须自己编写撤消配方,具体取决于您所做的事情(安装包?然后清除它,添加用户?然后禁用它等)
替换的文件应存储在 clientbucket 中(通常是 /var/lib/puppet/clientbucket,但这取决于您的版本和设置)
不,没有。模块的作用很大程度上取决于系统的状态。例如,如果您已经在系统上的 /opt 中添加了一些条目怎么办?那么它只会添加缺少的那些。一旦状态发生变化,Puppet 就不再关心之前的状态是什么。下次代理运行时,它只会将系统当前的状态与它认为应该是的状态进行比较,然后将它们排列起来。
Puppet 的关键概念之一是幂等性,这意味着如果您多次运行清单,您总是会得到相同的结果。您要做的是强制执行您想要发生的已知最终状态。如果模块做了您不希望它做的事情,您可以不使用它并编写自己的,也可以修改它。
正如 robbyt 所提到的,在测试新清单时使用 --noop 模式非常有用。在将它们应用到生产系统之前,您还应该在其他地方测试它们。虚拟机非常适合这种测试,您可以拍摄快照,然后在需要时回滚。
您的代理运行应该会记录到系统日志中。您还可以检查日志并查看已完成的操作并手动撤消更改(如果您使用的是 Puppet Enterprise,您还可以通过 Web 控制台查看历史日志)。但是,如果该模块仍然应用于节点,那将无济于事,代理将在再次运行时将其放回原处。