เชฟไคลเอนต์ไม่ได้อัปเดตตำราอาหารจากเซิร์ฟเวอร์


9

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

เมื่อฉันรันด้วยตนเอง (เหมือนรูท) chef-clientบนโหนดฉันสามารถเห็นมันติดต่อกับเซิร์ฟเวอร์รับรายการเรียกใช้ ฯลฯ อย่างไรก็ตามไฟล์สูตรใน/var/cache/chef/cookbooks/apache2เป็นไฟล์เก่า และสูตรล้มเหลว (เพราะไม่มีการเปลี่ยนแปลงที่ฉันทำ)

ฉันจะทำให้ไคลเอนต์พ่อครัวบนโหนดใช้ตำราปรุง apache2 รุ่นใหม่ได้อย่างไร ฉันต้องทุบเลขเวอร์ชั่นในตำราอาหารหรือไม่ (ฉันไม่ได้ทำสิ่งนี้)

chef-client -l debug เอาท์พุท:

[2015-01-30T10:51:31+01:00] DEBUG: Synchronizing cookbook apache2
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_ldap.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_xsendfile.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_auth_openid.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_setenvif.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_python.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_authz_host.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_proxy_ajp.rb, as the cache is up to date.
[2015-01-30T10:51:31+01:00] DEBUG: Not storing cookbooks/apache2/recipes/mod_expires.rb, as the cache is up to date.
(lots of this for all files)

ฉันใหม่กับพ่อครัวดังนั้นฉันอาจทำผิดเริ่มต้น


ไปที่เว็บอินเตอร์เฟสของพ่อครัว - เซิร์ฟเวอร์และตรวจสอบว่ามีการเปลี่ยนแปลงในตำราอาหารหรือไม่
Draco Ater

1
knife cookbook upload <cookbook_name>ให้แน่ใจว่าคุณวิ่ง หากวิธีดังกล่าวไม่สามารถแก้ปัญหาได้ให้ลองชนรุ่นแล้วเรียกใช้knife cookbook list <cookbook_name>เพื่อให้แน่ใจว่าคุณอัปโหลดอย่างถูกต้อง หรือเรียกใช้knife cookbook download(ในไดเรกทอรีอื่น) เพื่อดึงสิ่งที่เซิร์ฟเวอร์คิดว่าเป็นรหัสที่ถูกต้อง
Tejay Cardon

คำตอบ:


6

มีสองสิ่งที่ฉันคิดได้ซึ่งอาจช่วยคุณได้

  1. ตรวจสอบว่าเวอร์ชั่นตำราที่คุณกำลังอัปโหลดเป็นเวอร์ชันล่าสุด

    ปัญหาที่พบบ่อยเกี่ยวกับการทำเวอร์ชันตำราอาหารคือคุณอาจแก้ไขตำราเวอร์ชัน 1.0.0 ภายในเครื่องและทำการอัปโหลด แต่ Chef Server มีตำราเวอร์ชัน 1.0.1 ที่อัปโหลดไปแล้ว ในกรณีนี้โดยปกติแล้วลูกค้าของลูกค้าจะดึงข้อมูลเวอร์ชันล่าสุด (เว้นแต่จะมีการแจ้งเป็นอย่างอื่น) และการเปลี่ยนแปลงของคุณจะไม่ซิงค์กับแคชในเครื่อง

    คุณสามารถดูตำราอาหารเวอร์ชันปัจจุบันทั้งหมดบน Chef Server ผ่าน: knife cookbook show apache2

    ทางออกหนึ่งสำหรับวิธีนี้คือสิ่งที่คุณกล่าวถึง - เพิ่มหมายเลขรุ่นของคุณเกินกว่าที่มีอยู่ใน Chef Server เช่น 1.0.2 และอัปโหลด

    อีกวิธีหนึ่งคือการลบ apache2 ตำราอื่น ๆ ออกจาก Chef Server และอัปโหลดใหม่ที่คุณต้องการ สิ่งนี้ไม่ต้องการการอัปเดตหมายเลขเวอร์ชันใด ๆ และผลลัพธ์ที่ได้คือ Chef Server จะมีตำราอาหาร apache2 เล่มเดียว

  2. ตรวจสอบว่าการเปลี่ยนแปลงของคุณทำให้เป็นเซิร์ฟเวอร์เชฟ

    การใช้knife cookbook show apache2 <cookbook version> recipes default.rb รุ่นแทนที่พา ธ และชื่อไฟล์ - เช่นหากคุณต้องการดูเทมเพลตชื่อ foo.erb:knife cookbook show apache2 0.1.0 templates foo.erb

    คำสั่งนี้จะร้องขอไฟล์จาก Chef Server และแสดงผลลัพธ์ในเทอร์มินัลของคุณ knife cookbook uploadนี้เป็นวิธีที่ง่ายในการตรวจสอบว่าเปลี่ยนแปลงที่คุณทำจะถูกอัปโหลดผ่าน

นอกเหนือจากนี้หากไม่ได้ผลการเพิ่มรายละเอียดของknifeรุ่นchef-serverเวอร์ชั่นและบันทึกการchef-clientดีบั๊กknife cookbook upload apache2 -VVจะมีประโยชน์ในการแก้ไขเพิ่มเติม


1
ขอบคุณมากสำหรับคำตอบนี้ ... มันทำให้ฉันเห็นว่าเรามีข้อ จำกัด ตำราอาหารในสภาพแวดล้อมการผลิตของเราไม่ใช่ในสภาพแวดล้อม / production.rb ของเรา แต่ตั้งโดย berkshelf! ฉันไม่รู้ด้วยซ้ำว่าจะทำอย่างนั้นได้ อย่างไรก็ตามหลังจากอัปโหลดสภาพแวดล้อม production.rb ของเราใหม่พ่อครัวคนใหม่ก็หยิบตำราอาหารแอพล่าสุดของเราขึ้นมา
Colin Curtin

2

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


1

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


อย่าลืมอัปโหลดตำราทำอาหารมีด <cookbook_name>
นักวิ่งเน็ต
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.