厨师 - 资源


Chef 资源代表处于所需状态的操作系统的一部分。它是配置策略的声明,描述了节点的期望状态,用户希望使用资源提供程序将当前配置带到该节点。它有助于使用Chef的Ohai机制了解目标机器的当前状态。它还有助于定义使目标计算机达到该状态所需执行的步骤。这些资源按描述工作配置的配方进行分组。

对于 Chef,chef::Platform 映射每个节点的提供者和平台版本。在每次 Chef 客户端运行开始时,Chef 服务器都会收集所有机器当前状态的详细信息。稍后,Chef 服务器使用这些值来识别正确的提供者。

资源语法

type 'name' do 
   attribute 'value' 
   action :type_of_action 
end

在上面的语法中,“type”是资源类型,“name”是我们要使用的名称。在“do”和“end”块中,我们拥有该资源的属性以及我们需要对该特定资源采取的操作。

我们在配方中使用的每个资源都有自己的一组操作,这些操作在“do”和“end”块内定义。

例子

type 'name' do 
   attribute 'value' 
   action :type_of_action 
end 

所有资源共享一组通用的功能、操作、属性、条件执行、通知和相关操作路径。

行动 :nothing操作可与任何资源或自定义资源一起使用。
特性 ignore_failure、provider、retries、retry_delay 和supports 属性可与任何资源或自定义资源一起使用。
卫兵 not_if 和 only_if 条件执行可用于在某些资源周围放置额外的保护,以便它们仅在满足条件时运行。
警卫翻译 使用基于脚本的资源评估字符串命令:bash、csh、perl、powershell_script、pythonruby​​ 。
通知 通知和订阅通知可与任何资源一起使用。
相对路径 #{ENV['HOME']} 相对路径可与任何资源一起使用。
Windows 文件安全 template 、file、remote_file、cookbook_file、directoryremote_directory资源支持在配方中使用继承和访问控制列表(ACL)。
在编译阶段运行 有时,某个资源需要在所有其他资源之前运行,或者在所有资源添加到资源集合之后运行。

可用资源

apt_package

使用apt_package资源管理 Debian 和 Ubuntu 平台的软件包。

重击

使用bash资源通过 Bash 解释器执行脚本。该资源还可以使用执行资源可用的任何操作和属性。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用 not_if 和 only_if 来保护此资源的幂等性。

使用批处理资源通过 cmd.exe 解释器执行批处理脚本。批处理资源创建并执行临时文件(类似于脚本资源的Behave方式),而不是内联运行命令。

此资源从执行资源继承操作(:run 和:nothing)和属性(创建、cwd、环境、组、路径、超时和用户)。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用not_ifonly_if来保护此资源的幂等性。

bff_package

使用bff_package资源通过installp实用程序来管理 AIX 平台的包。从本地文件安装包时,必须使用remote_filecookbook_file 资源将其添加到节点。

厨师宝石

使用Chef_gem资源仅为 Chef-Client 专用的 Ruby 实例安装 gem。当从本地文件安装gem时,必须使用remote_filecookbook_file资源将其添加到节点。

Chef_gem资源使用与gem_package资源相同的属性和选项,但不接受 gem_binary 属性,因为它始终使用 Chef-Client 运行所在的 CurrentGemEnvironment 除了执行与gem_package资源类似的操作之外,chef_gem资源还执行上述操作。

食谱文件

使用cookbook_file资源将文件从 COOKBOOK_NAME/files/ 的子​​目录传输到运行 ChefClient 的主机上的指定路径。

该文件是根据文件特异性来选择的,这允许根据主机名、主机平台(操作系统、发行版或适当的)或平台版本使用不同的源文件。位于 COOKBOOK_NAME/files/default 子目录中的文件可以在任何平台上使用。

克朗

使用 cron 资源来管理 cron 条目以进行基于时间的作业调度。如果未提供,计划的属性将默认为 *。cron 资源需要访问 crontab 程序,通常是 cron。

切石

使用 csh 资源通过 csh 解释器执行脚本。该资源还可以使用执行资源可用的任何操作和属性。

使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用 not_if 和 only_if 来保护此资源的幂等性。

部署

使用部署资源来管理和控制部署。这是一种流行的资源,但也很复杂,具有最多的属性、多个提供程序、增加的回调复杂性,以及支持在配方中进行布局修改的四个属性。

目录

使用目录资源来管理目录,目录是包含计算机上存储的所有信息的文件夹层次结构。根目录是顶层目录,目录的其余部分都组织在根目录下。

目录资源使用 name 属性来指定目录中某个位置路径。通常,需要访问目录中该位置的权限。

dpkg_package

使用dpkg_package资源来管理dpkg平台的包。从本地文件安装包时,必须使用remote_filecookbook_file资源将其添加到节点。

简易安装包

使用easy_install_package资源来管理 Python 平台的包。

环境

使用env资源来管理 Microsoft Windows 中的环境密钥。设置环境密钥后,必须重新启动 Microsoft Windows,任务计划程序才能使用该环境密钥。

erl_call

使用erl_call资源连接到位于分布式 Erlang 系统内的节点。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用 not_if 和 only_if 来保护此资源的幂等性。

执行

使用执行资源来执行单个命令。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用not_ifonly_if来保护此资源的幂等性。

文件

使用文件资源直接管理节点上的文件。

freebsd_package

使用freebsd_package资源来管理 FreeBSD 平台的包。

宝石包

使用gem_package资源来管理仅包含在配方中的 gem 包。从本地文件安装包时,必须使用remote_filecookbook_file资源将其添加到节点。

