厨师 – 资源
厨师 – 资源
Chef 资源代表处于其所需状态的操作系统的一部分。它是一种配置策略声明,它描述了希望使用资源提供者将当前配置带到的节点的期望状态。它有助于使用 Chef 的 Ohai 机制了解目标机器的当前状态。它还有助于定义使目标机器达到该状态所需执行的步骤。资源分组在描述工作配置的配方中。
在 Chef 的情况下,chef::Platform 映射每个节点的提供者和平台版本。在每次 Chef-client 运行开始时,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
所有资源共享一组通用的功能、操作、属性、条件执行、通知和相关的操作路径。
Actions | 的:没有什么动作可以与任何资源或自定义资源使用。 |
Properties | ignore_failure、provider、retries、retry_delay 和 support 属性可用于任何资源或自定义资源。 |
Guards | not_if 和 only_if 条件执行可用于在某些资源周围放置额外的保护,以便它们仅在满足条件时运行。 |
Guard Interpreters | 使用基于脚本的资源评估字符串命令:bash、csh、perl、powershell_script、python或ruby。 |
Notifications | 通知和订阅通知可用于任何资源。 |
Relative Paths | #{ENV[‘HOME’]} 相对路径可用于任何资源。 |
Windows File Security | 该模板文件,remote_file,cookbook_file,目录和remote_directory资源支持的食谱中使用继承和访问控制列表(ACL)的。 |
Run in Compile Phase | 有时需要在所有其他资源之前或在所有资源添加到资源集合之后运行资源。 |
可用资源
apt_package
使用apt_package资源管理 Debian 和 Ubuntu 平台的软件包。
重击
使用bash资源通过 Bash 解释器执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护此资源的幂等性。
批
使用批处理资源通过 cmd.exe 解释器执行批处理脚本。该批次的资源创建并执行一个临时文件(类似于如何脚本资源的行为),而不是运行命令行内。
从和属性(创建,CWD,环境,组,路径,超时和用户),该资源继承操作(:什么:跑)执行资源。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用not_if和only_if来保护此资源的幂等性。
bff_package
使用bff_package资源通过installp实用程序管理 AIX 平台的包。从本地文件安装包时,必须使用remote_file或cookbook_file 资源将其添加到节点。
厨师宝石
使用chef_gem资源仅为专用于Chef-Client 的Ruby 实例安装gem。从本地文件安装 gem 时,必须使用remote_file或cookbook_file资源将其添加到节点。
该chef_gem资源与所有相同的属性和选项的作品gem_package资源,但不接受gem_binary属性,因为它总是使用厨师客户端在其下运行的CurrentGemEnvironment。除了执行类似于gem_package资源的操作之外,chef_gem资源还执行上述操作。
食谱文件
使用cookbook_file资源将文件从COOKBOOK_NAME/files/ 的子目录传输到位于运行ChefClient 的主机上的指定路径。
该文件是根据文件特性选择的,这允许基于主机名、主机平台(操作系统、发行版或适当的)或平台版本使用不同的源文件。位于 COOKBOOK_NAME/files/default 子目录中的文件可以在任何平台上使用。
定时任务
使用 cron 资源来管理基于时间的作业调度的 cron 条目。如果未提供,计划的属性将默认为 &ast。cron 资源需要访问 crontab 程序,通常是 cron。
Csh
使用 csh 资源通过 csh 解释器执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。
部署
使用部署资源来管理和控制部署。这是一种流行的资源,但也很复杂,具有最多的属性、多个提供程序、回调的增加的复杂性,以及支持从配方内修改布局的四个属性。
目录
使用目录资源来管理目录,这是一个文件夹层次结构,包含存储在计算机上的所有信息。根目录是顶级目录,在该目录下组织目录的其余部分。
该目录资源使用的名称属性来指定目录中的一个位置的路径。通常,需要访问目录中该位置的权限。
dpkg_package
使用dpkg_package资源来管理dpkg平台的包。从本地文件安装包时,必须使用remote_file或cookbook_file资源将其添加到节点。
easy_install_package
使用easy_install_package资源管理 Python 平台的包。
环境
使用env资源管理 Microsoft Windows 中的环境密钥。设置环境密钥后,必须重新启动 Microsoft Windows,然后任务计划程序才能使用环境密钥。
erl_call
使用erl_call资源连接到位于分布式 Erlang 系统中的节点。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护此资源的幂等性。
执行
使用execute资源执行单个命令。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用not_if和only_if来保护此资源的幂等性。
文件
使用文件资源直接在节点上管理文件。
freebsd_package
使用freebsd_package资源来管理 FreeBSD 平台的包。
gem_package
使用gem_package资源来管理只包含在配方中的 gem 包。从本地文件安装包时,必须使用remote_file或cookbook_file资源将其添加到节点。
吉特
使用git资源来管理存在于 git 存储库中的源代码控制资源。使用 git 资源中的所有功能需要 git 版本 1.6.5(或更高版本)。
团体
使用组资源来管理本地组。
homebrew_package
使用homebrew_package资源管理 Mac OS X 平台的包。
http_request
使用http_request资源发送带有任意消息的 HTTP 请求(GET、PUT、POST、DELETE、HEAD 或 OPTIONS)。当需要自定义回调时,此资源通常很有用。
如果配置
使用ifconfig资源来管理接口。
ips_package
使用ips_package资源在 Solaris 11 平台上管理软件包(使用映像包管理系统 (IPS))。
克什
使用ksh资源通过 Korn shell (ksh) 解释器执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。
关联
使用链接资源创建符号链接或硬链接。
日志
使用日志资源创建日志条目。日志资源的行为与任何其他资源一样:在编译阶段构建到资源集合中,然后在执行阶段运行。(要创建未内置到资源集合中的日志条目,请使用 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_script
使用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_package
使用rpm_package资源来管理 RPM 包管理器平台的包。
红宝石
使用ruby资源通过 Ruby 解释器执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。
ruby_block
使用ruby_block资源在 Chef-Client 运行期间执行 Ruby 代码。ruby_block 资源中的 Ruby 代码在收敛期间与其他资源一起评估,而 ruby_block 资源之外的 Ruby 代码在其他资源之前评估,因为配方被编译。
脚本
使用脚本资源通过指定的解释器(例如 Bash、csh、Perl、Python 或 Ruby)执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。
服务
使用服务资源来管理服务。
smart_os_package
使用smartos_package资源管理 SmartOS 平台的包。
solaris_package
该solaris_package资源被用于管理Solaris平台的软件包。
颠覆
使用subversion资源来管理存在于 Subversion 存储库中的源代码控制资源。
模板
通过将文件从 COOKBOOK_NAME/templates/ 的子目录传输到运行 Chef-Client 的主机上的指定路径,使用模板资源来管理使用嵌入式 Ruby (ERB) 模板的文件的内容。此资源包括来自文件资源的操作和属性。模板资源管理的模板文件遵循与 remote_file 和文件资源相同的文件特性规则。
用户
使用用户资源添加用户、更新现有用户、删除用户以及锁定/解锁用户密码。
windows_package
使用windows_package资源管理 Microsoft Windows 平台的 Microsoft 安装程序包 (MSI) 包。
windows_service
使用windows_service资源管理 Microsoft Windows 平台上的服务。
yum_package
使用yum_package资源为 Red Hat 和 CentOS 平台安装、升级和删除带有 Yum 的软件包。yum_package 资源能够解析包的数据,就像 Yum 从命令行运行时所做的那样。这允许有多种安装包的选项,例如最低版本、虚拟提供和库名称。