Terkadang Anda mungkin ingin mengulang tugas beberapa kali. Misalnya, Anda mungkin ingin membuat beberapa pengguna, memulai/menghentikan beberapa layanan, atau mengubah kepemilikan pada beberapa file di host terkelola Anda.
Dalam tutorial ini, Anda akan mempelajari cara menggunakan Ansible loop untuk mengulang tugas beberapa kali tanpa harus menulis ulang seluruh tugas berulang kali.
Sebelum Anda melihat loop di Ansible, saya harap Anda telah mengikuti bab lain dalam seri tutorial Ansible ini. Anda harus mengetahui konsep buku pedoman Ansible, mengetahui perintah ad-hoc dan mengetahui terminologi dasar yang terkait dengan Ansible seperti daftar, kamus, dll.
Mengetahui dasar-dasar YAML juga dihargai.
Mengulang daftar
Ansible menggunakan kata kunci loop untuk mengulangi elemen daftar. Untuk mendemonstrasikannya, mari buat buku pedoman yang sangat sederhana bernama print-list.yml yang menunjukkan cara mencetak elemen dalam daftar:
[[email protected] plays]$ cat print-list.yml
---
- name: print list
hosts: node1
vars:
prime: [2,3,5,7,11]
tasks:
- name: Show first five prime numbers
debug:
msg: "{{ item }}"
loop: "{{ prime }}"
Perhatikan bahwa saya menggunakan item variabel dengan loop Ansible. Tugas akan berjalan lima kali yang sama dengan jumlah elemen di prima daftar.
Pada putaran pertama, item variabel akan disetel ke elemen pertama dalam larik utama (2). Pada putaran kedua, variabel item akan disetel ke elemen kedua dalam larik utama (3) dan seterusnya.
Silakan dan jalankan buku pedoman untuk melihat semua elemen prima daftar ditampilkan:
[[email protected] plays]$ ansible-playbook print-list.yml
PLAY [print list] **************************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Show first five prime numbers] *******************************************
ok: [node1] => (item=2) => {
"msg": 2
}
ok: [node1] => (item=3) => {
"msg": 3
}
ok: [node1] => (item=5) => {
"msg": 5
}
ok: [node1] => (item=7) => {
"msg": 7
}
ok: [node1] => (item=11) => {
"msg": 11
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=0 unreachable=0 failed=0
Sekarang Anda menerapkan loop ke aplikasi kehidupan nyata. Misalnya, Anda dapat membuat add-users.yml pedoman yang akan menambahkan banyak pengguna di semua host di server db grup:
[[email protected] plays]$ cat add-users.yml
---
- name: Add multiple users
hosts: dbservers
vars:
dbusers:
- username: brad
pass: pass1
- username: david
pass: pass2
- username: jason
pass: pass3
tasks:
- name: Add users
user:
name: "{{ item.username }}"
password: "{{ item.pass | password_hash('sha512') }}"
loop: "{{ dbusers }}"
Saya pertama kali membuat dbusers list yang pada dasarnya adalah daftar hash/kamus. Saya kemudian menggunakan pengguna modul bersama dengan loop untuk menambahkan pengguna dan menyetel sandi untuk semua pengguna di dbusers daftar.
Perhatikan bahwa saya juga menggunakan notasi bertitik item.username dan sayatem.pass untuk mengakses nilai kunci di dalam hash/kamus dbusers daftar.
Perlu juga dicatat bahwa saya menggunakan password_hash('sha512') filter untuk mengenkripsi kata sandi pengguna dengan sha512 algoritma hashing sebagai pengguna modul tidak mengizinkan pengaturan kata sandi pengguna yang tidak terenkripsi.
Tip Ujian RHCE:Anda akan memiliki akses ke halaman docs.ansible.com pada ujian Anda. Ini adalah sumber yang sangat berharga, terutama di bawah bagian "Pertanyaan yang Sering Diajukan"; Anda akan menemukan banyak pertanyaan How-to dengan jawaban dan penjelasan.Sekarang mari kita jalankan add-users.yml buku pedoman:
Baca cerita selengkapnya
Sisa artikel hanya tersedia untuk anggota LHB. Anda dapat mendaftar sekarang secara GRATIS untuk membaca sisa artikel ini bersama dengan akses ke semua posting khusus anggota. Anda juga berlangganan buletin Linux dua minggu sekali.
BerlanggananSudah punya akun? Masuk