- 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 菜譜在任何特定節點上成功執行的關鍵方法。有多種方法可以實現這一點,無論是手動設定還是使用 Shell 指令碼。此處需要執行的是透過菜譜設定它們。
為此,我們需要一個 Cookbook,這裡我們將使用 test_cookbook 和一個包含 test_cookbook 的執行列表。
使用 Chef 菜譜設定環境變數
步驟 1 - 使用環境變數更新 Cookbook 的預設菜譜。
vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb ENV['MESSAGE'] = 'Testing environment variable update with chef !' execute 'print value of environment variable $MESSAGE' do command 'echo $MESSAGE > /tmp/message' end
步驟 2 - 將更新後的 Cookbook 上傳到伺服器。
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook Uploading my_cookbook [0.1.0]
步驟 3 - 執行 Chef 客戶端以建立臨時檔案。
user@server:~$ sudo chef-client ...TRUNCATED OUTPUT... [2013-01-25T15:01:57+00:00] INFO: Processing execute[print value of environment variable $MESSAGE] action run (my_cookbook::default line 11) [2013-01-25T15:01:57+00:00] INFO: execute[print value of environment variable $MESSAGE] ran successfully ...TRUNCATED OUTPUT...
驗證變數
user@server:~$ cat /tmp/message Hello from Chef
工作方法
Ruby 透過 ENV(一個雜湊表)公開當前環境變數,以便讀取和修改環境變數。
執行資源
我們可以在 Cookbook 的 Chef 預設菜譜中使用 execute 資源來執行相同的操作。
mma@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb execute 'print value of environment variable $MESSAGE' do command 'echo $MESSAGE > /tmp/message' environment 'MESSAGE' => 'Hello from the execute resource' end
注意 - 使用 ENV 設定環境變數將使該變數在整個 Chef 執行期間可用。相反,將其傳遞給 execute 資源只會使其對該資源執行的單個命令可用。
廣告