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 条件执行可用于在某些资源周围放置额外的保护,以便它们仅在满足条件时运行。
保护解释器 使用基于 script 的资源评估字符串命令:bash、csh、perl、powershell_script、python、ruby。 td>
通知 通知和订阅通知可用于任何资源。
相对路径 #{ENV['HOME']} 相对路径可用于任何资源。
Windows 文件安全 模板、文件、remote_file、cookbook_file、目录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)和属性(创建、cwd、环境、组、路径、超时和用户)。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_ifonly_if 来保护这个资源的幂等性。

bff_package

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

chef_gem

使用 chef_gem 资源仅为专用于 Chef-Client 的 Ruby 实例安装 gem。从本地文件安装 gem 时,必须使用 remote_filecookbook_file 资源将其添加到节点。
chef_gem 资源使用与 gem_package 资源相同的所有属性和选项,但不接受 gem_binary 属性,因为它始终使用 CurrentGemEnvironment Chef-Client 正在运行。除了执行类似于 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 解释器执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。

Deploy

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

Directory

使用 directory 资源来管理目录,这是一个文件夹层次结构,包含存储在计算机上的所有信息。根目录是顶层,目录的其余部分都在根目录下组织。
directory 资源使用 name 属性指定目录中某个位置的路径。通常,需要访问目录中该位置的权限。

dpkg_package

使用 dpkg_package 资源来管理 dpkg 平台的包。从本地文件安装包时,必须使用 remote_filecookbook_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_ifonly_if 来保护这个资源的幂等性。

file

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

freebsd_package

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

gem_package

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

Git

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

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

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

Ksh

使用 ksh 资源通过 Korn shell (ksh) 解释器执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。

Link

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

Log

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

macports_package

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

Mdadm

使用 mdadm 资源在 Linux 环境中使用 mdadm 实用程序管理 RAID 设备。 mdadm 提供程序将创建和组装一个阵列,但它不会创建用于在重新启动时保留阵列的配置文件。
如果需要配置文件,则必须通过指定具有正确阵列布局的模板,然后使用挂载提供程序创建文件系统表 (fstab) 条目来完成。

Mount

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

Ohai

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

Package

使用 package 资源来管理包。从本地文件(例如使用 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 来保护这个资源的幂等性。

Reboot

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

registry_key

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

remote_directory

使用 remote_directory 资源以增量方式将目录从说明书传输到节点。从说明书复制的目录应位于 COOKBOOK_NAME/files/default/REMOTE_DIRECTORY 下。
remote_directory 资源将服从文件特异性。

remote_file

使用 remote_file 资源使用文件特异性从远程位置传输文件。此资源类似于文件资源。

Route

在Linux环境下使用路由资源管理系统路由表。

rpm_package

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

Ruby

使用 ruby 资源通过 Ruby 解释器执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。

ruby_block

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

Script

使用脚本资源通过指定的解释器(例如 Bash、csh、Perl、Python 或 Ruby)执行脚本。此资源还可以使用可执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常是运行它们的环境所独有的。使用 not_if 和 only_if 来保护这个资源的幂等性。

Service

使用 service 资源来管理服务。

smart_os_package

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

solaris_package

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

Subversion

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

Template

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

User

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

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 从命令行运行时所做的那样。这允许有多种安装包的选项,例如最低版本、虚拟提供和库名称。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4