📜  Chef-资源

📅  最后修改于: 2020-11-02 03:28:15             🧑  作者: Mango


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

对于Chef,chef :: Platform映射每个节点的提供程序和平台版本。在每次运行Chef-client时,Chef服务器都会收集任何计算机当前状态的详细信息。以后,Chef服务器使用这些值来标识正确的提供程序。

资源语法

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

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

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

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

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

Actions The :nothing action can be used with any resource or custom resource.
Properties The ignore_failure, provider, retries, retry_delay, and supports properties can be used with any resource or custom resources.
Guards The not_if and only_if conditional executions can be used to put additional guards around certain resources, so that they are only run when the condition is met.
Guard Interpreters Evaluates a string command using a script-based resource: bash, csh, perl, powershell_script, python, or ruby.
Notifications The notifies and subscribes notifications can be used with any resource.
Relative Paths The #{ENV[‘HOME’]} relative path can be used with any resource.
Windows File Security The template, file, remote_file, cookbook_file, directory, and remote_directory resources support the use of inheritance and access control lists (ACLs) within recipes.
Run in Compile Phase Sometimes a resource needs to be run before every other resource or after all resources have been added to the resource collection.

可用资源

apt_package

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

重击

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

批量

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

执行资源和属性(创建,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。除了执行类似于gem_package资源的操作外, chef_gem资源还执行上述操作。

cookbook_file

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

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

克龙

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

Csh

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

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

部署

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

目录

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

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

dpkg_package

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

easy_install_package

使用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_package资源来管理仅包含在配方中的gem包。从本地文件安装软件包时,必须使用remote_filecookbook_file资源将其添加到节点。

吉特

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

使用资源来管理本地组。

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))。

sh

使用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配置。这允许更改系统属性的配方(例如添加用户的配方)稍后在Chef-Client运行期间引用这些属性。

使用软件包资源来管理软件包。从本地文件安装软件包时(例如,使用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

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

remote_directory

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

remote_directory资源将遵循文件的特定性。

remote_file

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

路线

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

rpm_package

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

红宝石

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

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

ruby_block

在Chef-Client运行期间,使用ruby_block资源执行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 Installer软件包(MSI)软件包。

windows_service

使用windows_service资源在Microsoft Windows平台上管理服务。

yum_package

使用yum_package资源使用Red Hat和CentOS平台的Yum安装,升级和删除软件包。 yum_package资源能够解析为软件包提供的数据,就像Yum从命令行运行时所做的一样。这样可以使用多种选项来安装软件包,例如最低版本,虚拟产品和库名称。