คำถามติดแท็ก chef

Chef เป็นกรอบการจัดการการกำหนดค่าโอเพ่นซอร์สสำหรับระบบอัตโนมัติโครงสร้างพื้นฐาน

2
Chef: สร้างไดเรกทอรีสำหรับเทมเพลตหากยังไม่มีอยู่
หากฉันมีแม่แบบที่สร้างฉันจะมั่นใจได้อย่างไรว่ามีไดเรกทอรีอยู่ ตัวอย่างเช่น template "#{node[:app][:deploy_to]}/#{node[:app][:name]}/shared/config/database.yml" do source 'database.yml.erb' owner node[:user][:username] group node[:user][:username] mode 0644 variables({ :environment => node[:app][:environment], :adapter => node[:database][:adapter], :database => node[:database][:name], :username => node[:database][:username], :password => node[:database][:password], :host => node[:database][:host] }) end สิ่งนี้ล้มเหลวเนื่องจาก/var/www/example/shared/configไม่มีอยู่database.ymlที่จะคัดลอกไปยัง ฉันคิดว่าหุ่นเชิดอนุญาตให้คุณ "มั่นใจ" มีไดเรกทอรีอยู่อย่างไร
17 chef  chef-solo 

7
คำถามที่ถูกต้องที่จะถามเมื่อตัดสินใจว่าจะใช้ Chef หรือ Puppet คืออะไร
ฉันกำลังจะเริ่มโครงการใหม่ซึ่งในบางส่วนจะต้องการการปรับใช้โหนดที่เหมือนกันจำนวนมากของคลาสที่แตกต่างกันประมาณสามคลาส: โหนดข้อมูลซึ่งจะเรียกใช้อินสแตนซ์ที่ถูกทำลายของ MongoDB แอ็พพลิเคชันโหนดซึ่งจะรันอินสแตนซ์ของแอปพลิเคชัน Ruby on Rails และแอปพลิเคชัน ASP.NET MVC รุ่นเก่า กำลังประมวลผลโหนดซึ่งจะรันงานที่ร้องขอโดยโหนดแอปพลิเคชัน โหนดทั้งหมดจะทำงานบนอินสแตนซ์ของ Ubuntu 10.04 แม้ว่าจะติดตั้งแพ็คเกจที่แตกต่างกัน ฉันมีความคุ้นเคยกับเชฟจากโปรเจ็กต์ก่อนหน้านี้ แต่ฉันไม่คิดว่าตัวเองเป็นผู้เชี่ยวชาญ ในความพยายามที่จะทำเนื่องจากความขยันฉันได้รับการตรวจสอบความเป็นไปได้ทางเลือก เรามีคนในบ้านจำนวนมากที่เป็นผู้ใช้หุ่นกระบอกมาเป็นเวลานานและพวกเขาสนับสนุนให้ฉันดู ฉันมีปัญหาในการประเมินทั้งสองทางเลือก พ่อครัวและหุ่นกระบอกจำนวนมากส่วนแบ่งของคำศัพท์โดเมนเดียวกัน - แพคเกจ , ทรัพยากร , คุณลักษณะและอื่น ๆ และพวกเขามีประวัติศาสตร์ร่วมกันที่เกิดจากการใช้วิธีการที่แตกต่างกันในการแก้ไขปัญหาเดียวกัน ดังนั้นในบางแง่มุมพวกเขาจึงคล้ายกันมาก แต่ข้อมูลการเปรียบเทียบส่วนใหญ่ที่ฉันพบเช่นบทความนี้ค่อนข้างล้าสมัยเล็กน้อย หากคุณเริ่มโครงการนี้วันนี้คำถามอะไรที่คุณถามตัวเองเพื่อตัดสินใจว่าคุณควรใช้ Chef หรือ Puppet สำหรับการจัดการการกำหนดค่า (หมายเหตุ: ฉันไม่ต้องการคำตอบสำหรับคำถาม "ฉันควรใช้เชฟหรือหุ่นเชิด")

