วิธีการเรียกใช้หลาย playbooks ตามลำดับด้วย Ansible


16

ฉันกำลังทำงานกับ Playbooks ของ Ansible หลายตัวเพื่อหมุนเซิร์ฟเวอร์ใหม่ มี playbooks ที่แตกต่างกันประมาณ 15 รายการที่ฉันต้องใช้ในการสั่งซื้อเฉพาะเพื่อให้เซิร์ฟเวอร์หมุนได้สำเร็จ

ความคิดเริ่มต้นของฉันคือการเขียนเชลล์สคริปต์ที่ดำเนินการansible-playbook playbook_name.ymlและทำซ้ำมันหนึ่งรายการสำหรับ playbook แต่ละอันที่ฉันต้องเรียกใช้

มีวิธีที่ชาญฉลาด / ดีกว่าในการทำเช่นนี้โดยใช้ playbook หลักและถ้าเป็นเช่นนั้นจะมีลักษณะอย่างไร (ตัวอย่างชื่นชม)

ฉันสามารถเขียน playbook แบบเสาหินเดียวที่ทำได้ทั้งหมด แต่มีบางบทละครที่ทำงานเป็น root ก่อนแล้วจึงเป็นผู้ใช้ sudo ในภายหลัง


2
ใช้รวมอยู่ใน playbook docs.ansible.com/ansible/playbooks_roles.html
c4f4t0r

1
เพื่อจัดการกรณีที่รันเป็นรูทจากนั้นในฐานะผู้ใช้ sudo คุณสามารถใช้คุณสมบัติบล็อก - ใส่become:ส่วนท้ายของแต่ละบล็อก คุณอาจจำเป็นต้องสร้างการเล่นใหม่เพื่อสลับผู้ใช้การเชื่อมต่อจากรูทเป็นผู้ใช้ sudo
RichVel

คำตอบ:


15

สร้าง playbooks ย่อยมากมายและรวมไว้ด้วยคำสั่ง include

- include: playbook-one.yml
- include: playbook-two.yml

หาก playbooks ของคุณต้องทำงานตามลำดับและหากจำเป็นต้องสร้าง playbook หลักและรวมไฟล์ที่มีภารกิจ Playbook ควรเป็นกระบวนการปิดเสมอ


2
คุณอธิบายรายละเอียดในส่วนสุดท้ายของคำตอบได้ไหม? คุณหมายถึงอะไรโดย "playbook ควรเป็นกระบวนการปิด" ?
Mike Vella

1
มีวิธีการระบุ playbooks ทั้งหมดโดยใช้การแสดงออกปกติหรือไม่? ตัวอย่างเช่น:- include : books/*.yml
blueskin

8
ดูเหมือนincludeเลิกใช้แล้ว docs.ansible.com/ansible/latest/playbooks_reuse.htmlฉันคิดว่าimport_playbook: fooเป็นวิธีที่เหมาะสมที่จะไป แต่ฉันไม่มีประสบการณ์
แอนดรู

11

สำหรับ Ansilbe เวอร์ชั่นใหม่กว่าคุณสามารถสร้าง playbooks ย่อยมากมายและรวมเข้าด้วยกันผ่านคำสั่ง import_playbook:

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