git

使用git资源来管理 git 存储库中存在的源代码控制资源。需要 git 版本 1.6.5(或更高版本)才能使用 git 资源中的所有功能。

团体

使用资源来管理本地组。

自制程序包

使用homebrew_package资源来管理 Mac OS X 平台的包。

http_请求

使用http_request资源发送带有任意消息的 HTTP 请求(GET、PUT、POST、DELETE、HEAD 或 OPTIONS)。当需要自定义回调时,此资源通常很有用。

如果配置

使用ifconfig资源来管理接口。

ips_包

使用ips_package资源在 Solaris 11 平台上管理包(使用映像打包系统 (IPS))。

克什

使用ksh资源通过 Korn shell (ksh) 解释器执行脚本。该资源还可以使用执行资源可用的任何操作和属性。

使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用 not_if 和 only_if 来保护此资源的幂等性。

关联

使用链接资源创建符号或硬链接。

日志

使用日志资源创建日志条目。日志资源的Behave与任何其他资源一样:在编译阶段构建到资源集合中,然后在执行阶段运行。(要创建未内置到资源集合中的日志条目,请使用 Chef::Log 而不是日志资源)

macports_package

使用 macports_package 资源来管理 Mac OS X 平台的包。

姆达德姆

使用mdadm资源通过 mdadm 实用程序管理 Linux 环境中的 RAID 设备。mdadm 提供程序将创建并组装一个阵列,但它不会创建用于在重新启动时保留该阵列的配置文件。

如果需要配置文件,则必须通过指定具有正确阵列布局的模板,然后使用安装提供程序创建文件系统表 (fstab) 条目来完成。

使用挂载资源来管理已挂载的文件系统。

奥海

使用ohai资源在节点上重新加载 Ohai 配置。这允许更改系统属性的菜谱(例如添加用户的菜谱)稍后在厨师客户端运行期间引用这些属性。

包裹

使用资源来管理包。从本地文件(例如使用 RubyGems、dpkg 或 RPM 包管理器)安装包时,必须使用remote_file 或 cookbook_file 资源将该文件添加到节点。

pacman_package

使用pacman_package资源在 Arch Linux 平台上管理包(使用 pacman)。

powershell_脚本

使用powershell_script资源通过 Windows PowerShell 解释器执行脚本,这与脚本和基于脚本的资源(bash、csh、perl、python 和 ruby​​)的使用方式非常相似。powershell_script 特定于 Microsoft Windows 平台和 Windows PowerShell 解释器。

Python

使用python资源通过 Python 解释器执行脚本。该资源还可以使用执行资源可用的任何操作和属性。

使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用 not_if 和 only_if 来保护此资源的幂等性。

重启

使用重新启动资源重新启动节点,这是某些平台上某些安装的必要步骤。该资源支持在 Microsoft Windows、Mac OS X 和 Linux 平台上使用。

注册表键

使用registry_key资源在Microsoft Windows 中创建和删除注册表项。

远程目录

使用remote_directory资源将目录从说明书增量传输到节点。从说明书复制的目录应位于 COOKBOOK_NAME/files/default/REMOTE_DIRECTORY 下。

Remote_directory 资源将遵循文件特异性。

远程文件

使用remote_file资源通过文件特异性从远程位置传输文件。该资源与文件资源类似。

路线

使用路由资源来管理Linux环境中的系统路由表。

rpm_包

使用rpm_package资源来管理 RPM 包管理器平台的包。

Ruby

使用Ruby资源通过 Ruby 解释器执行脚本。该资源还可以使用执行资源可用的任何操作和属性。

使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用 not_if 和 only_if 来保护此资源的幂等性。

Ruby块

使用ruby​​_block资源在 Chef-Client 运行期间执行 Ruby 代码。ruby_block 资源中的 Ruby 代码在收敛期间与其他资源一起评估,而 ruby​​_block 资源外部的 Ruby 代码在编译配方时先于其他资源评估。

脚本

使用脚本资源可以使用指定的解释器(例如 Bash、csh、Perl、Python 或 Ruby)执行脚本。该资源还可以使用执行资源可用的任何操作和属性。

使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于其运行环境而言是唯一的。使用 not_if 和 only_if 来保护此资源的幂等性。

服务

使用服务资源来管理服务。

智能操作系统包

使用smartos_package资源来管理 SmartOS 平台的包。

Solaris_package

Solaris_package资源用于管理 Solaris 平台的软件包

颠覆

使用Subversion资源来管理 Subversion 存储库中存在的源代码控制资源。

模板

通过将文件从 COOKBOOK_NAME/templates/ 的子​​目录传输到位于运行 Chef-Client 的主机上的指定路径,可以使用模板资源来管理使用嵌入式 Ruby (ERB) 模板的文件内容该资源包括文件资源中的操作和属性。由模板资源管理的模板文件遵循与remote_file 和文件资源相同的文件特异性规则。

用户

使用用户资源添加用户、更新现有用户、删除用户以及锁定/解锁用户密码。

窗口包

使用windows_package资源管理 Microsoft Windows 平台的 Microsoft 安装程序包 (MSI) 包。

窗口服务

使用windows_service资源可以管理 Microsoft Windows 平台上的服务。

百胜包

使用yum_package资源通过 Yum 在 Red Hat 和 CentOS 平台上安装、升级和删除软件包。yum_package 资源能够解析包的数据,就像从命令行运行 Yum 时所做的那样。这允许安装包的多种选项,例如最低版本、虚拟提供和库名称。