Score:1

เป็นรูปแบบที่ไม่ดีที่จะสร้างบทบาท Ansible เพียงเพื่อกำหนดข้อเท็จจริง?

ธง kg

ฉันมีสถานการณ์หนึ่งที่ฉันสามารถเขียนบทบาทงานสามอย่างเพื่อค้นหา จัดเรียง และแยกชุดของค่าต่างๆ เช่น:

- ชื่อ: ค้นหาอินสแตนซ์ AMI ที่มีอยู่
  amazon.aws.ec2_ami_info:
    ตัวกรอง: ...
  ลงทะเบียน: _ami_info
    
- ชื่อ: เรียงตามวันที่สร้างเพื่อรับข้อมูลล่าสุด
  ansible.buildin.set_fact:
    _amis: '{{ _ami_info.images | sort(attribute="creation_date", reverse=True) }}'
    
- ชื่อ: ตั้งค่าข้อเท็จจริงของฉันสำหรับ AMI ล่าสุด
    latest_ami_id: '{{ _amis[0].image_id }}
    ...

ฉันต้องทำสิ่งนี้ใน playbooks ที่แตกต่างกันสองสามเล่ม ดังนั้นฉันต้องการใช้รหัสซ้ำสิ่งที่ดูเจ๋งกว่าและเหมือน Anible มากกว่าคือการใช้ปลั๊กอินการค้นหา แต่นั่นคือ Python อีกหลายบรรทัดที่มีการเรียกไปยัง Boto3 เพื่อทำสิ่งเดียวกันอย่างมีประสิทธิภาพ (ยกเว้นการส่งคืนรายละเอียดเป็นคำสั่ง)

ดูเหมือนจะไม่พบสิ่งใดในแนวปฏิบัติที่ดีที่สุดสำหรับบทบาทที่ครอบคลุมสิ่งนี้ หรือมากกว่าที่ฉันขาดหายไป

Score:2
ธง br

ถาม: การสร้างบทบาท Ansible เพียงเพื่อกำหนดข้อเท็จจริงเป็นรูปแบบที่ไม่ดีหรือไม่

ตอบ: ไม่ มันไม่ใช่ คุณว่าคุณ 'ต้องการใช้รหัสซ้ำ'. ใส่งานลงในไฟล์ เช่น งาน/get_latest_ami_id.ymlและสร้างบทบาท เช่น บทบาท/my_lib

เปลือก> บทบาทของแมว/my_lib/tasks/get_latest_ami_id.yml
- ชื่อ: ค้นหาอินสแตนซ์ AMI ที่มีอยู่
  amazon.aws.ec2_ami_info:
    ตัวกรอง: ...
  ลงทะเบียน: _ami_info
    
- ชื่อ: เรียงตามวันที่สร้างเพื่อรับข้อมูลล่าสุด
  ansible.buildin.set_fact:
    _amis: '{{ _ami_info.images | sort(attribute="creation_date", reverse=True) }}'
    
- ชื่อ: ตั้งค่าข้อเท็จจริงของฉันสำหรับ AMI ล่าสุด
  ansible.buildin.set_fact:
    latest_ami_id: '{{ _amis[0].image_id }}
    ...

จากนั้นใช้อย่างใดอย่างหนึ่ง include_role หรือ นำเข้า_บทบาท และเรียกใช้งานใน playbook ของคุณ เช่น

- import_role:
    ชื่อ: my_lib
    งานจาก: get_latest_ami_id.yml
  • ดู นำสิ่งประดิษฐ์ Ansible กลับมาใช้ใหม่ เพื่อเรียนรู้ว่าอะไรคือความแตกต่างระหว่างการรวมและการนำเข้า

  • คุณสามารถใช้บทบาทนี้เป็นไลบรารีของงานอื่นๆ ที่สามารถนำมาใช้ซ้ำได้

  • หากคุณทำหน้าที่นี้จะไม่มีอะไรเกิดขึ้นเพราะ งาน/main.yml ที่ขาดหายไป. คุณสามารถสร้างเป็นการเตือนความจำได้ เช่น

เปลือก> บทบาทของแมว/my_lib/tasks/main.yml
- แก้ปัญหา:
    msg: อย่าเรียกใช้บทบาทนี้ เป็นไลบรารีของงานแบบสแตนด์อโลน

โพสต์คำตอบ

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