2
ฉันจะเริ่มต้นกับ Chef ได้อย่างไร
เอกสารประกอบอาหารของเชฟค่อนข้างแย่ และ Google ไม่ได้ช่วยฉัน ทุกคนสามารถชี้ให้ฉันในบทความที่ดีหรือสิ่งที่จะช่วยให้ฉันเริ่มต้นได้อย่างไร ปัญหาเฉพาะของฉันคือ: ฉันจะให้ไคลเอนต์อ่านการกำหนดค่าของฉันได้อย่างไร Chef-solo ดูเหมือนจะเป็นการเริ่มต้นที่ดีที่สุด (ฉันไม่ต้องการเรียกใช้เซิร์ฟเวอร์ OpenID หรือ Merb) ฉันจะกำหนดค่า Apache ให้บริการ Django ได้อย่างไร ฉันรู้วิธีการทำเช่นนี้ผ่านการกำหนดค่าเซิร์ฟเวอร์ปกติ แต่ฉันคิดว่าตัวอย่างสูตรอาหารของเชฟจะเป็นการเริ่มต้นที่ดี
15 ruby  chef 

4
จัดการพ่อครัวตำราในสภาพแวดล้อมแบบทีม
ฉันกำลังเรียนรู้พ่อครัวและมีปัญหาในการจัดโครงสร้างทุกอย่างเพื่อทำงานกับทีมของฉัน สำหรับ starters ดูเหมือนว่าคุณควรสร้างโฟลเดอร์ Chef-repo ซึ่งคุณจะจัดเก็บและแก้ไขตำราที่ใช้ในการจัดการโหนดของคุณ ฉันทำงานในโครงการต่าง ๆ และแต่ละคนอยู่ภายใต้การควบคุมแหล่ง git แล้ว จะเป็นการดีที่ฉันจะเก็บโฟลเดอร์ repo ของพ่อครัวหนึ่งโฟลเดอร์ในแต่ละโครงการของฉันด้วยโครงการตำราอาหารใช่ไหม อย่างไรก็ตามในโฟลเดอร์ chef-repo ฉันต้องเพิ่มโฟลเดอร์การกำหนดค่า (.chef) ด้วยการกำหนดค่ามีดของฉันและการตรวจสอบความถูกต้องที่สำคัญของฉันและสิ่งเหล่านี้เฉพาะสำหรับฉัน เป็นเรื่องปกติหรือไม่ที่จะเพิ่มโฟลเดอร์. chef ไปยังไฟล์ gitignore ฉันเข้าใจว่าตำราจะถูกอัปโหลดไปยังเซิร์ฟเวอร์พ่อครัวเพื่อนำไปใช้งาน ทีมอื่น ๆ แยกการแสดงละครออกจากสภาพแวดล้อมการผลิตโดยไม่ต้องทำงานซ้ำซ้อนกันมากอย่างไร เรามีสาขาหลักซึ่งเป็นสาขาการผลิตของเราสาขา dev ซึ่งเป็นสาขาการจัดเตรียมของเรา (รับน้อยกว่า 5% ของการร้องขอของเว็บไซต์) และสาขาฟีเจอร์ ส่วนใหญ่แล้ว dev สาขาจะถูกรวมเข้ากับสาขาหลัก เราจะอัพโหลดตำราอาหารแยกต่างหากเพื่อให้สามารถมีสองสภาพแวดล้อมในวิธีแยกกันได้อย่างไร ขอบคุณสำหรับความช่วยเหลือ!
13 chef 

2
ในพ่อครัวฉันจะเข้าถึงแอตทริบิวต์ภายในไฟล์บทบาทได้อย่างไร
ฉันสามารถตั้งค่าแอตทริบิวต์ในไฟล์บทบาทเป็นเอกสารได้แต่ฉันไม่สามารถเข้าถึงแอตทริบิวต์ที่ตั้งค่าโดยตำราที่ฉันใช้อยู่ ตัวอย่างเช่นภายใน /roles/appserver.rb: name "appserver" run_list(%w{ recipe[tomcat::default] }) default_attributes( :tomcat => { :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir] } ) สิ่งที่ฉันได้รับคือข้อยกเว้นที่ระบุโดยเชฟไม่สามารถหาวิธี / ตัวแปร 'node' ขอบคุณ
13 chef 

