如何从 chef 运行 中排除某个资源更新?
How do I exclude a certain resource update from a chef run?
从命令行忽略特定资源的最简单方法是什么?
我正在使用chef-solo
我们产品的一些用户希望由厨师保留某个文件或模板不变-运行 用于测试目的,我希望有一种灵活的方式来实现此功能。
您可以使用 action 作为模板,
action :create_if_missing
这样,只有在文件不存在时才会创建模板。
如果要指定更复杂的语句,请使用only_if
only_if { node[:some_value] }
你可以制作像
这样的属性
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 修改基本图像,然后重新应用叠加层。
这绝不是使用厨师专用的任何东西。
从命令行忽略特定资源的最简单方法是什么?
我正在使用chef-solo
我们产品的一些用户希望由厨师保留某个文件或模板不变-运行 用于测试目的,我希望有一种灵活的方式来实现此功能。
您可以使用 action 作为模板,
action :create_if_missing
这样,只有在文件不存在时才会创建模板。
如果要指定更复杂的语句,请使用only_if
only_if { node[:some_value] }
你可以制作像
这样的属性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 修改基本图像,然后重新应用叠加层。
这绝不是使用厨师专用的任何东西。