如何在 Chef 食谱中声明 state_attrs
How to declare state_attrs in Chef recipe
我需要跟踪 运行 一组食谱的历史记录。
Chef 报告提供了一个很好的基础,它可以捕获食谱 运行 历史以及更新的资源。但是我仍然需要捕获更新的资源的初始状态和最终状态。
对于某些食谱,它使用一些默认资源,例如文件,然后在
Chef Reporting -> Run History -> Details -> Parameters
它可以显示初始状态和最终状态,例如它们是文件的校验和、模式、组、所有者属性。这是相当不错的。
但对于其他食谱,它使用的是我自己开发的新资源,没有初始和最终状态。正如 chef reporting document 中指定的,“state_attrs” 用于定义要报告给 chef 报告服务器的属性。
问题是我做了一个快速测试,使用 state_attrs 声明了 2 个属性,但它们仍然没有显示在 运行 历史初始和最终状态中...
你能告诉我如何添加state_attrs吗?
或者如果有其他方法可以跟踪更改资源的初始和最终状态,也非常感谢!我尝试使用报告处理程序,但在报告处理程序中,我无法获取初始状态,有一个 'before' 字段,但它是空的...
非常感谢!
算出来了,要达到目的有3个步骤:
- 在资源
中声明state_attrs
- 有new_resource和current_resource对象,需要
通过在
资源提供者,例如:
def load_current_resource
@current_resource = Chef::Resource::MyResource.new(@new_resource.name)
end
- 在更新的地方给current_resource赋值。为了
示例:
@current_resource.maxage(smaxdays.to_s)
这是一个检查用户密码最长使用期限的例子。它将将从影子文件中检索到的 smaxdays 设置为 current_resource.
然后将maxage发送给chef reporting,数据如下:
res_initial_state: {"maxage":"7777"}
res_final_state: {"maxage":"90"}
这正是我想要捕捉的初始状态和最终状态。
我需要跟踪 运行 一组食谱的历史记录。
Chef 报告提供了一个很好的基础,它可以捕获食谱 运行 历史以及更新的资源。但是我仍然需要捕获更新的资源的初始状态和最终状态。
对于某些食谱,它使用一些默认资源,例如文件,然后在
Chef Reporting -> Run History -> Details -> Parameters
它可以显示初始状态和最终状态,例如它们是文件的校验和、模式、组、所有者属性。这是相当不错的。
但对于其他食谱,它使用的是我自己开发的新资源,没有初始和最终状态。正如 chef reporting document 中指定的,“state_attrs” 用于定义要报告给 chef 报告服务器的属性。
问题是我做了一个快速测试,使用 state_attrs 声明了 2 个属性,但它们仍然没有显示在 运行 历史初始和最终状态中...
你能告诉我如何添加state_attrs吗?
或者如果有其他方法可以跟踪更改资源的初始和最终状态,也非常感谢!我尝试使用报告处理程序,但在报告处理程序中,我无法获取初始状态,有一个 'before' 字段,但它是空的...
非常感谢!
算出来了,要达到目的有3个步骤:
- 在资源 中声明state_attrs
- 有new_resource和current_resource对象,需要 通过在 资源提供者,例如:
def load_current_resource @current_resource = Chef::Resource::MyResource.new(@new_resource.name) end
- 在更新的地方给current_resource赋值。为了 示例:
@current_resource.maxage(smaxdays.to_s)
这是一个检查用户密码最长使用期限的例子。它将将从影子文件中检索到的 smaxdays 设置为 current_resource.
然后将maxage发送给chef reporting,数据如下:
res_initial_state: {"maxage":"7777"}
res_final_state: {"maxage":"90"}
这正是我想要捕捉的初始状态和最终状态。