เชฟ - กระเป๋าข้อมูล

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

วิธีการทำงาน

ในการตั้งค่าต่อไปนี้เราพยายามสื่อสารกับ 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 เราใช้มีดเพื่อสร้างมันบนเซิร์ฟเวอร์