- 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和庫名稱。