GNU/Linux >> Belajar Linux >  >> Linux

RHCE Ansible Series #5:Ansible Loops

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
Linux
  1. Mendekonstruksi buku pedoman Ansible

  2. Memahami YAML untuk Ansible

  3. Tidak ada daftar Jenis di ISPConfig 3.1.11

  1. Bash Seri Pemula #8:Loop di Bash

  2. RHCE Ansible Series #8:Mengenkripsi Konten Dengan Ansible Vault

  3. Seri Ansible RHCE #7:Template Jinja2

  1. RHCE Ansible Series #6:Pengambilan Keputusan di Ansible

  2. RHCE Ansible Series #5:Ansible Loops

  3. RHCE Ansible Series #4:Variabel Ansible, Fakta dan Register