Cara bekerja dengan variabel dan fakta ansible - bagian 8

Cara bekerja dengan variabel dan fakta ansible - bagian 8

Kami telah menyebutkan variabel dalam serial ansible ini dan hanya sedikit mengingatkan pikiran Anda. A variabel, Sama seperti dalam banyak bahasa pemrograman, pada dasarnya adalah kunci yang mewakili nilai.

Apa yang merupakan nama variabel yang valid?

Nama variabel termasuk huruf, angka, garis bawah atau campuran dari 2 atau semuanya. Namun, ingatlah bahwa nama variabel harus selalu dimulai dengan surat dan tidak boleh berisi spasi.

Mari kita lihat beberapa contoh nama variabel yang valid dan tidak dapat diterima:

Contoh nama variabel yang valid:

Football Foot_Ball Football20 Foot_Ball20 

Contoh Nama Variabel Non-Valid:

bola kaki 20 kaki kaki 

Mari kita bahas jenis variabel:

1. Variabel Playbook

Buku pedoman Variabel cukup mudah dan mudah. Untuk mendefinisikan variabel dalam a buku pedoman, Cukup gunakan kata kunci vars Sebelum menulis variabel Anda dengan lekukan.

Untuk mengakses nilai variabel, letakkan di antara kawat gigi keriting ganda yang terlampir dengan tanda kutip.

Inilah contoh buku pedoman sederhana:

- HOSTS: Semua VARS: salam: Halo Dunia! Tugas: - Nama: Ansible Basic Variable Contoh Debug: msg: " salam  " 

Di buku pedoman di atas, salam Variabel diganti dengan nilai Halo Dunia! Saat Playbook dijalankan. Playbook Cukup Mencetak Pesan Halo Dunia! Saat dieksekusi.

Variabel buku pedoman di ansible

Selain itu, Anda dapat memiliki daftar atau serangkaian variabel seperti yang ditunjukkan:

Buku pedoman di bawah ini menunjukkan variabel yang disebut benua. Variabel memiliki 5 nilai yang berbeda - nama benua. Masing -masing nilai ini dapat dengan mudah diakses menggunakan Indeks 0 Sebagai variabel pertama.

Contoh buku pedoman di bawah ini mengambil dan menampilkan Asia (Indeks 1).

- HOSTS: ALL VARS: Continents: - Afrika - Asia - Amerika Selatan - Amerika Utara - Tugas Eropa: - Nama: Daftar Ansible Variabel Contoh Debug: Msg: "Continents [1]" 
Array variabel di ansible

Daftar variabel juga dapat disusun seperti yang ditunjukkan:

VARS: Benua: [Afrika, Asia, Amerika Selatan, Amerika Utara, Eropa] 

Untuk mendaftar semua item dalam daftar, gunakan dengan_items modul. Ini akan mengulangi semua nilai dalam array.

- Hosts: All Vars: Continents: [Afrika, Asia, Amerika Selatan, Amerika Utara, Eropa] Tugas: - Nama: Variabel Array Ansible Contoh Debug: Msg: " barang  "with_items: -"  benua  " 
Daftar variabel array ansible

Jenis lain dari variabel ansible adalah kamus variabel.

Kamus Variabel juga didukung dalam buku pedoman. Untuk mendefinisikan variabel kamus, cukup identifikasi pasangan nilai kunci tepat di bawah nama variabel kamus.

Hosts: switch_f01 VARS: http_port: 8080 Default_gateway: 10.200.50.1 VLAN: ID: 10 Port: 2 

Dalam contoh di atas, VLAN adalah variabel kamus sementara pengenal Dan pelabuhan adalah pasangan nilai kunci.

HOSTS: switch_f01 VARS: http_port: 8080 Default_gateway: VLANS: ID: 10 Port: 20 Tugas: Nama: Konfigurasikan Gateway Default System_Configs: Default_Gateway_IP: "Default_Gateway" Nama label di vlan 10 vlan 10 vlans ['id'] “ port_id: 1/1/ vlans ['port'] 

Untuk port_id, Karena kami memulai nilai dengan teks dan bukan variabel, tanda kutip tidak diperlukan untuk mengelilingi kawat gigi keriting.

2. Variabel khusus

Ansible menyediakan daftar variabel yang telah ditentukan sebelumnya yang dapat dirujuk dalam templat dan buku pedoman Jinja2 tetapi tidak dapat diubah atau ditentukan oleh pengguna.

Secara kolektif, daftar variabel yang telah ditentukan sebelumnya disebut sebagai Fakta yang tidak mungkin dan ini dikumpulkan saat buku pedoman dieksekusi.

Untuk mendapatkan daftar semua variabel ansible, gunakan mempersiapkan Modul dalam perintah ad-hoc ansible seperti yang ditunjukkan di bawah ini:

# ansible -m pengaturan hostname 

Ini menampilkan output dalam format JSON seperti yang ditunjukkan:

# ansible -m setup localhost 
Daftar variabel ansible

Dari output, kita dapat melihat bahwa beberapa contoh variabel khusus ansible meliputi:

