ถาม: การสร้างบทบาท 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: อย่าเรียกใช้บทบาทนี้ เป็นไลบรารีของงานแบบสแตนด์อโลน