Cara Bekerja Dengan Pembolehubah dan Fakta Ansible - Bahagian 8

Cara Bekerja Dengan Pembolehubah dan Fakta Ansible - Bahagian 8

Kami telah menyebut pembolehubah dalam siri ansible ini dan hanya untuk berjoging sedikit. A pembolehubah, Sama seperti dalam banyak bahasa pengaturcaraan, pada dasarnya adalah kunci yang mewakili nilai.

Apa yang menjadi nama pemboleh ubah yang sah?

Nama berubah termasuk huruf, nombor, garis bawah atau campuran sama ada 2 atau semuanya. Walau bagaimanapun, ingat bahawa nama pemboleh ubah mesti selalu bermula dengan surat dan tidak boleh mengandungi ruang.

Mari kita lihat beberapa contoh nama pembolehubah yang sah dan tidak boleh diterima:

Contoh nama pembolehubah yang sah:

bola sepak foot_ball football20 foot_ball20 

Contoh nama pembolehubah yang tidak sah:

bola kaki 20 bola kaki 

Mari kita bincangkan jenis pembolehubah:

1. Pembolehubah PlayBook

Playbook Pembolehubah agak mudah dan mudah. Untuk menentukan pemboleh ubah dalam a Playbook, Cukup gunakan kata kunci vars Sebelum menulis pembolehubah anda dengan lekukan.

Untuk mengakses nilai pembolehubah, letakkan di antara pendakap keriting berganda yang tertutup dengan tanda petikan.

Inilah contoh buku main yang mudah:

- Hos: Semua VARS: Salam: Hai dunia! Tugas: - Nama: Ansible Basic Variable Contoh Debug: Msg: " Salam  " 

Dalam buku main di atas, Salam Pembolehubah digantikan dengan nilai Hai dunia! Apabila buku main dijalankan. Buku play hanya mencetak mesej Hai dunia! semasa dilaksanakan.

Pembolehubah PlayBook dalam Ansible

Di samping itu, anda boleh mempunyai senarai atau pelbagai pembolehubah seperti yang ditunjukkan:

Buku main di bawah menunjukkan pemboleh ubah yang dipanggil benua. Pembolehubah memegang 5 nilai yang berbeza - nama benua. Setiap nilai ini dapat diakses dengan mudah menggunakan Indeks 0 Sebagai pemboleh ubah pertama.

Contoh buku main di bawah mengambil dan memaparkan Asia (Indeks 1).

- Hos: Semua Vars: Benua: - Afrika - Asia - Amerika Selatan - Amerika Utara - Tugas Eropah: - Nama: Ansible List Variable Contoh Debug: Msg: "Continents [1]" 
Pelbagai pembolehubah dalam ansible

Senarai pembolehubah juga boleh distrukturkan seperti yang ditunjukkan:

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

Untuk menyenaraikan semua item dalam senarai, gunakan dengan_item modul. Ini akan melepasi semua nilai dalam array.

- Hos: Semua Vars: Benua: [Afrika, Asia, Amerika Selatan, Amerika Utara, Eropah] Tugas: - Nama: Ansible Array Variables Contoh Debug: Msg: " item  "with_items: -"  benua  " 
Senaraikan pembolehubah array ansible

Satu lagi jenis pemboleh ubah ansible ialah Kamus pembolehubah.

Kamus Pembolehubah juga disokong dalam buku main. Untuk menentukan pemboleh ubah kamus, hanya mengenal pasti pasangan nilai kunci tepat di bawah nama pembolehubah kamus.

Hos: switch_f01 vars: http_port: 8080 default_gateway: 10.200.50.1 VLAN: ID: 10 port: 2 

Dalam contoh di atas, VLAN adalah pemboleh ubah kamus sementara ID dan pelabuhan adalah pasangan nilai kunci.

Hos: switch_f01 vars: http_port: 8080 default_gateway: vlans: id: 10 port: 20 tugas: name: configure gateway default system_configs: default_gateway_ip: "default_gateway" vlans ['id'] " port_id: 1/1/ vlans ['port'] 

Untuk port_id, Oleh kerana kita memulakan nilai dengan teks dan bukan pemboleh ubah, tanda petikan tidak perlu mengelilingi pendakap keriting.

2. Pembolehubah khas

Ansible menyediakan senarai pembolehubah yang telah ditetapkan yang boleh dirujuk dalam templat dan buku main Jinja2 tetapi tidak dapat diubah atau ditakrifkan oleh pengguna.

Secara kolektif, senarai pembolehubah yang telah ditetapkan oleh ansible disebut sebagai Fakta ansible Dan ini dikumpulkan apabila buku main dilaksanakan.

Untuk mendapatkan senarai semua pembolehubah ansible, gunakan Persediaan Modul dalam perintah ad-hoc ansible seperti yang ditunjukkan di bawah:

# ansible -m persediaan nama host 

Ini memaparkan output dalam format JSON seperti yang ditunjukkan:

