Vagrant สามารถชี้ไปยังไดเรกทอรีของ Puppet เพื่อดำเนินการได้หรือไม่?


9

ฉันกำลังใช้ Vagrant ในการข้ามไปเริ่มต้นการกำหนดค่า Puppet เริ่มต้นและสับสนเกี่ยวกับวิธีรวม / เรียกใช้หลาย ๆ รายการ (นอกเหนือจาก site.pp เพียงอย่างเดียว) ในเวิร์กโฟลว์การดำเนินการหุ่นกระบอกโดยไม่ต้องแสดงรายการพิเศษลงในโมดูล

ในไดเรกทอรีหุ่นกระบอกที่ฉันชี้ไปที่ Vagrant (ดูด้านล่าง) ฉันมีสองรายการที่ฉันต้องการดำเนินการ: site.pp และ hierasetup.pp

config.vm.provision "puppet" do |puppet|
  puppet.manifests_path = "puppet_files/manifests"
  puppet.module_path    = "puppet_files/modules"
  puppet.manifest_file  = "site.pp"
  puppet.options = "--verbose --debug"
end 

ขณะนี้ฉันมี site.pp เป็นรายการที่เรียก hierasetup.pp site.pp ของฉันมีลักษณะเช่นนี้:

File {
  owner => 'root',
  group => 'root',
  mode  => '0644',
}

import "hierasetup.pp"

include jboss

แต่ฉันได้รับข้อผิดพลาดเกี่ยวกับการคัดค้าน "นำเข้า" นี้:

คำเตือน: การใช้ 'นำเข้า' ถูกคัดค้านที่ /tmp/vagrant-puppet-1/manifests/site.pp:33 ดูhttp://links.puppetlabs.com/puppet-import-deprecation (ที่ grammar.ra: 610: ใน `_reduce_190 ')

ตาม URL อ้างอิงภายใต้ "สิ่งที่ต้องลองแทน" มีข้อความระบุว่า " ในการเก็บคำนิยามโหนดของคุณในไฟล์แยกต่างหากให้ระบุไดเรกทอรีเป็นรายการหลักของคุณ "

เพิ่มเติมเอกสารหุ่นนี้เกี่ยวกับรายการหลักพูดว่า:

" แนะนำ: หากคุณกำลังใช้รายการหลักอย่างหนักแทนที่จะใช้ ENC ให้พิจารณาเปลี่ยนการตั้งค่ารายการเป็น $ confdir / รายการซึ่งจะช่วยให้คุณสามารถแยกรหัสระดับบนสุดของคุณออกเป็นหลายไฟล์ขณะที่หลีกเลี่ยงคำหลักนำเข้า จะตรงกับพฤติกรรมของสภาพแวดล้อมที่เรียบง่าย "

ดูเหมือนว่า Puppet สามารถอ้างอิงไดเรกทอรีทั้งหมดแทนที่จะเป็นไฟล์รายการเฉพาะเช่นฉันคาดว่า Vagrant จะจัดเตรียมสิ่งนี้และอนุญาตให้ฉันวางบรรทัด " puppet.manifest_file =" site.pp "และชี้ไปที่ ไดเรกทอรีหลักแทนซึ่งจะมีการเรียกใช้ไฟล์ * .pp ทั้งหมดอย่างไรก็ตามการลบบรรทัดนั้นใน Vagrant เพียงสร้างการร้องเรียนเกี่ยวกับ "default.pp" ที่คาดหมายแทนเท่านั้น:

ตัวจัดสรร puppet: * รายการหุ่นกระบอกที่กำหนดค่าหายไป โปรดระบุเส้นทางไปยังรายการที่มีอยู่: /some/path/puppet_files/manifests/default.pp

ดังนั้น:

  1. ประการแรกฉันเข้าใจวิธี "ใหม่" (ไม่ใช่การนำเข้า) ของการโทรหลายรายการอย่างถูกต้องในไดเรกทอรีที่จะชี้ไปที่ไฟล์ * .pp ทั้งหมดภายในจะถูกดำเนินการหรือไม่
  2. และประการที่สอง Vagrant "ติด" กับการเปลี่ยนแปลงใหม่นี้เพื่อรองรับการอ้างอิงของไดเรกทอรีร่วมกับการคัดค้าน "หุ่นยนต์" ของ Puppet?

