Anda dapat menentukan tiga jenis fakta khusus di Ansible.
1) Fakta global: Fakta-fakta ini dapat diakses dari setiap host di file inventaris Anda.
2) Fakta kelompok: Fakta-fakta ini hanya dapat diakses dari sekumpulan host atau grup host tertentu.
3) Fakta tuan rumah: Fakta-fakta ini hanya dapat diakses dari host tertentu.
Dalam artikel ini, saya akan menunjukkan kepada Anda bagaimana bekerja dengan fakta-fakta kustom Ansible. Jadi, mari kita mulai.
Prasyarat:
Jika Anda ingin mencoba contoh artikel ini,
1) Anda harus menginstal Ansible di komputer Anda.
2) Anda harus memiliki setidaknya 6 host Linux yang dikonfigurasi untuk otomatisasi yang memungkinkan.
Ada banyak artikel di LinuxHint yang didedikasikan untuk Menginstal Ansible dan mengonfigurasi host untuk otomatisasi Ansible. Anda dapat memeriksanya jika diperlukan.
Menyiapkan Direktori Proyek:
Sebelum kita mulai, mari buat direktori proyek sehingga kita dapat mengatur file proyek kita.
Untuk membuat direktori proyek fakta-kustom/ di kamu RUMAH direktori, jalankan perintah berikut:
$ mkdir -pv custom-facts/playbooks,host_vars,group_vars
Sekarang, navigasikan ke fakta-kustom/ direktori sebagai berikut:
$ cd fakta-kustom/
Buat file konfigurasi Ansible mungkin.cfg di direktori proyek Anda sebagai berikut:
$ nano mungkin.cfg
Ketik baris berikut mungkin.cfg mengajukan.
[default]inventaris = host
host_key_checking = Salah
Setelah selesai, tekan
Sekarang, buat file inventaris Ansible tuan rumah di direktori proyek Anda sebagai berikut:
$ nano host
Ketik baris berikut di . Anda tuan rumah file inventaris.
vm1.simpul.comvm2.simpul.com
[web]
vm3.simpul.com
vm4.simpul.com
[basis data]
vm[5:6].simpul.com
Setelah selesai, tekan
Untuk membuat daftar semua host yang tersedia di file inventaris Anda, jalankan perintah berikut:
$ memungkinkan semua --list-hostsSeperti yang Anda lihat, saya memiliki enam host di file inventaris saya.
Untuk membuat daftar host yang tersedia di jaring grup file inventaris Anda, jalankan perintah berikut:
$ web yang memungkinkan --list-hostsSeperti yang Anda lihat, saya memiliki dua host (vm3.simpul.com dan vm4.simpul.com) dalam jaring grup file inventaris saya.
Untuk membuat daftar host yang tersedia di basis data grup file inventaris Anda, jalankan perintah berikut:
$ basis data yang memungkinkan --list-hostsSeperti yang Anda lihat, saya memiliki dua host (vm5.simpul.com dan vm6.simpul.com) dalam basis data grup file inventaris saya.
Bekerja dengan Fakta Global yang Mungkin:
Di bagian ini, saya akan menunjukkan kepada Anda bagaimana mendefinisikan fakta/variabel global Ansible dalam file inventaris Anda dan mengaksesnya dari buku pedoman Ansible Anda. Saya juga akan menunjukkan cara mendefinisikan fakta/variabel global dalam file terpisah.
Pertama, buka tuan rumah file inventaris dengan perintah berikut:
$ nano host
Sekarang, tambahkan garis yang ditandai di . Anda tuan rumah file inventaris. Setelah selesai, tekan
'
Anda menambahkan fakta global di semua:vars bagian. Di sini, saya telah menambahkan web_url fakta global.
Sekarang, buat buku pedoman baru print_global_fact.yaml dalam buku pedoman/ direktori sebagai berikut:
$ nano buku pedoman/print_global_fact.yaml
Kemudian, ketik baris berikut di print_global_fact.yaml mengajukan.
- tuan rumah: semuapengguna: mungkin
tugas:
- nama: Cetak nilai fakta global 'web_url'
debug:
msg: 'URL Web: web_url'
Tujuan dari buku pedoman ini adalah untuk mencetak web_url fakta global.
Setelah selesai, tekan
Sekarang, jalankan print_global_fact.yaml buku pedoman sebagai berikut:
$ buku pedoman playbook yang memungkinkan/print_global_fact.yaml
Seperti yang Anda lihat, semua host di file inventaris saya dapat mengakses fakta global web_url.
Anda juga dapat menambahkan fakta global dalam file terpisah. Dengan cara ini, Anda dapat menjaga file inventaris tetap bersih. Mari kita lihat bagaimana melakukannya.
Pertama, mari kita singkirkan fakta global dari tuan rumah file inventaris.
$ nano host
Sekarang, hapus garis yang ditandai dari file inventaris dan tekan
Kemudian, buat file baru semua dalam grup_vars/ direktori sebagai berikut:
$ nano group_vars/all
Untuk menambahkan fakta global web_url, ketik baris berikut di group_vars/semua mengajukan.
web_url: https://www.linuxhint.comSetelah selesai, tekan
Untuk memeriksa apakah Anda dapat mengakses fakta global web_url, jalankan print_global_fact.yaml buku pedoman lagi sebagai berikut:
$ buku pedoman playbook yang memungkinkan/print_global_fact.yaml
Seperti yang Anda lihat, semua host di file inventaris saya dapat mengakses fakta global web_url.
Bekerja dengan Ansible Group Facts:
Di bagian ini, saya akan menunjukkan kepada Anda bagaimana mendefinisikan fakta/variabel grup Ansible dalam file inventaris Anda dan mengaksesnya dari buku pedoman Ansible Anda. Saya juga akan menunjukkan cara mendefinisikan fakta/variabel grup dalam file terpisah.
Pertama, buka tuan rumah file inventaris dengan perintah berikut:
$ nano host
Jika Anda memiliki grup tuan rumah grup 1, kemudian Anda menambahkan fakta/variabel grup untuk grup host itu di a grup1:vars bagian dari file inventaris Anda.
[grup 1]…
[grup1:vars]
variabel1=nilai1
variabel2=nilai2
Misalnya, untuk menambahkan fakta/variabel grup nama domain dan database_backends Untuk jaring grup host, Anda dapat mengetikkan baris yang ditandai di file inventaris Anda.
Setelah selesai, tekan
Untuk mencetak dan menguji apakah kami dapat mengakses fakta grup, buat buku pedoman baru print_group_facts.yaml dalam buku pedoman/ direktori sebagai berikut:
$ nano buku pedoman/print_group_facts.yaml
Ketik baris berikut di . Anda print_group_facts.yaml mengajukan.
- host: webpengguna: mungkin
tugas:
- nama: Cetak fakta grup
debug:
msg: 'Nama Domain: domain_name Latar Belakang Basis Data: database_backend'
Setelah selesai, tekan
Sekarang, jalankan print_group_facts.yaml buku pedoman sebagai berikut:
$ buku pedoman playbook yang memungkinkan/print_group_facts.yaml
Seperti yang Anda lihat, tuan rumah di jaring grup dapat mengakses nama domain dan database_backend kelompok fakta/variabel.
Sekarang, mari bersihkan file inventaris dan lihat cara menambahkan fakta/variabel grup dalam file terpisah.
Pertama, buka tuan rumah berkas inventaris sebagai berikut:
$ nano fakta
Hapus garis yang ditandai dari tuan rumah file inventaris. Setelah selesai, tekan
Saat kami menambahkan variabel grup untuk jaring grup host, buat file baru jaring (sama dengan nama grup) di grup_vars/ direktori sebagai berikut:
$ nano group_vars/web
Untuk menambahkan fakta grup nama domain dan database_backend Untuk jaring grup host, tambahkan baris berikut di in group_vars/web mengajukan.
domain_name: web.linuxhint.comdatabase_backend: pgsql
Setelah selesai, tekan
Untuk memeriksa apakah host di jaring grup dapat mengakses fakta grup, jalankan print_group_facts.yaml buku pedoman sebagai berikut:
$ buku pedoman playbook yang memungkinkan/print_group_facts.yaml
Seperti yang Anda lihat, tuan rumah di jaring grup dapat mengakses nama domain dan database_backend kelompok fakta/variabel.
Bekerja dengan Fakta Tuan Rumah yang Mungkin:
Di bagian ini, saya akan menunjukkan kepada Anda bagaimana mendefinisikan fakta/variabel host Ansible dalam file inventaris Anda dan mengaksesnya dari buku pedoman Ansible Anda. Saya juga akan menunjukkan cara mendefinisikan fakta/variabel host dalam file terpisah.
Pertama, buka tuan rumah file inventaris dengan perintah berikut:
$ nano host
Anda dapat menambahkan fakta/variabel host setelah nama DNS atau alamat IP host di file inventaris Anda sebagai berikut:
www.domain1.com variable1=value1 variable2=value2192.168.22.2 variabel1=nilai3 variabel2=nilai4
Misalnya, Anda dapat menambahkan fakta/variabel host nama domain dan database_backend untuk tuan rumah vm3.simpul.com dan vm4.simpul.com, seperti yang ditandai pada tangkapan layar di bawah ini.
Perhatikan bahwa nilai nama domain dan database_backend fakta/variabel berbeda untuk setiap host.
Setelah Anda selesai menambahkan fakta/variabel host, tekan
Karena saya telah menambahkan fakta/variabel yang sama seperti pada contoh kelompok fakta/variabel, kita dapat menggunakan print_group_facts.yaml pedoman untuk menguji aksesibilitas fakta/variabel ini juga.
Jalankan print_group_facts.yaml buku pedoman sebagai berikut:
$ buku pedoman playbook yang memungkinkan/print_group_facts.yaml
Seperti yang Anda lihat, fakta/variabel host dapat diakses oleh host yang ditentukan. Nilainya juga berbeda untuk setiap host.
Karena masing-masing host berada di baris terpisah di file inventaris saya, saya dapat dengan mudah menambahkan fakta/variabel host di file inventaris saya. Namun, jika Anda menggunakan rentang untuk menentukan host di file inventaris Anda seperti yang ditandai pada tangkapan layar di bawah, Anda tidak dapat menambahkan fakta/variabel host seperti itu.
Anda dapat menambahkan fakta/variabel host dalam file terpisah, seperti yang telah Anda lakukan untuk fakta/variabel global dan grup.
Untuk menambahkan fakta/variabel host untuk for vm5.simpul.com tuan rumah, buat file baru vm5.simpul.com (sama dengan nama DNS host) di host_vars/ direktori sebagai berikut:
$ nano host_vars/vm5.simpul.com
Anda dapat menambahkan fakta/variabel host db_port dan db_name untuk tuan rumah vm5.simpul.com dengan baris berikut.
db_port: 3306db_name: demo1
Setelah selesai, tekan
Dengan cara yang sama, untuk menambahkan fakta/variabel host untuk host vm6.simpul.com, buat file baru vm6.simpul.com dalam host_vars/ direktori sebagai berikut:
$ nano host_vars/vm6.simpul.com
Anda dapat menambahkan fakta/variabel host db_port dan db_name untuk tuan rumah vm6.simpul.com dengan baris berikut.
db_port: 8877db_name: aplikasi1
Setelah selesai, tekan
Untuk mencetak dan menguji apakah kita dapat mengakses fakta/variabel host, buat buku pedoman baru print_host_facts.yaml dalam buku pedoman/ direktori sebagai berikut:
$ nano buku pedoman/print_host_facts.yaml
Sekarang, ketik baris berikut di print_host_facts.yaml mengajukan.
- host: databasepengguna: mungkin
tugas:
- nama: Cetak fakta tuan rumah
debug:
msg: 'Nama Basis Data: db_name Port Basis Data: db_port'
Setelah selesai, tekan
Untuk memeriksa apakah tuan rumah vm5.simpul.com dan vm6.simpul.com dapat mengakses fakta/variabel host, jalankan print_host_facts.yaml buku pedoman sebagai berikut:
$ buku pedoman playbook yang memungkinkan/print_host_facts.yaml
Seperti yang Anda lihat, tuan rumah vm5.simpul.com dan vm6.simpul.com dapat mengakses db_name dan db_port fakta/variabel tuan rumah.
Menyatukan Semuanya: Fakta yang Mungkin Diutamakan
Di bagian ini, saya akan berbicara tentang prioritas fakta/variabel yang mungkin. Jadi, mari kita mulai.
Sebelum kita mulai, mari kita bersihkan file inventaris.
Buka tuan rumah file inventaris dengan perintah berikut:
$ nano host
Hapus bagian yang ditandai dari file inventaris.
Beginilah tampilan file inventaris Anda pada saat ini.
Sekarang, tambahkan baris yang ditandai di file inventaris Anda. Baris-baris ini menambahkan fakta/variabel global fact_scope dan Pelabuhan.
Kemudian, tambahkan garis yang ditandai di file inventaris Anda. Baris ini menambahkan fact_scope dan Pelabuhan fakta/variabel untuk host di basis data kelompok.
Terakhir, tambahkan fact_scope dan Pelabuhan fakta/variabel tuan rumah untuk vm3.simpul.com dan vm4.simpul.com host, seperti yang ditandai pada tangkapan layar di bawah ini.
Setelah selesai, tekan
Untuk mencetak nilai fakta/variabel global, grup, dan host, buat buku pedoman baru fakta_preendensi.yaml dalam buku pedoman/ direktori sebagai berikut:
$ nano playbook/fact_precedence.yaml
Ketik baris berikut di fact_precedence.yaml mengajukan.
- tuan rumah: semuapengguna: mungkin
tugas:
- nama: Cetak semua fakta
debug:
msg: 'Cakupan Fakta: fact_scope Port: port'
Setelah selesai, tekan
Untuk mencetak fakta/variabel global, grup, dan host, jalankan fact_precedence.yaml buku pedoman sebagai berikut:
$ playbook-playbook yang memungkinkan/fact_precedence.yaml
Seperti yang Anda lihat, fakta/variabel global, grup, dan host dicetak.
Perhatikan bahwa fakta/variabel grup menggantikan fakta/variabel global (1). Juga, perhatikan bahwa fakta/variabel host menggantikan grup dan fakta/variabel global (2).
Fakta/variabel yang didahulukan dari Ansible adalah sebagai berikut:
Fakta tuan rumah > Fakta grup > Fakta globalKesimpulan:
Setelah membaca artikel ini, Anda seharusnya dapat bekerja dengan nyaman dengan fakta/variabel global, grup, dan host Ansible. Ingat prioritas fakta kustom Ansible. Ini akan membantu Anda men-debug buku pedoman Ansible Anda dengan lebih mudah.