Score:1

บล็อกด้วย when และ include_tasks

ธง ru

ฉันพบพฤติกรรมแปลก ๆ เล็กน้อยที่ฉันไม่เข้าใจอย่างถ่องแท้ และจนถึงตอนนี้ฉันยังไม่สามารถค้นหาสิ่งที่มีประโยชน์ในเอกสารประกอบได้

เมื่อคุณมี "บล็อก:" ที่มีเงื่อนไข "เมื่อ" เงื่อนไขนี้ในบล็อกเองดูเหมือนจะเข้าสู่งานที่รวมอยู่ เพราะเหตุใด

ตัวอย่าง:

#playbook.yml
- โฮสต์: localhost
  งาน:
    - บล็อก:
      - ชื่อ: รวมสิ่งของ
        include_tasks: "set-x.yml"
      เมื่อ: x ไม่ได้กำหนดไว้
#set-x.yml
- ชื่อ: ตั้งข้อเท็จจริง
  set_fact:
    x: ฟู

- ชื่อ: ทดสอบ
  แก้ปัญหา:
    var: x

หากคุณเรียกใช้ตัวอย่างข้างต้น คำสั่งดีบั๊กจะไม่ทำงานเลย และนี่ไม่ใช่สิ่งที่ฉันคาดไว้ ความเข้าใจของฉันคือเงื่อนไขเมื่อบนบล็อกจะใช้เฉพาะกับว่าควรดำเนินการบล็อกเองหรือไม่ เคลียร์เงื่อนไขภายในไฟล์ include_tasks และตามความเข้าใจของฉัน นี่ไม่ใช่วิธีการที่ include ควรจะทำงาน

ฉันพลาดอะไรไป

Score:3
ธง br

อ้างจาก เงื่อนไขที่มีการรวม:

เมื่อคุณใช้เงื่อนไขในคำสั่ง include_* เงื่อนไขจะถูกนำไปใช้กับงานรวมเท่านั้นและจะไม่ใช้กับงานอื่นภายในไฟล์ที่รวม

ใช้งานได้ตามที่คาดไว้

    - include_tasks: set-x.yml
      เมื่อ: x ไม่ได้กำหนดไว้

จะไม่ใช้งานจากไฟล์ที่รวมไว้

งาน [include_tasks] *********************************************** **
รวม: /export/scratch/tmp8/set-x.yml สำหรับ localhost

สถานการณ์แตกต่างกับ บล็อก. อ้างจาก การจัดกลุ่มงานด้วยบล็อก:

งานทั้งหมดในคำสั่งสืบทอดบล็อกถูกนำไปใช้ที่ระดับบล็อก ... คำสั่งไม่ส่งผลกระทบต่อตัวบล็อกเอง แต่จะสืบทอดมาจากงานที่ล้อมรอบด้วยบล็อกเท่านั้น ตัวอย่างเช่น คำสั่ง when ใช้กับงานภายในบล็อก ไม่ใช่กับตัวบล็อก

ถ้าคุณใส่ include_tasks ลงในบล็อก

    - บล็อก:
        - include_tasks: set-x.yml
      เมื่อ: x ไม่ได้กำหนดไว้

เงื่อนไขถูกนำไปใช้กับงานทั้งหมด รวมถึงงานที่รวมอยู่ด้วย ดังนั้นจึงเป็นการแทนที่กฎก่อนหน้านี้ที่เงื่อนไขจะถูกนำไปใช้เฉพาะกับงานที่รวมเท่านั้น

งาน [include_tasks] *********************************************** ***
รวม: /export/scratch/tmp8/set-x.yml สำหรับ localhost

งาน [set_fact] *********************************************** ********
ตกลง: [localhost]

งาน [แก้ไขข้อบกพร่อง] *********************************************** ***********
การข้าม: [localhost]

เปิด ปัญหา ถ้าคุณคิดว่านี่เป็นข้อบกพร่อง

user3973227 avatar
ru flag
อืม... นี่เป็นพฤติกรรมแปลก ๆ เล็กน้อยและมันแปลกมากขึ้นเพราะไม่เพียงเงื่อนไขเมื่อ: เงื่อนไขจากบล็อกทำให้เป็นคำสั่ง include_tasks เองมันยังทำให้มันอยู่ในแต่ละคำสั่งภายในไฟล์ที่รวมและรวมเพิ่มเติม ไฟล์ด้วย ฉันพบสิ่งนี้เพราะฉันมีเมตา: reset_connection ทริกเกอร์คำเตือนสองระดับจากบล็อกเกี่ยวกับการไม่รองรับเงื่อนไขเมื่อบนเมตา:
br flag
ตรงนี้ล่ะประเด็น!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา