📅  最后修改于: 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资源来管理Debian和Ubuntu平台的软件包。
使用bash资源来使用Bash解释器执行脚本。此资源还可以使用执行资源可用的任何操作和属性。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
使用批处理资源来使用cmd.exe解释器执行批处理脚本。批处理资源创建并执行一个临时文件(类似于脚本资源的行为),而不是内联运行命令。
从执行资源和属性(创建,CWD,环境,组,路径,超时和用户),该资源继承操作(:什么:跑)。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
使用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条目以进行基于时间的作业调度。计划的属性将默认为*。如果未提供。 cron资源需要访问crontab程序,通常是cron。
使用csh资源来使用csh解释器执行脚本。此资源还可以使用执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
使用部署资源来管理和控制部署。这是一种流行的资源,但也很复杂,具有最多的属性,多个提供程序,增加的回调复杂性以及四个支持从配方内部修改布局的属性。
使用目录资源来管理目录,目录是文件夹的层次结构,其中包括计算机上存储的所有信息。根目录是顶层,目录的其余部分在此顶层组织。
目录资源使用name属性指定目录中某个位置的路径。通常,需要具有访问目录中该位置的权限。
使用dpkg_package资源来管理dpkg平台的软件包。从本地文件安装软件包时,必须使用remote_file或cookbook_file资源将其添加到节点。
使用easy_install_package资源来管理Python平台的软件包。
使用env资源在Microsoft Windows中管理环境密钥。设置环境密钥后,必须重新启动Microsoft Windows,然后环境密钥才能用于任务计划程序。
使用erl_call资源连接到位于分布式Erlang系统内的节点。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
使用执行资源来执行单个命令。使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
使用文件资源直接在节点上管理文件。
使用freebsd_package资源来管理FreeBSD平台的软件包。
使用gem_package资源来管理仅包含在配方中的gem包。从本地文件安装软件包时,必须使用remote_file或cookbook_file资源将其添加到节点。
使用git资源来管理git存储库中存在的源代码控制资源。必须使用git版本1.6.5(或更高版本)才能使用git资源中的所有功能。
使用组资源来管理本地组。
使用homebrew_package资源来管理Mac OS X平台的软件包。
使用http_request资源发送带有任意消息的HTTP请求(GET,PUT,POST,DELETE,HEAD或OPTIONS)。当需要自定义回调时,此资源通常很有用。
使用ifconfig资源来管理接口。
使用ips_package资源在Solaris 11平台上管理软件包(使用映像打包系统(IPS))。
使用ksh资源以使用Korn Shell(ksh)解释器执行脚本。此资源还可以使用执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
使用链接资源创建符号或硬链接。
使用日志资源创建日志条目。日志资源的行为与其他任何资源一样:在编译阶段内置到资源集合中,然后在执行阶段运行。 (要创建未内置在资源集合中的日志条目,请使用Chef :: Log而不是日志资源)
使用macports_package资源来管理Mac OS X平台的软件包。
在mdadm实用程序中,使用mdadm资源在Linux环境中管理RAID设备。 mdadm提供程序将创建并组装一个阵列,但不会创建用于在重新启动后保留该阵列的配置文件。
如果需要配置文件,则必须通过指定具有正确阵列布局的模板,然后使用安装提供程序创建文件系统表(fstab)条目来完成。
使用安装资源来管理已安装的文件系统。
使用ohai资源在节点上重新加载Ohai配置。这允许更改系统属性的配方(例如添加用户的配方)稍后在Chef-Client运行期间引用这些属性。
使用软件包资源来管理软件包。从本地文件安装软件包时(例如,使用RubyGems,dpkg或RPM软件包管理器),必须使用remote_file或cookbook_file资源将文件添加到节点。
使用pacman_package资源在Arch Linux平台上管理软件包(使用pacman)。
使用powershell_script资源使用Windows PowerShell解释器执行脚本,就像使用脚本和基于脚本的资源(bash,csh,perl, Python和ruby)一样。 powershell_script特定于Microsoft Windows平台和Windows PowerShell解释器。
使用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软件包管理器平台的软件包。
使用ruby资源使用Ruby解释器执行脚本。该资源还可以使用执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
在Chef-Client运行期间,使用ruby_block资源执行Ruby代码。在收敛过程中,ruby_block资源中的Ruby代码将与其他资源一起评估,而ruby_block资源之外的Ruby代码将在其他资源之前进行评估,因为配方已被编译。
使用脚本资源使用指定的解释器(例如Bash,csh,Perl, Python或Ruby)执行脚本。该资源还可以使用执行资源可用的任何操作和属性。
使用此资源执行的命令(就其性质而言)不是幂等的,因为它们通常对于运行它们的环境是唯一的。使用not_if和only_if可以保护该资源的幂等性。
使用服务资源来管理服务。
使用smartos_package资源来管理SmartOS平台的软件包。
solaris_package资源用于管理Solaris平台的软件包。
使用Subversion资源来管理Subversion存储库中存在的源代码控制资源。
通过将文件从COOKBOOK_NAME / templates /的子目录传输到位于运行Chef-Client的主机上的指定路径,可以使用模板资源使用嵌入式Ruby(ERB)模板来管理文件的内容。此资源包括文件资源中的操作和属性。由模板资源管理的模板文件遵循与remote_file和文件资源相同的文件专用性规则。
使用用户资源来添加用户,更新现有用户,删除用户以及锁定/解锁用户密码。
使用windows_package资源来管理Microsoft Windows平台的Microsoft Installer软件包(MSI)软件包。
使用windows_service资源在Microsoft Windows平台上管理服务。
使用yum_package资源使用Red Hat和CentOS平台的Yum安装,升级和删除软件包。 yum_package资源能够解析为软件包提供的数据,就像Yum从命令行运行时所做的一样。这样可以使用多种选项来安装软件包,例如最低版本,虚拟产品和库名称。