เชฟ - กระเป๋าข้อมูล
ถุงข้อมูลเชฟสามารถกำหนดได้ว่าเป็นการรวบรวมข้อมูลโดยพลการซึ่งสามารถใช้กับตำราอาหารได้ การใช้ถุงข้อมูลจะมีประโยชน์มากเมื่อไม่ต้องการฮาร์ดโค้ดแอตทริบิวต์ในสูตรอาหารหรือเก็บแอตทริบิวต์ไว้ในตำราอาหาร
วิธีการทำงาน
ในการตั้งค่าต่อไปนี้เราพยายามสื่อสารกับ http endpoint URL สำหรับสิ่งนี้เราต้องสร้างถุงข้อมูลซึ่งจะเก็บรายละเอียด URL ปลายทางและใช้ในสูตรของเรา
Step 1 - สร้างไดเร็กทอรีสำหรับกระเป๋าข้อมูลของเรา
mma@laptop:~/chef-repo $ mkdir data_bags/hooks
Step 2- สร้างรายการถุงข้อมูลสำหรับถังคำขอ ต้องตรวจสอบให้แน่ใจว่ามีการใช้ requestBin URL ที่กำหนดไว้
vipi@laptop:~/chef-repo $ subl data_bags/hooks/request_bin.json {
"id": "request_bin",
"url": "http://requestb.in/1abd0kf1"
}
Step 3 - สร้างกระเป๋าข้อมูลบนเซิร์ฟเวอร์ Chef
vipin@laptop:~/chef-repo $ knife data bag create hooks
Created data_bag[hooks]
Step 4 - อัปโหลดกระเป๋าข้อมูลไปยังเซิร์ฟเวอร์ Chef
vipin@laptop:~/chef-repo $ knife data bag from file hooks requestbin.json
Updated data_bag_item[hooks::RequestBin]
Step 5 - อัปเดตสูตรเริ่มต้นของตำราอาหารเพื่อรับตำราอาหารที่ต้องการจากกระเป๋าข้อมูล
vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb
hook = data_bag_item('hooks', 'request_bin')
http_request 'callback' do
url hook['url']
end
Step 6 - อัปโหลดตำราอาหารที่แก้ไขไปยังเซิร์ฟเวอร์ Chef
vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook
Uploading my_cookbook [0.1.0]
Step 7 - รันไคลเอนต์ Chef บนโหนดเพื่อตรวจสอบว่าถังคำขอ http ถูกเรียกใช้งานหรือไม่
user@server:~$ sudo chef-client
...TRUNCATED OUTPUT...
[2013-02-22T20:37:35+00:00] INFO: http_request[callback]
GET to http://requestb.in/1abd0kf1 successful
...TRUNCATED OUTPUT...
มันทำงานอย่างไร
ถุงข้อมูลคือชุดข้อมูลโครงสร้างที่มีชื่อ จำเป็นต้องกำหนดการป้อนข้อมูลและเรียกใช้รายการถุงข้อมูลในไฟล์ JSON นอกจากนี้ยังสามารถค้นหารายการถุงข้อมูลจากในสูตรอาหารเพื่อใช้ข้อมูลที่เก็บไว้ในถุงข้อมูล
เราสร้างถุงข้อมูลที่เรียกว่าตะขอ ถุงข้อมูลคือไดเร็กทอรีภายในที่เก็บ Chef เราใช้มีดเพื่อสร้างมันบนเซิร์ฟเวอร์