พ่อครัว - แม่แบบ

ในโครงสร้างพื้นฐาน configuration managementเป็นข้อมูลเกี่ยวกับการกำหนดค่าโฮสต์ได้ดีเพียงใด โดยทั่วไปการกำหนดค่าทั้งหมดจะทำโดยใช้ไฟล์กำหนดค่า Chef ใช้เทมเพลตเพื่อให้สามารถเติมไฟล์การกำหนดค่าด้วยค่าไดนามิก

Chef มีเทมเพลตเป็นทรัพยากรที่สามารถใช้ในสูตรอาหารได้ ค่าไดนามิกของไฟล์คอนฟิกูเรชันสามารถดึงมาจากกระเป๋าข้อมูลแอตทริบิวต์หรือคำนวณได้โดยส่งไปยังเทมเพลต

วิธีการใช้งาน

Step 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

Step 2 - เพิ่ม ERB ไฟล์เทมเพลต

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

Step 3 - อัปโหลดตำราอาหารที่แก้ไขไปยังเซิร์ฟเวอร์ 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

Step 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!

เวิร์กโฟลว์

เชฟใช้ภาษาเอรูบิสเป็นภาษาแม่แบบ อนุญาตให้ฝังรหัส Ruby บริสุทธิ์ไว้ในสัญลักษณ์พิเศษในเทมเพลต

  • <% =%> ถูกใช้หากคุณต้องการพิมพ์ค่าของตัวแปรหรือนิพจน์ Ruby ลงในไฟล์ที่สร้างขึ้น

  • <% -%> ใช้หากคุณต้องการฝังลอจิก Ruby ลงในไฟล์เทมเพลตของคุณ เราใช้มันเพื่อวนซ้ำนิพจน์ของเราสี่ครั้ง