深入探索原生 Chef 提供者的内部机制
在 Chef 自动化配置管理中,轻量级资源和提供者(LWRP)是强大的工具。此前,我们主要使用 Chef 内置的 cookbook 资源,但当开始使用原生 Ruby 代码创建提供者时,就需要深入了解其内部工作机制。
1. Chef 运行的关键特性
在实现提供者时,有两个关键特性需要考虑:
- 幂等性(Idempotence) :提供者应确保仅在首次需要执行某些操作的 Chef 运行中执行这些操作,后续运行中不会不必要地重复执行。
- 收敛性(Convergence) :提供者要使节点状态更接近食谱代码中定义的状态,而不是远离。
2. 识别资源的期望状态
资源的期望状态可以直接从食谱代码中获取。例如:
package "httpd" do
version "2.2.15-15.el6"
action :install
end
上述代码表明,期望在 Chef 运行后,安装版本为 2.2.15 - 15.el6 的 httpd 包。对于更复杂的资源,如与第三方 API 交互的资源:
dynect_rr "myhost" do
record_type "A"
rdata({ "address" => "1.2.3.4" })
fqdn "myhost.mydomain.com"
customer node["
超级会员免费看
订阅专栏 解锁全文
5

被折叠的 条评论
为什么被折叠?



