พ่อครัว - แม่แบบ
ในโครงสร้างพื้นฐาน 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 ลงในไฟล์เทมเพลตของคุณ เราใช้มันเพื่อวนซ้ำนิพจน์ของเราสี่ครั้ง