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