2
วิธีการเปลี่ยนไฟล์ปรับแต่งอัตโนมัติระหว่างการอัพเกรด apt-get ใน Ubuntu 12
ฉันชอบใช้ "knife cloudstack server create ... " เพื่อสร้าง VM ใหม่ เทมเพลต bootstrap ของฉันเริ่มต้นด้วย "apt-get update" และ "apt-get -y upgrade" การอัพเกรดจะหยุดด้วย: 10.190.113.11 Configuration file `/etc/nscd.conf' 10.190.113.11 ==> Modified (by you or by a script) since installation. 10.190.113.11 ==> Package distributor has shipped an updated version. 10.190.113.11 What would you like to …
13 ubuntu-12.04  apt  chef 

5
มีด SSH ไม่พบโหนดของฉัน
knife sshไม่พบโหนดของฉัน ฉันรู้ว่ามันควรจะเป็นเพราะเมื่อฉันสามารถค้นหาพวกเขาฉันพบพวกเขา # knife search node name:* 2 items found Node Name: web_01 ... Node Name: admin ... อย่างไรก็ตามเมื่อฉันเรียกใช้knife ssh(ฉันจะแสดงด้วยการตั้งค่าสถานะ 'debug') ฉันได้รับ # knife ssh "node:*" "uptime" -VV DEBUG: Using configuration from /root/.chef/knife.rb DEBUG: Signing the request as dev DEBUG: Sending HTTP Request via GET to ec2-xx-xx-xx-xx.compute-1.amazonaws.com:4000/search/node FATAL: No …
12 chef  knife 

3
Ansible, Chef, Puppet หรือ ____: ซึ่งรองรับ Windows ได้ดีที่สุดและมีขนาดเล็กที่สุด
เราทำส่วนใหญ่ (แต่ไม่เฉพาะ) ชนะเซิร์ฟเวอร์ โดยเฉพาะอย่างยิ่งเราสามารถเริ่มระบบปฏิบัติการและทำเพียงเล็กน้อยหรือไม่มีเลยเพื่อให้พร้อมรับคำสั่ง (เรารู้ว่าเราอาจต้องสร้างอิมเมจพื้นฐานด้วยเอเจนต์หรือเซิร์ฟเวอร์ ssh) จำเป็นต้องสามารถติดตั้ง mongodb, แอพที่ใช้ java, iis config, เป็นต้น เครื่องมือใดมีการสนับสนุน / ชุมชน windows ที่แข็งแกร่งที่สุดและ (ถ้ามี) รอยเท้าเริ่มต้นที่เบาที่สุด คำตอบในการปฏิบัติงาน: Powershell DSC นี่ไม่ใช่เรื่องเต็ม (ไม่ได้ทำทุกอย่างที่พ่อครัว / หุ่นเชิด / อื่น ๆ ทำ) แต่มันตอบสนองความต้องการได้มากใช้งานได้ดีและอยู่นอกกรอบในการชนะ 8.1 / 2012-R2 / 10 เรามีความสุขมากกับมัน

2
เชฟ: วิธีการเรียกใช้ทรัพยากรในการแจ้งเตือนเท่านั้น?
ฉันต้องการประกาศทรัพยากรที่ฉันต้องการเรียกใช้หลายครั้งในการแจ้งเตือนและในการแจ้งเตือนเท่านั้น ฉันจะป้องกันไม่ให้ทรัพยากรทำงานด้วยตนเองหลังจากที่มีการประกาศได้อย่างไร มีวิธีตรวจสอบว่ามีการแจ้งเตือนอยู่หรือไม่ดังนั้นฉันสามารถเรียกใช้บางอย่างเช่น "only_if: notified" ได้หรือไม่
11 chef 

1
แชร์ไฟล์ / แม่แบบระหว่างตำรา
เรามีตำราหลายเล่มซึ่งอ้างอิงไฟล์และแม่แบบเดียวกันและสงสัยว่ามีวิธีที่สมเหตุสมผลเพื่อให้แน่ใจว่าสิ่งเหล่านี้เป็นไฟล์เดียวกันเพื่อให้แน่ใจว่าไม่มีใครล้าสมัย เป็นไปได้หรือไม่ที่จะมีไฟล์ / เทมเพลตอ้างอิงหลายสูตร / ตำราอาหาร? ฉันคิดเกี่ยวกับการใช้ symlinks แต่สิ่งนี้จะไม่ได้ผลสำหรับเราเนื่องจาก Git ไม่สนับสนุนพวกเขา
11 automation  chef 

3
ทรัพยากรเชฟ bash ไม่ทำงานตามที่ผู้ใช้ระบุ
ฉันเขียนตำราเชฟในการติดตั้งHubot ในสูตรฉันทำต่อไปนี้: bash "install hubot" do user hubot_user group hubot_group cwd install_dir code <<-EOH wget https://github.com/downloads/github/hubot/hubot-#{node['hubot']['version']}.tar.gz && \ tar xzvf hubot-#{node['hubot']['version']}.tar.gz && \ cd hubot && \ npm install EOH end อย่างไรก็ตามเมื่อฉันพยายามเรียกใช้ chef-client บนเซิร์ฟเวอร์ที่ติดตั้ง cookbook ฉันได้รับอนุญาตปฏิเสธการเขียนไปยังไดเรกทอรีของผู้ใช้ที่รัน chef-client ไม่ใช่ผู้ใช้ hubot ด้วยเหตุผลบางอย่างnpmกำลังพยายามรันภายใต้ผู้ใช้ที่ไม่ถูกต้องไม่ใช่ผู้ใช้ที่ระบุในทรัพยากรทุบตี ฉันสามารถเรียกใช้sudo su - hubot -c "npm install /usr/local/hubot/hubot"ด้วยตนเองและได้รับผลลัพธ์ที่ต้องการ (ติดตั้ง hubot …
11 node.js  chef 

2
chef-solo vs chef-client --local-mode
ตามเอกสารที่ฉันควรจะเปลี่ยนจากchef-solochef-client --local-mode โหมดเฉพาะที่ถูกเพิ่มเข้ากับ Chef-client ในรีลีส 11.8 หากคุณกำลังใช้งาน Chef-Client เวอร์ชันนั้น (หรือใหม่กว่า) คุณควรพิจารณาใช้โหมด Local แทนการใช้ Chef-Solo https://docs.getchef.com/ctl_chef_solo.html ฉันเพียงแค่แทนที่คำสั่งและทำงานได้ดี คำสั่งสองคำสั่งสามารถเปลี่ยนได้เสมอโดยไม่ต้องกำหนดค่าใหม่หรือไม่? หรือมีความแตกต่างเล็กน้อยที่ฉันควรรู้คืออะไร?
11 chef 

2
กลยุทธ์ที่ดีที่สุดเพื่อให้พ่อครัวตำรารุ่นภายใต้การควบคุม
ฉันกำลังมองหาแนวคิดเกี่ยวกับการจัดการเวอร์ชันตำราพ่อครัว ฉันรู้ว่าคุณพินเวอร์ชันเฉพาะในสภาพแวดล้อม แต่ฉันไม่แน่ใจว่าจะทำอย่างไร เราใช้บรรณารักษ์ - เชฟซึ่งติดตั้งหนังสือชุมชนบุคคลที่สามลงในโฟลเดอร์ตำรา เราไม่เคยสัมผัสกับหนังสือเหล่านั้นและเพียงแค่อัปเดตเป็นเวอร์ชันล่าสุดเป็นครั้งคราว นอกจากนี้เรายังมีตำราเฉพาะเว็บไซต์ที่กำหนดเองซึ่งเราจะรวมตำราชุมชน ( include_recipe) ในทางทฤษฎีเราสามารถระบุหนังสือชุมชนรุ่นที่เฉพาะเจาะจงหนังสือที่กำหนดเองของเราขึ้นอยู่กับและจากนั้นตั้งค่าเวอร์ชันตำราอาหารของเราในการกำหนดค่าสภาพแวดล้อม แต่ปัญหาคือหนังสือชุมชนเหล่านั้นสามารถพึ่งพาหนังสือเล่มอื่น ๆ และการพึ่งพาที่ซ้อนกันอย่างลึกซึ้งสามารถดำเนินต่อไปได้ ดังนั้นจึงไม่มีการรับประกันว่าเมื่อคุณอัปโหลดตำราอาหารไปยังเซิร์ฟเวอร์พ่อครัวมันจะไม่ทำลายผลิตภัณฑ์เนื่องจากตำราอาหารที่ต้องพึ่งพาอาจเปลี่ยนแปลงได้เช่นกัน ทางออกเดียวที่ฉันเห็นในขณะนี้คือการระบุ verion ตำราทุกเล่มที่เราใช้ในการกำหนดค่าสภาพแวดล้อมรวมถึงชุมชนและที่กำหนดเอง แต่จากนั้นฉันต้องอ่านตำราอาหารแต่ละฉบับและหาเวอร์ชันเหล่านั้น เรายังทำการอัปเดตบรรณารักษ์ของพ่อครัวเป็นระยะและฉันคิดว่ามันอาจเป็นเรื่องยากที่จะติดตามเวอร์ชันที่เปลี่ยนแปลงและไม่ลืมที่จะอัปเดตเวอร์ชันในสภาพแวดล้อมเมื่อเวลาผ่านไป กรุณาแบ่งปันประสบการณ์และแนวทางปฏิบัติที่ดีที่สุดของคุณ ฉันแน่ใจว่ามันจะเป็นประโยชน์อย่างยิ่งสำหรับคนอื่น ๆ

1
การจัดการการกำหนดค่ามากเกินไปสำหรับ 3 โหนดคลัสเตอร์หรือไม่
ฉันมีคลัสเตอร์โหนด 2-3 โหนดสำหรับโหลดบาลานเซอร์ของเราและเว็บแอปพลิเคชันต่างๆ ฉันต้องทำการเปลี่ยนแปลงใน QA ก่อนจากนั้นในการจัดเตรียม (บนเซิร์ฟเวอร์ 2-3 เครื่อง) จากนั้นในเซิร์ฟเวอร์การผลิต (บน 2-3) เครื่องมือจัดการการกำหนดค่าเช่นพ่อครัวหรือหุ่นเชิดเหมาะสมหรือไม่? หรือมันมากไปไหม? หากมีการใช้มากเกินไปจะมีเคล็ดลับในการทำให้ง่ายขึ้น

1
จะมั่นใจได้อย่างไรว่าบริการกำลังทำงานโดยใช้เชฟ
ฉันอยู่ในสถานการณ์ที่เชฟอาจเริ่มให้บริการ (postgres) แต่ในภายหลังอาจหยุดสายนอก ฉันต้องการให้พ่อครัวคนต่อไปทำงานเพื่อให้บริการทำงาน ฉันได้ลองสิ่งนี้แล้ว: service "postgresql" do action :start end แต่มันไม่มีผลใด ๆ การพูดอย่าง(up to date)น่าจะเป็นเพราะเชฟรู้ว่ามันเริ่มแล้วและไม่สามารถบอกได้ว่ามันหยุดแล้ว (อาจเป็นเพราะservice ... statusพฤติกรรมการใช้บริการนี้ได้อย่างไร) ถ้าฉันเขียนสิ่งนี้: # anti-pattern warning! execute "force-start-postgresql" do command "service postgresql start || /etc/init.d/postgresql start" action :run end ฉันได้รับพฤติกรรมที่ต้องการ ยังaction :restartทำให้มันทำงาน อย่างไรก็ตามสิ่งเหล่านี้ดูเหมือนจะเป็นรูปแบบการต่อต้านเนื่องจากการพกพา (และอาจหยุดมันก่อนที่จะเริ่มอีกครั้งในกรณีหลัง) ดังนั้นฉันจะบอกเชฟให้บังคับใช้บริการได้อย่างไรแม้ว่ามันจะคิดว่ามันกำลังทำงานอยู่แล้ว นี่คือการใช้ Chef 11.6 โฮสต์โดย OpsCode และสูตร postgresql เริ่มต้น …

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