- Chef 教程
- Chef - 首页
- Chef - 概述
- Chef - 架构
- Chef - 版本控制系统设置
- Chef - 工作站设置
- Chef - 客户端设置
- Chef - Test Kitchen 设置
- Chef - Knife 设置
- Chef - Solo 设置
- Chef - Cookbook
- Chef - Cookbook 依赖
- Chef - 角色
- Chef - 环境
- Chef - Chef-Client 作为守护进程
- Chef - Chef-Shell
- Chef - 测试 Cookbook
- Chef - Foodcritic
- Chef - ChefSpec
- 使用 Test Kitchen 测试 Cookbook
- Chef - 节点
- Chef - Chef-Client 运行
- 高级 Chef
- 动态配置菜谱
- Chef - 模板
- Chef - Chef DSL 中的纯 Ruby 代码
- Chef - 菜谱中的 Ruby Gems
- Chef - 库
- Chef - 定义
- Chef - 环境变量
- Chef - 数据包
- Chef - 数据包脚本
- Chef - 跨平台 Cookbook
- Chef - 资源
- 轻量级资源提供程序
- Chef - 蓝图
- Chef - 文件和包
- Chef - 社区 Cookbook
- Chef 有用资源
- Chef - 快速指南
- Chef - 有用资源
- Chef - 讨论
Chef - 资源
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
所有资源共享一组通用的功能、操作、属性、条件执行、通知和相关的操作路径。
| 操作 | :nothing 操作可用于任何资源或自定义资源。 |
| 属性 | ignore_failure、provider、retries、retry_delay 和 supports 属性可用于任何资源或自定义资源。 |
| 保护条件 | not_if 和 only_if 条件执行可用于在某些资源周围添加额外的保护条件,以便只有在满足条件时才运行它们。 |
| 保护条件解释器 | 使用基于脚本的资源(bash、csh、perl、powershell_script、python或ruby)评估字符串命令。 |
| 通知 | notifies 和 subscribes 通知可用于任何资源。 |
| 相对路径 | #{ENV['HOME']} 相对路径可用于任何资源。 |
| Windows 文件安全 | template、file、remote_file、cookbook_file、directory和remote_directory资源支持在菜谱中使用继承和访问控制列表 (ACL)。 |
| 在编译阶段运行 | 有时需要在其他所有资源之前或在将所有资源添加到资源集合之后运行资源。 |
可用资源
apt_package
使用apt_package资源管理 Debian 和 Ubuntu 平台的包。
Bash
使用bash资源使用 Bash 解释器执行脚本。此资源还可以使用execute资源可用的任何操作和属性。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用 not_if 和 only_if 来保护此资源以实现幂等性。
Batch
使用batch资源使用 cmd.exe 解释器执行批处理脚本。batch资源创建并执行一个临时文件(类似于script资源的行为),而不是内联运行命令。
此资源继承自execute资源的操作(:run 和 :nothing)和属性(creates、cwd、environment、group、path、timeout 和 user)。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用not_if和only_if来保护此资源以实现幂等性。
bff_package
使用bff_package资源使用installp实用程序管理 AIX 平台的包。从本地文件安装包时,必须使用remote_file或cookbook_file资源将其添加到节点。
chef_gem
使用chef_gem资源仅为专用于 Chef-Client 的 Ruby 实例安装 gem。从本地文件安装 gem 时,必须使用remote_file或cookbook_file资源将其添加到节点。
chef_gem资源与gem_package资源使用相同的属性和选项,但不接受 gem_binary 属性,因为它始终使用 Chef-Client 正在运行的 CurrentGemEnvironment。除了执行类似于gem_package资源的操作外,chef_gem资源还执行上述操作。
cookbook_file
使用cookbook_file资源将文件从 COOKBOOK_NAME/files/ 的子目录传输到运行 ChefClient 的主机上的指定路径。
根据文件规范选择文件,允许根据主机名、主机平台(操作系统、发行版或适当时)或平台版本使用不同的源文件。位于 COOKBOOK_NAME/files/default 子目录中的文件可在任何平台上使用。
Cron
使用 cron 资源管理基于时间的作业调度的 cron 条目。如果未提供计划的属性,则默认为 *。cron 资源需要访问 crontab 程序,通常为 cron。
Csh
使用 csh 资源使用 csh 解释器执行脚本。此资源还可以使用 execute 资源可用的任何操作和属性。
使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用 not_if 和 only_if 来保护此资源以实现幂等性。
Deploy
使用deploy资源管理和控制部署。这是一个流行的资源,但也比较复杂,拥有最多的属性、多个提供程序、回调的额外复杂性,以及四个支持从菜谱中修改布局的属性。
Directory
使用directory资源管理目录,它是由构成计算机上所有存储信息的一系列文件夹组成的层次结构。根目录是顶级目录,其余目录都在其下组织。
directory资源使用 name 属性指定目录中位置的路径。通常需要访问该目录中该位置的权限。
dpkg_package
使用dpkg_package资源管理dpkg平台的包。从本地文件安装包时,必须使用remote_file或cookbook_file资源将其添加到节点。
easy_install_package
使用easy_install_package资源管理 Python 平台的包。
Env
使用env资源管理 Microsoft Windows 中的环境键。设置环境键后,必须重新启动 Microsoft Windows 才能使任务计划程序可以使用该环境键。
erl_call
使用erl_call资源连接到分布式 Erlang 系统中的节点。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用 not_if 和 only_if 来保护此资源以实现幂等性。
Execute
使用execute资源执行单个命令。使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用not_if和only_if来保护此资源以实现幂等性。
File
使用file资源直接管理节点上的文件。
freebsd_package
使用freebsd_package资源管理 FreeBSD 平台的包。
gem_package
使用gem_package资源管理仅包含在菜谱中的 gem 包。从本地文件安装包时,必须使用remote_file或cookbook_file资源将其添加到节点。
Git
使用git资源管理 git 存储库中存在的源代码控制资源。需要 git 版本 1.6.5(或更高版本)才能使用 git 资源中的所有功能。
Group
使用group资源管理本地组。
homebrew_package
使用homebrew_package资源管理 Mac OS X 平台的包。
http_request
使用http_request资源发送具有任意消息的 HTTP 请求 (GET、PUT、POST、DELETE、HEAD 或 OPTIONS)。当需要自定义回调时,此资源通常很有用。
Ifconfig
使用ifconfig资源管理接口。
ips_package
使用ips_package资源管理 Solaris 11 平台上的包(使用图像打包系统 (IPS))。
Ksh
使用ksh资源使用 Korn shell (ksh) 解释器执行脚本。此资源还可以使用 execute 资源可用的任何操作和属性。
使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用 not_if 和 only_if 来保护此资源以实现幂等性。
Link
使用link资源创建符号链接或硬链接。
Log
使用log资源创建日志条目。log 资源的行为类似于任何其他资源:在编译阶段构建到资源集合中,然后在执行阶段运行。(要创建未构建到资源集合中的日志条目,请使用 Chef::Log 而不是 log 资源)
macports_package
使用 macports_package 资源管理 Mac OS X 平台的包。
Mdadm
使用mdadm资源在Linux环境中使用mdadm实用程序管理RAID设备。mdadm提供程序将创建和组装阵列,但不会创建用于在重新引导后持久化阵列的配置文件。
如果需要配置文件,则必须通过指定具有正确阵列布局的模板,然后使用挂载提供程序创建文件系统表(fstab)条目来完成。
挂载
使用mount资源管理已挂载的文件系统。
Ohai
使用ohai资源重新加载节点上的Ohai配置。这允许更改系统属性的菜谱(例如添加用户的菜谱)在chef-client运行的后期引用这些属性。
包
使用package资源管理包。当从本地文件安装包时(例如使用RubyGems、dpkg或RPM包管理器),必须使用remote_file或cookbook_file资源将文件添加到节点。
pacman_package
使用pacman_package资源在Arch Linux平台上管理包(使用pacman)。
powershell_script
使用powershell_script资源使用Windows PowerShell解释器执行脚本,这与使用script和基于脚本的资源(bash、csh、perl、python和ruby)的方式非常相似。powershell_script资源特定于Microsoft Windows平台和Windows PowerShell解释器。
Python
使用python资源使用Python解释器执行脚本。此资源还可以使用execute资源可用的任何操作和属性。
使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用 not_if 和 only_if 来保护此资源以实现幂等性。
重启
使用reboot资源重启节点,这是某些平台上某些安装的必要步骤。此资源支持在Microsoft Windows、Mac OS X和Linux平台上使用。
registry_key
使用registry_key资源创建和删除Microsoft Windows中的注册表项。
remote_directory
使用remote_directory资源将目录从cookbook增量传输到节点。从cookbook复制的目录应位于COOKBOOK_NAME/files/default/REMOTE_DIRECTORY下。
remote_directory资源将遵守文件特异性。
remote_file
使用remote_file资源使用文件特异性从远程位置传输文件。此资源类似于file资源。
路由
使用route资源管理Linux环境中的系统路由表。
rpm_package
使用rpm_package资源管理RPM包管理器平台的包。
Ruby
使用ruby资源使用Ruby解释器执行脚本。此资源还可以使用execute资源可用的任何操作和属性。
使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用 not_if 和 only_if 来保护此资源以实现幂等性。
ruby_block
使用ruby_block资源在Chef-Client运行期间执行Ruby代码。ruby_block资源中的Ruby代码在收敛期间与其他资源一起评估,而ruby_block资源之外的Ruby代码在编译菜谱时,在其他资源之前进行评估。
脚本
使用script资源使用指定的解释器(例如Bash、csh、Perl、Python或Ruby)执行脚本。此资源还可以使用execute资源可用的任何操作和属性。
使用此资源执行的命令(本质上)不是幂等的,因为它们通常对于运行它们的特定环境是唯一的。使用 not_if 和 only_if 来保护此资源以实现幂等性。
服务
使用service资源管理服务。
smart_os_package
使用smartos_package资源管理SmartOS平台的包。
solaris_package
solaris_package资源用于管理Solaris平台的包。
Subversion
使用subversion资源管理Subversion存储库中存在的源代码控制资源。
模板
使用template资源通过将文件从COOKBOOK_NAME/templates/的子目录传输到运行Chef-Client的主机上的指定路径,使用嵌入式Ruby (ERB)模板管理文件的内容。此资源包含来自file资源的操作和属性。由template资源管理的模板文件遵循与remote_file和file资源相同的文件特异性规则。
用户
使用user资源添加用户、更新现有用户、删除用户以及锁定/解锁用户密码。
windows_package
使用windows_package资源管理Microsoft Windows平台的Microsoft Installer Package (MSI)包。
windows_service
使用windows_service资源管理Microsoft Windows平台上的服务。
yum_package
使用yum_package资源使用Yum为Red Hat和CentOS平台安装、升级和删除包。yum_package资源能够解析包的provides数据,就像从命令行运行Yum一样。这允许各种安装包的选项,例如最小版本、虚拟provides和库名称。