Bagaimana cara menjalankan beberapa buku pedoman dalam rangka dengan Ansible?

16

Saya sedang mengerjakan beberapa buku pedoman yang memungkinkan untuk memutar contoh server baru. Ada sekitar 15 buku pedoman berbeda yang harus saya jalankan dalam urutan tertentu agar berhasil memunculkan server.

Awal saya berpikir untuk menulis script shell yang mengeksekusi ansible-playbook playbook_name.ymldan duplikat satu entri untuk setiap playbook saya perlukan untuk menjalankan.

Apakah ada cara yang lebih pintar / lebih baik untuk melakukan ini dengan menggunakan buku pedoman utama dan jika demikian seperti apa bentuknya (contoh dihargai).

Saya bisa menulis satu buku pedoman monolitik yang melakukan semuanya tetapi ada beberapa permainan yang dijalankan sebagai root terlebih dahulu kemudian sebagai pengguna sudo kemudian.

nulltek
sumber
2
gunakan sertakan dalam buku pedoman utama Anda docs.ansible.com/ansible/playbooks_roles.html
c4f4t0r
1
Untuk menangani kasus menjalankan sebagai root lalu sebagai pengguna sudo, Anda dapat menggunakan fitur blok - menempatkan become:bagian di akhir setiap blok. Anda mungkin perlu membuat yang baru bermain untuk beralih pengguna koneksi dari akar ke sudo pengguna sekalipun.
RichVel

Jawaban:

15

Buat banyak sub-playbook dan kumpulkan melalui pernyataan sertakan.

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

Jika playbook Anda harus dijalankan secara berurutan dan jika semuanya wajib, buat playbook utama dan sertakan file dengan tugas. Buku pedoman harus selalu menjadi proses yang tertutup.

flxPeters
sumber
2
Bisakah Anda menguraikan bagian terakhir dari jawaban Anda? apa yang Anda maksud dengan "Buku pedoman harus selalu menjadi proses yang tertutup." ?
Mike Vella
1
Apakah ada cara untuk menentukan semua buku pedoman menggunakan ekspresi reguler? Misalnya:- include : books/*.yml
blueskin
8
Sepertinya includesudah usang. docs.ansible.com/ansible/latest/playbooks_reuse.html Saya pikir import_playbook: fooini cara yang tepat, tapi saya tidak terlalu berpengalaman.
Andrew
11

Untuk versi Ansilbe yang lebih baru, Anda dapat membuat banyak sub-playbook dan menggabungkannya melalui pernyataan import_playbook:

---
- import_playbook: A-systemd-networkd.yml
- import_playbook: B-fail2ban-ssh.yml
- import_playbook: C-enable-watchdog.yml
Peter Senna
sumber