Chef infra 如何从chef运行中排除某个资源更新?

Chef infra 如何从chef运行中排除某个资源更新?,chef-infra,chef-solo,Chef Infra,Chef Solo,从命令行忽略特定资源的最简单方法是什么 我正在使用chef solo 我们产品的一些用户希望通过chef run保持某个文件或模板不变,以便进行测试,我希望能够以一种灵活的方式实现此功能。您可以使用操作进行模板 action :create_if_missing 这样,仅当文件不存在时才会创建模板 如果要指定更复杂的语句,请仅在以下情况下使用 您可以将属性设置为 default['template']['exclude_FILENAME'] = true 然后在Chef代码中使用它。这样,您

从命令行忽略特定资源的最简单方法是什么

我正在使用
chef solo


我们产品的一些用户希望通过chef run保持某个文件或模板不变,以便进行测试,我希望能够以一种灵活的方式实现此功能。

您可以使用操作进行模板

action :create_if_missing
这样,仅当文件不存在时才会创建模板

如果要指定更复杂的语句,请仅在以下情况下使用

您可以将属性设置为

default['template']['exclude_FILENAME'] = true
然后在Chef代码中使用它。这样,您就可以在attributes目录中拥有文件excludes.rb,并根据需要更改这些选项

简单的例子:

template 'Some template you want to decide if it should be excluded' do
    path       '/tmp/somefile' 
    source     'template.erb'
    only_if     { node['template']['exclude_FILENAME'] }
end
这不是从命令行忽略,但您可以给它们excludes.rb文件进行编辑。。。或者编写简单的shell脚本,询问用户是否要排除资源并将信息存储在此文件中


我希望这会有所帮助。

实现这一点的一种方法是使用overlay/union文件系统(例如OverlayFS、AUFS)。覆盖文件系统将多个文件夹中的视图合并到一个文件夹中。您可以在基本文件夹上正常运行chef,然后添加一个覆盖,将所需文件保持为静态文件。然后,您可以在此基础上进行测试。如果要在这些文件上写入,请在其上添加另一层可写覆盖层,以便它捕获写入。要重置,请销毁可写层;要修改基础图像,请取消应用层,重新运行chef以修改基础图像,然后重新应用覆盖

这绝对不是用厨师特有的东西

template 'Some template you want to decide if it should be excluded' do
    path       '/tmp/somefile' 
    source     'template.erb'
    only_if     { node['template']['exclude_FILENAME'] }
end