Chef 有多重要,有多好那我們就不說了,如果你只是路過想了解什麼是 Chef 那你可以參考下面這個連結:
[Rails佈署實戰教學]使用Chef-Solo一鍵安裝機器 – 好麻煩部落格
這篇重點放在幾個常用的 Resource (我覺得常用的 XD),如果有大大覺得哪個也是重要的那也可以一起討論或分享一下。若是文章有錯誤的地方也煩請指教
如果你已經開始在製作一個 cookbook 時,在寫一個 recipe 常常會不知道要用什麼 resource ,或是不知道有什麼可以用。而且我看英文的速度沒辦法一目十行呀,而且中文的資料找不到,所以只能自已做個筆記來提醒我自已。也可以直接到 Resources Reference — Chef Docs 參考官方網站的資料(當然那邊是最齊全的),
先簡單了解一下一個 cookbook 的資料夾架構
1 2 3 4 5 6 7 8 9 |
|
所以我們會在 recipes 中建立這個 cookbook 要做的事情有什麼,所以要利用 chef 的 resources 寫這個 recipe。
套件 Package
1 2 3 4 |
|
:action
的方法屬性
Action | Description | |
---|---|---|
:install | (預設) 安裝 | | |
:purge | 移除 package (只有 Debian 上可以用,其他平台還是用 :remove ) | |
|
:reconfig | 配合 response file 重新設定 | |
|
:remove | 移除 package | | |
:upgrade | 升級 package 到最新版 | |
目錄 Directory
1 2 3 4 5 6 |
|
:action
的方法屬性
Action | Description | |
---|---|---|
:create | (預設) 建立目錄(但是如果設定不一樣還是會處理到符合設定) | | |
:delete | 刪除目錄 | |
服務 Service
1 2 3 |
|
:action
的方法屬性
Action | Description | |
---|---|---|
:disable | 關閉開機時並開啟服務 | | |
:enable | 啟用開機時並開啟服務 | | |
:nothing | (預設) 不做任何事 | | |
:reload | 重新載入 configuration 配置 | | |
:restart | 重啟服務 | | |
:start | 開啟服務 | | |
:stop | 停止服務 | |
:supports
的方法屬性說明
預設是 { :restart => false, :reload => false, :status => false }
,這個其實就是說 chef-client 把這三個動作都自已處理了,:restart
,這個動作就是先執行 :stop
,再執行:start
;:status
就是去檢查 process 有沒有這個 service name,:reload
,這個不知道怎麼做的=_=。
假設
1 2 3 4 |
|
那就是如果會執行到檢查 status 時就會去執行 service nginx status
,而不是去檢查 process。
<小提示> 可以讓他開機自動啟用,再來現在就開啟服務。
1 2 3 |
|
File 處理檔案
1 2 3 4 5 6 |
|
:action
的方法屬性
Action | Description | |
---|---|---|
:create | (預設) 新增檔案,如果檔案存在但不符合的話,就會重新產生一個檔案覆蓋 | | |
:create_if_missing | 如果檔案存在就不產生檔案 | | |
:delete | 刪除檔案 | | |
:touch | 不太懂,感覺意思是說,不管檔案是不符合,都會覆蓋檔案,所以會變動檔案的<修改時間>。| |
Template 模版
你可以建立 ERB 的檔案,利用 ruby 的寫法來製作檔案,更可以載入 attributes 的值。而 template 的檔案必需要放在 /COOKBOOK_NAME/templates/default
底下。Action 的方法跟 file 一樣。
1 2 3 4 5 6 7 8 9 10 11 |
|
cookbook_file 從 cookbook 送檔案進去
這個檔案通常會存放在 cookbook 的 /COOKBOOK_NAME/files/default
裡面,跟 template 不同的是,他是原封不同的把檔案傳偷主機裡面去,Action 的方法跟 file 一樣。
1 2 3 4 |
|
remote_file 從外部下載檔案
一般來說,大家在從外部下載檔案進來都是個壓縮檔,或是要執行的檔案,那 Chef 提供了一個方法可以暫存的地方,你可以用 Chef::Config[:file_cache_path]
來呼叫它。先暫存在那邊,之後再處理這個 remote file。
1 2 3 4 |
|
execute 執行
1 2 3 4 5 |
|
2015.4.11 目前就先筆記這幾個,之後在寫 recipe 的時候覺得哪些重要跟常用的 resources 再慢慢補上了。