# ansible -m persediaan localhost 
Senaraikan pembolehubah ansible

Dari output, kita dapat melihat bahawa beberapa contoh pembolehubah khas ansible termasuk:

ansible_architecture ansible_bios_date ansible_bios_version ansible_date_time ansible_machine ansible_memefree_mb ansible_os_family ansible_selinux 

Terdapat banyak pembolehubah khas yang lain ini hanyalah beberapa contoh.

Pembolehubah ini boleh digunakan dalam a Jinja2 Templat seperti yang ditunjukkan:

  

Nama hos dari webserver ini adalah ansible_hostname

Ia berjalan ansible_os_familysistem

3. Pembolehubah inventori

Terakhir, dalam senarai, kami mempunyai pembolehubah inventori ansible. Inventori adalah fail di Ini format yang mengandungi semua tuan rumah yang akan diuruskan oleh Ansible.

Dalam inventori, anda boleh memberikan pemboleh ubah kepada sistem tuan rumah dan kemudian menggunakannya dalam buku main.

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

Di atas boleh diwakili dalam buku main Yaml fail seperti yang ditunjukkan:

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

Sekiranya sistem tuan rumah berkongsi pembolehubah yang sama, anda boleh menentukan kumpulan lain dalam fail inventori untuk menjadikannya kurang rumit dan mengelakkan pengulangan yang tidak perlu.

Sebagai contoh:

[WEB_SERVERS] web_server_1 ansible_user = centOS http_port = 80 web_server_2 ansible_user = centos http_port = 80 

Yang di atas boleh disusun sebagai:

[WEB_SERVERS] WEB_SERVER_1 WEB_SERVER_2 [WEB_SERVERS: VARS] ANSBLE_USER = CentOS HTTP_PORT = 80 

Dan dalam buku main Yaml fail, ini akan ditakrifkan seperti yang ditunjukkan:

--- WEB_SERVERS: Hosts: WEB_SERVER_1: WEB_SERVER_2: VARS: ANSBLE_USER = CentOS http_port = 80 

Fakta ansible

Semasa menjalankan buku main, tugas pertama yang dilakukan oleh Ansible adalah pelaksanaan tugas persediaan. Saya cukup yakin bahawa anda mesti menjumpai output:

Tugas: [mengumpul fakta] ********* 

Fakta ansible hanyalah sifat sistem atau kepingan maklumat mengenai nod jauh yang telah anda sambungkan. Maklumat ini merangkumi seni bina sistem, versi OS, maklumat BIOS, masa dan tarikh sistem, uptime sistem, alamat IP, dan maklumat perkakasan untuk disebutkan hanya beberapa.

Untuk mendapatkan fakta mengenai mana -mana sistem hanya menggunakan Persediaan Modul seperti yang ditunjukkan dalam arahan di bawah:

# ansible -m persediaan nama host 

Sebagai contoh:

# ansible -m setup database_server 

Ini mencetak satu set data yang besar di Json Format seperti yang ditunjukkan:

Fakta Sistem Dapatkan Ansible

Fakta -fakta yang boleh digunakan dalam membantu pentadbir sistem yang beroperasi, misalnya, bergantung kepada sistem operasi, mereka dapat mengetahui pakej perisian yang perlu dipasang, dan bagaimana ia akan dikonfigurasi, dan lain -lain.

Fakta tersuai

Adakah anda juga tahu bahawa anda boleh membuat fakta tersuai anda sendiri yang dapat dikumpulkan oleh Ansible? Ya awak boleh. Jadi bagaimana anda melakukannya? Mari beralih gear dan lihat bagaimana.

Langkah pertama ialah membuat a /etc/ansible/fakta.d Direktori di nod yang diurus atau jauh.

Di dalam direktori ini, buat fail dengan a .fakta sambungan. Fail ini akan kembali Json Data Apabila PlayBook dijalankan pada nod Kawalan Ansible, yang termasuk fakta -fakta lain yang diambil oleh Ansible selepas PlayBook dijalankan.

Berikut adalah contoh fail fakta tersuai yang dipanggil masa tarikh.fakta yang mengambil tarikh dan masa.

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

Tambahkan baris berikut di dalamnya.

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

Simpan dan keluar dari fail.

Sekarang berikan kebenaran melaksanakan:

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

Sekarang, saya mencipta buku playbook pada nod kawalan ansible yang dipanggil check_date.yml.

--- - Hos: Tugas Webservers: - Nama: Dapatkan Fakta Custom Debug: MSG: Fakta Kustom adalah Ansible_Local.masa tarikh 

Tambahkan fail fakta ke ansible_local pembolehubah. The ansible_local menyimpan semua fakta tersuai.

Sekarang jalankan PlayBook dan perhatikan Ansible mengambil maklumat yang disimpan pada fail fakta:

# ansible_playbook check_date.yml 
Buat fakta adat ansible
Kesimpulan

Ini membawa kita ke akhir tutorial ini untuk bekerja dengan pembolehubah dan fakta ansible.

"