Chef 资源与提供者:轻量级与重量级的探索
1. 资源与提供者基础
资源可以由一个或多个提供者支持。通常,若要在多个提供者之间进行选择,需要在资源块中指定特定的提供者,示例代码如下:
service "httpd" do
action [:enable, :start]
provider Chef::Provider::Service::Upstart
end
上述代码强制服务资源使用 Service::Upstart 提供者。
2. 自动选择提供者
Chef 的资源和提供者模型的强大特性之一是资源可以有多个提供者。大多数 Chef 内置的 cookbook 资源采用特殊技术,使 Chef 能自动从多个可能的提供者中选出适合特定平台的提供者。例如:
- 在基于 Redhat 的 Linux 操作系统上,包资源会使用与 yum 交互的提供者。
- 在 Debian 系统上,会选择与 apt 交互的提供者。
自动提供者选择由 Chef::Platform 类控制,该类位于 lib/chef/platform/provider_mapping.rb ,它为每个支持的平台定义映射,指定该平台应使用的每个资源类型的默认提供者。以下是 CentOS 的映射示例:
:centos => {
:default => {
:service
超级会员免费看
订阅专栏 解锁全文
31

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



