
- Chef 教程
- Chef - 首頁
- Chef - 概述
- Chef - 架構
- Chef - 版本控制系統設定
- Chef - 工作站設定
- Chef - 客戶端設定
- Chef - Test Kitchen 設定
- Chef - Knife 設定
- Chef - Solo 設定
- Chef - Cookbook
- Chef - Cookbook 依賴
- Chef - 角色 (Roles)
- Chef - 環境 (Environments)
- Chef - Chef-Client 作為守護程序
- Chef - Chef-Shell
- Chef - 測試 Cookbook
- Chef - Foodcritic
- Chef - ChefSpec
- 使用 Test Kitchen 測試 Cookbook
- Chef - 節點 (Nodes)
- Chef - Chef-Client 執行
- 高階 Chef
- 動態配置菜譜
- Chef - 模板
- Chef - 使用 Chef DSL 的純 Ruby 程式碼
- Chef - 在菜譜中使用 Ruby Gems
- Chef - 庫
- Chef - 定義
- Chef - 環境變數
- Chef - 資料包 (Data Bags)
- Chef - 資料包指令碼
- Chef - 跨平臺 Cookbook
- Chef - 資源
- 輕量級資源提供程式
- Chef - 藍圖 (Blueprints)
- Chef - 檔案和包
- Chef - 社群 Cookbook
- Chef 有用資源
- Chef - 快速指南
- Chef - 有用資源
- Chef - 討論
Chef - 動態配置菜譜
屬性是動態配置 Cookbook 的關鍵元件。屬性使作者能夠使 Cookbook 可配置。透過覆蓋 Cookbook 中設定的預設值,使用者可以注入自己的值。
步驟 1 - 為 Cookbook 屬性建立一個預設檔案,並向其中新增一個預設屬性。
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/attributes/default.rb default['my_cookbook']['message'] = 'hello world!'
步驟 2 - 在菜譜中定義屬性。
vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb message = node['my_cookbook']['message'] Chef::Log.info("** Saying what I was told to say: #{message}")
步驟 3 - 上傳修改後的 Cookbook。
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook Uploading my_cookbook [0.1.0]
步驟 4 - 執行已定義節點的 Chef-Client。
user@server:~$ sudo chef-client ...TRUNCATED OUTPUT... [2013-01-13T20:48:21+00:00] INFO: ** Saying what I was told to say: hello world! ...TRUNCATED OUTPUT...
工作方法
Chef 在執行屬性之前會載入屬性檔案中的所有屬性。屬性與節點物件一起儲存。可以在菜譜中訪問與節點物件一起儲存的所有屬性並檢索其當前值。
Chef 的結構從最低級別的預設值開始,然後是普通級別(與 set 別名),最後是覆蓋。在菜譜中設定的屬性級別優先於屬性檔案中設定的相同級別。
在節點和環境級別覆蓋屬性
在角色或環境中定義的屬性具有最高優先順序。
步驟 1 - 建立一個角色。
vipin@laptop:~/chef-repo $ subl roles/german_hosts.rb name "german_hosts" description "This Role contains hosts, which should print out their messages in German" run_list "recipe[my_cookbook]" default_attributes "my_cookbook" => { "message" => "Hallo Welt!" }
步驟 2 - 將角色上傳到 Chef 伺服器。
vipin@laptop:~/chef-repo $ knife role from file german_hosts.rb Updated Role german_hosts!
步驟 3 - 將角色分配給節點。
vipin@laptop:~/chef-repo $ knife node edit server "run_list": [ "role[german_hosts]" ] Saving updated run_list on node server
步驟 4 - 執行 Chef-Client。
user@server:~$ sudo chef-client ...TRUNCATED OUTPUT... [2013-01-13T20:49:49+00:00] INFO: ** Saying what I was told to say: Hallo Welt! ...TRUNCATED OUTPUT...
廣告