GNU/Linux >> Belajar Linux >  >> Linux

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

Akan selalu ada banyak variasi di seluruh sistem terkelola Anda. Untuk alasan ini, Anda perlu mempelajari cara bekerja dengan variabel Ansible.

Dalam tutorial ini, Anda akan belajar bagaimana mendefinisikan dan mereferensikan variabel Ansible. Anda juga akan mempelajari cara menggunakan Ansible Facts untuk mengambil informasi pada node yang Anda kelola.

Selanjutnya, Anda juga akan mempelajari cara menggunakan register untuk menangkap keluaran tugas.

Jika Anda baru pertama kali ke sini, silakan lihat bab-bab sebelumnya dalam seri ini:

  • Kemungkinan RHCE #1:Pengenalan dan pemasangan
  • Kemungkinan RHCE #1:Menjalankan perintah ad-hoc
  • Kemungkinan RHCE #1:Memahami buku pedoman

Bagian 1:Bekerja dengan variabel di Ansible

Mari kita mulai dengan variabel terlebih dahulu. Ingatlah bahwa semua ini tertulis di file YML Anda.

Mendefinisikan dan mereferensikan variabel

Anda dapat menggunakan vars kata kunci untuk mendefinisikan variabel langsung di dalam buku pedoman.

Misalnya, Anda dapat menentukan fav_color variabel dan atur nilainya menjadi kuning sebagai berikut:

---
- name: Working with variables
  hosts: all
  vars:
    fav_color: yellow

Sekarang bagaimana Anda menggunakan (referensi) fav_color variabel? Ansible menggunakan sistem templating Jinja2 untuk bekerja dengan variabel. Akan ada tutorial khusus yang membahas Jinja2 dalam seri ini, tetapi untuk saat ini Anda hanya perlu mengetahui dasar-dasarnya.

Untuk mendapatkan nilai fav_color variabel; Anda perlu mengapitnya dengan sepasang kurung kurawal sebagai berikut:

My favorite color is {{ fav_color }}

Perhatikan bahwa jika variabel Anda adalah elemen pertama (atau satu-satunya elemen) di baris, maka penggunaan tanda kutip adalah wajib sebagai berikut:

"{{ fav_color }} is my favorite color."

Sekarang mari kita menulis buku pedoman bernama variables-playbook.yml yang menyatukan semua ini:

[[email protected] plays]$ cat variables-playbook.yml 
---
- name: Working with variables
  hosts: node1
  vars:
    fav_color: yellow
  tasks:
    - name: Show me fav_color value
      debug:
        msg: My favorite color is {{ fav_color }}.

Saya telah menggunakan debug modul bersama dengan pesan opsi modul untuk mencetak nilai fav_color variabel.

Sekarang jalankan playbook dan Anda akan melihat warna favorit Anda ditampilkan sebagai berikut:

[[email protected] plays]$ ansible-playbook variables-playbook.yml 

PLAY [Working with variables] **************************************************

TASK [Gathering Facts] *********************************************************
ok: [node1]

TASK [Show me fav_color value] *************************************************
ok: [node1] => {
    "msg": "My favorite color is yellow."
}

PLAY RECAP *********************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Membuat daftar dan kamus

Anda juga dapat menggunakan daftar dan kamus untuk mendefinisikan variabel multinilai. Misalnya, Anda dapat menentukan daftar bernama port_nums dan atur nilainya sebagai berikut:

  vars:
    port_nums: [21,22,23,25,80,443]

Anda juga bisa menggunakan cara berikut untuk mendefinisikan port_nums yang setara:

vars:
    port_nums:
      - 21
      - 22
      - 23
      - 25
      - 80
      - 443

Anda dapat mencetak semua nilai di port_nums sebagai berikut:

All the ports {{ port_nums }}

Anda juga dapat mengakses elemen daftar tertentu:

First port is {{ port_nums[0] }}

Perhatikan bahwa Anda menggunakan indeks (posisi) untuk mengakses elemen daftar.

Anda juga dapat menentukan kamus bernama pengguna sebagai berikut:

vars:
    users:
      bob:
        username: bob
        uid: 1122
        shell: /bin/bash
      lisa:
        username: lisa
        uid: 2233
        shell: /bin/sh

Ada dua cara berbeda yang dapat Anda gunakan untuk mengakses elemen kamus:

  • dict_name['key'] -> users['bob']['shell']
  • dict_name.key -> users.bob.shell

Perhatikan bahwa Anda menggunakan kunci untuk mengakses elemen kamus.

Sekarang Anda dapat mengedit variables-playbook.yml pedoman untuk menampilkan daftar dan kamus yang sedang beraksi:

[[email protected] plays]$ cat variables-playbook.yml 
---
- name: Working with variables
  hosts: node1
  vars:
    port_nums: [21,22,23,25,80,443]
 
    users: 
      bob:
        username: bob
        uid: 1122
        shell: /bin/bash
      lisa:
        username: lisa
        uid: 2233
        shell: /bin/sh
  tasks:
    - name: Show 2nd item in port_nums
      debug:
        msg: SSH port is {{ port_nums[1] }}

    - name: Show the uid of bob
      debug:
        msg: UID of bob is {{ users.bob.uid }}

Anda sekarang dapat menjalankan buku pedoman untuk menampilkan elemen kedua di port_nums dan tunjukkan uid bob:

[[email protected] plays]$ ansible-playbook variables-playbook.yml 

PLAY [Working with variables] **************************************************

TASK [Show 2nd item in port_nums] **********************************************
ok: [node1] => {
    "msg": "SSH port is 22"
}

TASK [Show the uid of bob] *****************************************************
ok: [node1] => {
    "msg": "UID of bob is 1122"
}

Termasuk variabel eksternal

Sama seperti Anda dapat mengimpor (atau menyertakan) tugas dalam buku pedoman. Anda dapat melakukan hal yang sama dengan variabel juga. Artinya, dalam buku pedoman, Anda dapat memasukkan variabel yang ditentukan dalam file eksternal.

Untuk mendemonstrasikannya, mari buat file bernama myvars.yml yang berisi port_nums . kami daftar dan pengguna kamus:

[[email protected] plays]$ cat myvars.yml 
---
port_nums: [21,22,23,25,80,443]

users:
  bob:
    username: bob
    uid: 1122
    shell: /bin/bash
  lisa:
    username: lisa
    uid: 2233
    shell: /bin/sh

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. Bagaimana saya menggunakan Ansible dan anacron untuk otomatisasi

  2. Cara Menginstal dan Menguji Ansible di Linux

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

  1. Seri Ansible RHCE #7:Template Jinja2

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

  3. RHCE Ansible Series #5:Ansible Loops

  1. Bagaimana cara meneruskan variabel tambahan ke buku pedoman Ansible

  2. RHCE Ansible Series #11:Mengelola Sistem Dengan Ansible

  3. RHCE Ansible Series #10:Peran Sistem RHEL