Chef - 模板



在基礎設施中,**配置管理** 就是關於如何很好地配置主機。通常,所有配置都是使用配置檔案完成的。Chef 使用模板能夠使用動態值填充配置檔案。

Chef 提供模板作為可在菜譜中使用的資源。配置檔案的動態值可以從資料包、屬性中檢索,甚至可以透過將它們傳遞到模板中來計算它們。

如何使用它?

**步驟 1** - 將模板新增到菜譜中。

vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/recipes/default.rb  
template '/tmp/message' do 
   source 'Test.erb' 
   variables( 
      hi: 'Tesing', 
      world: 'Welt', 
      from: node['fqdn'] 
   ) 
end 

**步驟 2** - 新增**ERB** 模板檔案。

vipin@laptop:~/chef-repo $ subl cookbooks/<Cookbook Name>/templates/default/test.erb 
<%- 4.times do %> 
<%= @hi %>, <%= @world %> from <%= @from %>! 
<%- end %>

**步驟 3** - 將修改後的 Cookbook 上傳到 Chef 伺服器。

vipin@laptop:~/chef-repo $ knife cookbook upload <Cookbook Name> 
Uploading my_cookbook [0.1.0] 
Run Chef Client on your node: 
user@server:~$ sudo chef-client 
...TRUNCATED OUTPUT... 
[2017-01-14T20:41:21+00:00] INFO: Processing template[/tmp/ 
message] action create (my_cookbook::default line 9) 
[2017-01-14T20:41:22+00:00] INFO: template[/tmp/message] updated 
content

**步驟 4** - 驗證上傳檔案的內容。

user@server:~$ sudo cat /tmp/message 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 
Hallo, Welt from vagrant.vm! 

工作流程

Chef 使用 Erubis 作為其模板語言。它允許在模板中的特殊符號內嵌入純 Ruby 程式碼。

  • <%= %> 用於將變數或 Ruby 表示式的值列印到生成的 檔案中。

  • <%- %> 用於將 Ruby 邏輯嵌入到模板檔案中。我們使用它來迴圈執行我們的表示式四次。

廣告

© . All rights reserved.