ไม่สามารถค้นหาบทบาทของโหนดในตำราอาหารของเชฟได้

ฉันต้องเข้าถึงที่อยู่ IP ของโหนดที่มีบทบาท pg_client ในสูตรอาหารตำราอาหารชื่อ hc-pg เพื่อวัตถุประสงค์ในการทดสอบ ฉันใช้โหนดเดียวซึ่งมีทั้ง role[pg_client] และ recipe[hc-pg] ในรายการรัน hc-pg มีสูตรที่พยายามค้นหาบนโหนดที่มีบทบาท pg_client ต่อไปนี้เป็นรหัสสูตร:

ruby_block "searchnode" do
  block do
   pg_client_nodes = search(:node , "chef_environment:#{node.chef_environment} AND role:pg_client")
  end
end

ต่อไปนี้เป็นไฟล์ pg_client.json

{
"name" : "pg_client",
"description" : "Client which connects to postgres server"
}

ฉันกำลังใช้ห้องครัวทดสอบกับคนขับเร่ร่อน และต่อไปนี้คือ .kitchen.yml

---
driver:
  name: vagrant

provisioner:
  name: chef_zero

platforms:
  - name: precise64
    driver:
     box: precise64-chef

suites:
  - name: default
    roles_path: ../../roles
    run_list:
      - role[pg_client]
      - recipe[hc-pg]
    attributes:
     postgresql:
      config:
       listen_addresses: "*"

ฉันได้กล่าวถึงบทบาทก่อนสูตรในรายการรันแล้ว เมื่อฉันรวมโหนดเป็นครั้งแรก การค้นหาบน pg_client จะส่งคืน 0 โหนด เมื่อโหนดเดียวกันถูกบรรจบกันเป็นครั้งที่สอง ฉันจะได้รับโหนดที่มีบทบาท pg_client ดังนั้นสมมติฐานของฉันคือว่าในการดำเนินการใหม่ บทบาทจะไม่ถูกนำไปใช้จนกว่าเชฟจะมาบรรจบกันที่โหนด นี่เป็นสมมติฐานที่ถูกต้องหรือไม่? ฉันจะเข้าถึงโหนดด้วยบทบาทได้อย่างไร?


person Vaibhav    schedule 05.03.2014    source แหล่งที่มา
comment
บทบาทจะไม่ถูกนำมาใช้จนกว่า หลังจาก การรัน Chef ครั้งแรกจะสำเร็จ   -  person sethvargo    schedule 05.03.2014
comment
แนวทางของฉันถูกต้องหรือไม่? ฉันอยากจะใช้บทบาทภายในเชฟรัน กรณีการใช้งานของฉันคือการรับที่อยู่ IP ของโหนดที่มีบทบาท pg_client อาจเป็นโหนดเดียวกันที่กำลังจัดเตรียมอยู่   -  person Vaibhav    schedule 06.03.2014
comment
ฉันไม่รู้ว่าคุณหมายถึงอะไร คุณไม่สามารถค้นหาบทบาทที่นำไปใช้ได้จนกว่าจะมีการใช้บทบาท   -  person sethvargo    schedule 06.03.2014
comment
ตามหลักการแล้วควรมีสองโหนด โดยแต่ละโหนดสำหรับ pg_client และ hc-pg และฉันจะจัดเตรียมโหนดหนึ่งต่ออีกโหนดหนึ่ง แต่เพื่อวัตถุประสงค์ในการทดสอบ ฉันต้องการกำหนดให้โหนดเดียวและทดสอบสูตรอาหารของฉัน   -  person Vaibhav    schedule 07.03.2014


คำตอบ (1)


โดยทั่วไปโหนดจะไม่ส่งคืนในคำค้นหาจนกว่าจะมีการเรียกใช้ครั้งแรก ดังนั้นจึงอาจเป็นไปไม่ได้

เพื่อให้แน่ใจ 100% คุณสามารถลองใช้คำหลัก roles (พหูพจน์แทนที่จะเป็นเอกพจน์) ในคำค้นหา:

search(:node , "chef_environment:#{node.chef_environment} AND roles:pg_client")
person makhan    schedule 06.03.2014