อัปเดต:ขอบคุณ Shane ปัญหาเกี่ยวกับ # 2 (โค้ดของ Vagrant ที่ไม่ได้รับอนุญาตให้ชี้ไปยังไดเรกทอรีหุ่นกระบอก) ได้รับการรายงานในเว็บไซต์ติดตามปัญหา GitHub ของ Vagrant และได้รับการแก้ไขตั้งแต่: https://github.com/mitchellh/vagrant / ปัญหา / 4169

คำตอบ:


6

ประการแรกฉันเข้าใจวิธี "ใหม่" (ไม่ใช่การนำเข้า) ของการโทรหลายรายการอย่างถูกต้องในไดเรกทอรีที่จะชี้ไปที่ไฟล์ * .pp ทั้งหมดภายในจะถูกดำเนินการหรือไม่

ใช่คุณทำ ดูที่นี่ :

หากคุณกำลังใช้รายการหลักอย่างมากแทนที่จะใช้ ENC ให้พิจารณาเปลี่ยนการตั้งค่ารายการเป็น $ confdir / รายการ สิ่งนี้ช่วยให้คุณสามารถแยกรหัสระดับบนสุดของคุณออกเป็นหลาย ๆ ไฟล์ในขณะที่หลีกเลี่ยงคำหลักที่นำเข้า

นอกจากนี้manifestและmodulepathยังได้รับการคัดค้านในสภาพแวดล้อมของไดเรกทอรีและพฤติกรรมไดเรกทอรีรายการให้ดูที่นี่ :

เมื่อสภาวะแวดล้อมไดเร็กทอรีเสร็จสมบูรณ์สภาวะแวดล้อม config-file จะถูกคัดค้าน การกำหนดบล็อกสภาพแวดล้อมใน puppet.conf จะทำให้เกิดคำเตือนการคัดค้านเช่นเดียวกับการใช้การตั้งค่า modulepath, manifest, และ config_version ใน puppet.conf

นี่เป็นการเปลี่ยนแปลงครั้งใหญ่สำหรับการปรับใช้จำนวนมาก แต่ควรเป็นการปรับปรุงที่ดีในระยะยาว


และประการที่สอง Vagrant "ติด" กับการเปลี่ยนแปลงใหม่นี้เพื่อรองรับการอ้างอิงของไดเรกทอรีร่วมกับการคัดค้าน "หุ่นยนต์" ของ Puppet?

ไม่มันไม่มี จากเอกสารของพวกเขา:

manifest_file (สตริง) - ชื่อของไฟล์รายการที่จะทำหน้าที่เป็นจุดเริ่มต้นสำหรับการทำงาน Puppet ไฟล์รายการนี้คาดว่าจะมีอยู่ใน manifests_path ที่กำหนดค่า

สำหรับใช้กับ Vagrant คุณกำลังเผชิญกับการรับมือกับคำเตือนที่ไม่เห็นด้วยในตอนนี้ซึ่งเป็นโชคร้าย แต่การนำเข้านั้นไม่ได้กำหนดไว้สำหรับการลบจนถึง 4.x ดังนั้นสิ่งนี้ทำให้ Vagrant มีเวลาพอสมควร


เป็นเรื่องที่ดีที่จะรู้ว่าฉันจะไม่บ้าเพราะฉันพยายามคิดว่าข้อตกลงนั้นมานานกว่าหนึ่งชั่วโมงแล้ว ผู้พัฒนา Vagrant ตระหนักถึงความต้องการคุณลักษณะนั้นหรือไม่หากไม่มีสถานที่ที่จะแนะนำการเพิ่มเติมดังกล่าว
SeligkeitIstInGott

ดูเหมือนว่ามันยังไม่ได้รับการถามของพวกเขา - ดูที่นี่ วางปัญหาไว้ที่นั่นเพื่อให้สอดคล้องกับหุ่นกระบอกที่ทันสมัยกว่า (หรือฉันจะทำถ้าคุณไม่มีบัญชี GitHub)!
เชนหัวเสีย

ฉันคิดว่าเพื่อนร่วมงานการพัฒนาของฉันทุกคนมีบัญชี GitHub แต่ถ้าฉันมีบัญชีฉันก็ไม่รู้ด้วยซ้ำว่าการเข้าสู่ระบบของฉันคืออะไร ฉันไม่จำเป็นต้องมีเพราะฉันไม่ได้เป็น coder คุณจะทำสิ่งนั้นด้วยความตั้งใจอย่างยิ่งใหญ่หรือไม่?
SeligkeitIstInGott

1
@SeligkeitIstInGott แน่นอนฉันจะได้รับบางสิ่งบางอย่างยื่น!
เชนแมดเดน

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