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