ansible_architecture ansible_bios_date ansible_bios_version ansible_date_time ansible_machine ansible_memefree_mb ansible_os_family ansible_selinux 

Ada banyak variabel khusus ansible lainnya ini hanya beberapa contoh.

Variabel -variabel ini dapat digunakan dalam a Jinja2 template seperti yang ditunjukkan:

  

Nama host dari server web ini ansible_hostname

Itu berjalan terus ansible_os_familysistem

3. Variabel inventaris

Terakhir, dalam daftar, kami memiliki variabel inventaris yang tidak mungkin. Inventaris adalah file di Ini format yang berisi semua host yang akan dikelola oleh Ansible.

Dalam inventaris, Anda dapat menetapkan variabel ke sistem host dan kemudian menggunakannya di buku pedoman.

[web_server] web_server_1 ansible_user = centos http_port = 80 web_server_2 ansible_user = ubuntu http_port = 8080 

Hal di atas dapat diwakili dalam buku pedoman Yaml file seperti yang ditunjukkan:

--- Web_Server: web_server_1: ansible_user = centos http_port = 80 web_server_2: ansible_user = ubuntu http_port = 8080 

Jika sistem host berbagi variabel yang sama, Anda dapat mendefinisikan grup lain dalam file inventaris untuk membuatnya kurang rumit dan menghindari pengulangan yang tidak perlu.

Misalnya:

[web_server] web_server_1 ansible_user = centos http_port = 80 web_server_2 ansible_user = centos http_port = 80 

Di atas dapat disusun sebagai:

[web_server] web_server_1 web_server_2 [web_server: vars] ansible_user = centos http_port = 80 

Dan di buku pedoman Yaml file, ini akan didefinisikan seperti yang ditunjukkan:

--- Web_Servers: Hosts: Web_Server_1: web_server_2: VARS: ansible_user = centos http_port = 80 

Fakta yang tidak mungkin

Saat menjalankan buku pedoman, tugas pertama yang dilakukan Ansible adalah pelaksanaan tugas pengaturan. Saya cukup yakin bahwa Anda pasti menemukan output:

Tugas: [mengumpulkan fakta] ********* 

Fakta -fakta yang tidak lain adalah properti sistem atau informasi tentang node jarak jauh yang telah Anda hubungkan. Informasi ini mencakup arsitektur sistem, versi OS, informasi BIOS, waktu dan tanggal sistem, uptime sistem, alamat IP, dan informasi perangkat keras untuk menyebutkan hanya beberapa.

Untuk mendapatkan fakta tentang sistem apa pun, gunakan saja mempersiapkan modul seperti yang ditunjukkan pada perintah di bawah ini:

# ansible -m pengaturan hostname 

Misalnya:

# ansible -m setup database_server 

Ini mencetak set data besar Json format seperti yang ditunjukkan:

Ansible mendapatkan fakta sistem

Fakta -fakta yang tidak mungkin berguna dalam membantu administrator sistem yang beroperasi untuk dilakukan, misalnya, tergantung pada sistem operasi, mereka dapat mengetahui paket perangkat lunak mana yang perlu diinstal, dan bagaimana mereka akan dikonfigurasi, dll.

Fakta Kustom

Tahukah Anda juga bahwa Anda dapat membuat fakta khusus yang dapat dikumpulkan oleh Ansible? Ya kamu bisa. Jadi bagaimana cara melakukannya? Mari kita bergeser dan lihat caranya.

Langkah pertama adalah membuat a /etc/ansible/facts.D direktori pada simpul yang dikelola atau jarak jauh.

Di dalam direktori ini, buat file dengan a .fakta perpanjangan. File ini akan kembali Json Data Saat Playbook dijalankan pada Node Kontrol Ansible, yang mencakup fakta -fakta lain yang dapat diambil setelah menjalankan buku pedoman setelah menjalankan buku pedoman.

Berikut adalah contoh file fakta khusus yang dipanggil tanggal Waktu.fakta itu mengambil tanggal dan waktu.

# mkdir -p/etc/ansible/facts.d # vim/etc/ansible/facts.d/date_time.fakta 

Tambahkan baris berikut di dalamnya.

#!/bin/bash date = "date" echo "\" date \ "": \"" $ date \ """" 

Simpan dan Keluar dari file.

Sekarang tetapkan izin eksekusi:

# chmod +x/etc/ansible/facts.d/date_time.fakta 

Sekarang, saya membuat buku pedoman di node kontrol ansible yang disebut check_date.YML.

--- - HOSTS: Tugas WebServer: - Nama: Dapatkan Fakta Kustom Debug: MSG: Fakta Kustom adalah ansible_local.tanggal Waktu 

Tambahkan file fakta ke ansible_local variabel. Itu ansible_local Menyimpan semua fakta khusus.

Sekarang jalankan buku pedoman dan amati informasi pengambilan yang dapat disimpan pada file fakta:

# ansible_playbook check_date.YML 
Buat Fakta Kustom Ansible
Kesimpulan

Ini membawa kita ke akhir tutorial ini tentang bekerja dengan variabel dan fakta yang tidak jelas.

"