Anda boleh menentukan tiga jenis fakta tersuai dalam Ansible.
1) Fakta global: Fakta-fakta ini dapat diakses dari setiap host dalam fail inventori anda.
2) Fakta kumpulan: Fakta-fakta ini hanya dapat diakses dari kumpulan host atau kumpulan tuan rumah tertentu.
3) Fakta hos: Fakta-fakta ini hanya dapat diakses dari host tertentu.
Dalam artikel ini, saya akan menunjukkan kepada anda cara bekerja dengan fakta tersuai Ansible. Oleh itu, mari kita mulakan.
Prasyarat:
Sekiranya anda ingin mencuba contoh artikel ini,
1) Anda mesti memasang Ansible di komputer anda.
2) Anda mesti mempunyai sekurang-kurangnya 6 host Linux yang dikonfigurasi untuk automasi Ansible.
Terdapat banyak artikel mengenai LinuxHint yang dikhaskan untuk Memasang Ansible dan mengkonfigurasi host untuk automasi Ansible. Anda boleh memeriksanya jika diperlukan.
Menyiapkan Direktori Projek:
Sebelum kita memulakan, mari buat direktori projek supaya kita dapat mengatur fail projek kita.
Untuk membuat direktori projek fakta-adat / di anda RUMAH direktori, jalankan arahan berikut:
$ mkdir -pv custom-fakta / playbook, host_vars, group_vars
Sekarang, arahkan ke fakta-adat / direktori seperti berikut:
$ cd fakta-fakta /
Buat fail konfigurasi Ansible tidak boleh dimakan.cfg dalam direktori projek anda seperti berikut:
$ nano tidak boleh dimakan.cfg
Taipkan baris berikut anda tidak boleh dimakan.cfg fail.
[lalai]inventori = tuan rumah
host_key_checking = Salah
Setelah selesai, tekan
Sekarang, buat fail inventori Ansible tuan rumah dalam direktori projek anda seperti berikut:
hos $ nano
Taipkan baris berikut di tuan rumah fail inventori.
vm1.angguk.comvm2.angguk.com
[laman web]
vm3.angguk.com
vm4.angguk.com
[pangkalan data]
vm [5: 6].angguk.com
Setelah selesai, tekan
Untuk menyenaraikan semua hos yang ada dalam fail inventori anda, jalankan arahan berikut:
$ ansible semua - senarai-hosSeperti yang anda lihat, saya mempunyai enam hos dalam fail inventori saya.
Untuk menyenaraikan host yang terdapat di laman web kumpulan fail inventori anda, jalankan arahan berikut:
$ ansible web - senarai-hosSeperti yang anda lihat, saya mempunyai dua hos (vm3.angguk.com dan vm4.angguk.com) di dalam laman web kumpulan fail inventori saya.
Untuk menyenaraikan host yang terdapat di pangkalan data kumpulan fail inventori anda, jalankan arahan berikut:
pangkalan data $ ansible - list-hostSeperti yang anda lihat, saya mempunyai dua hos (vm5.angguk.com dan vm6.angguk.com) di dalam pangkalan data kumpulan fail inventori saya.
Bekerja dengan Fakta Sejagat yang Boleh Dibaca:
Di bahagian ini, saya akan menunjukkan kepada anda cara menentukan fakta / pemboleh ubah global Ansible dalam fail inventori anda dan mengaksesnya dari buku main Ansible anda. Saya juga akan menunjukkan kepada anda cara menentukan fakta / pemboleh ubah global dalam fail yang berasingan.
Pertama, buka tuan rumah fail inventori dengan arahan berikut:
hos $ nano
Sekarang, tambahkan garis yang ditandai di tuan rumah fail inventori. Setelah selesai, tekan
'
Anda menambah fakta global di semua: vars bahagian. Di sini, saya telah menambah web_url fakta global.
Sekarang, buat buku main baru print_global_fact.keladi di dalam buku permainan / direktori seperti berikut:
Buku main $ nano / print_global_fact.keladi
Kemudian, taipkan baris berikut di print_global_fact.keladi fail.
- tuan rumah: semuapengguna: tidak boleh dimakan
tugas:
- nama: Cetak nilai fakta global 'web_url'
nyahpepijat:
msg: 'URL Web: web_url'
Tujuan buku main ini adalah untuk mencetak web_url fakta global.
Setelah selesai, tekan
Sekarang, jalankan print_global_fact.keladi buku permainan seperti berikut:
$ ansible-playbook playbooks / print_global_fact.keladi
Seperti yang anda lihat, semua host dalam fail inventori saya dapat mengakses fakta global web_url.
Anda juga boleh menambahkan fakta global dalam fail yang berasingan. Dengan cara ini, anda dapat menjaga kebersihan fail inventori. Mari lihat bagaimana melakukannya.
Pertama, mari kita keluarkan fakta global dari tuan rumah fail inventori.
hos $ nano
Sekarang, keluarkan garis yang ditandai dari fail inventori dan tekan
Kemudian, buat fail baru semua di dalam kumpulan_vars / direktori seperti berikut:
$ nano group_vars / semua
Untuk menambahkan fakta global web_url, taipkan baris berikut di kumpulan_vars / semua fail.
web_url: https: // www.linuxhint.comSetelah selesai, tekan
Untuk memeriksa sama ada anda boleh mengakses fakta global web_url, jalankan print_global_fact.keladi buku main lagi seperti berikut:
$ ansible-playbook playbooks / print_global_fact.keladi
Seperti yang anda lihat, semua host dalam fail inventori saya dapat mengakses fakta global web_url.
Bekerja dengan Fakta Kelompok Ansible:
Di bahagian ini, saya akan menunjukkan kepada anda cara menentukan fakta / pemboleh ubah kumpulan Ansible dalam fail inventori anda dan mengaksesnya dari buku main Ansible anda. Saya juga akan menunjukkan cara menentukan fakta / pemboleh ubah kumpulan dalam fail yang berasingan.
Pertama, buka tuan rumah fail inventori dengan arahan berikut:
hos $ nano
Sekiranya anda mempunyai kumpulan tuan rumah kumpulan1, kemudian anda menambahkan fakta kumpulan / pemboleh ubah untuk kumpulan inang tersebut dalam kumpulan1: vars bahagian fail inventori anda.
[kumpulan1]…
[kumpulan1: vars]
pemboleh ubah1 = nilai1
pemboleh ubah2 = nilai2
Sebagai contoh, untuk menambahkan fakta / pemboleh ubah kumpulan nama domain dan pangkalan data_kembali untuk laman web kumpulan tuan rumah, anda boleh menaip baris bertanda dalam fail inventori anda.
Setelah selesai, tekan
Untuk mencetak dan menguji sama ada kita dapat mengakses fakta kumpulan, buat buku permainan baru print_group_facts.keladi di dalam buku permainan / direktori seperti berikut:
Buku main $ nano / print_group_facts.keladi
Taipkan baris berikut di print_group_facts.keladi fail.
- hos: webpengguna: tidak boleh dimakan
tugas:
- nama: Mencetak fakta kumpulan
nyahpepijat:
msg: 'Nama Domain: domain_name Latar Belakang Pangkalan Data: database_backend'
Setelah selesai, tekan
Sekarang, jalankan print_group_facts.keladi buku permainan seperti berikut:
$ ansible-playbook playbooks / print_group_facts.keladi
Seperti yang anda lihat, host di laman web kumpulan boleh mengakses nama domain dan pangkalan data_kembali fakta kumpulan / pemboleh ubah.
Sekarang, mari bersihkan fail inventori dan lihat bagaimana menambahkan fakta / pemboleh ubah kumpulan dalam fail yang berasingan.
Pertama, buka tuan rumah fail inventori seperti berikut:
$ nano fakta
Tanggalkan garis yang ditandakan dari tuan rumah fail inventori. Setelah selesai, tekan
Semasa kami menambahkan pemboleh ubah kumpulan untuk laman web kumpulan hos, buat fail baru laman web (sama dengan nama kumpulan) di kumpulan_vars / direktori seperti berikut:
$ nano group_vars / web
Untuk menambahkan fakta kumpulan nama domain dan pangkalan data_kembali untuk laman web kumpulan tuan rumah, tambahkan baris berikut di kumpulan_vars / web fail.
domain_name: web.linuxhint.compangkalan data_balik: pgsql
Setelah selesai, tekan
Untuk memeriksa sama ada host di laman web kumpulan boleh mengakses fakta kumpulan, jalankan print_group_facts.keladi buku permainan seperti berikut:
$ ansible-playbook playbooks / print_group_facts.keladi
Seperti yang anda lihat, host di laman web kumpulan boleh mengakses nama domain dan pangkalan data_kembali fakta kumpulan / pemboleh ubah.
Bekerja dengan Fakta Hos yang Boleh Dibaca:
Di bahagian ini, saya akan menunjukkan kepada anda bagaimana untuk menentukan fakta / pemboleh ubah host yang tidak dapat dilihat dalam fail inventori anda dan mengaksesnya dari buku main Ansible anda. Saya juga akan menunjukkan kepada anda cara menentukan fakta / pemboleh ubah host dalam fail yang berasingan.
Pertama, buka tuan rumah fail inventori dengan arahan berikut:
hos $ nano
Anda boleh menambahkan fakta / pemboleh ubah host selepas nama DNS atau alamat IP host dalam fail inventori anda seperti berikut:
www.domain1.com pemboleh ubah1 = nilai1 pemboleh ubah2 = nilai2192.168.22.2 pemboleh ubah1 = nilai3 pemboleh ubah2 = nilai4
Sebagai contoh, anda boleh menambahkan fakta / pemboleh ubah host nama domain dan pangkalan data_kembali untuk tuan rumah vm3.angguk.com dan vm4.angguk.com, seperti yang ditandakan pada tangkapan skrin di bawah.
Perhatikan bahawa nilai nama domain dan pangkalan data_kembali fakta / pemboleh ubah berbeza untuk setiap tuan rumah.
Setelah selesai menambahkan fakta / pemboleh ubah host, tekan
Oleh kerana saya telah menambah fakta / pemboleh ubah yang sama seperti pada contoh kumpulan / pemboleh ubah, kita boleh menggunakan print_group_facts.keladi buku permainan untuk menguji kebolehcapaian fakta / pemboleh ubah ini juga.
Jalankan print_group_facts.keladi buku permainan seperti berikut:
buku permainan $ ansible-playbook / print_group_facts.keladi
Seperti yang anda lihat, fakta / pemboleh ubah host dapat diakses oleh host yang ditentukan mereka. Nilai juga berbeza untuk setiap hos.
Oleh kerana setiap hos berada dalam baris berasingan dalam fail inventori saya, saya dapat menambahkan fakta / pemboleh ubah host dengan mudah dalam fail inventori saya. Tetapi, jika anda menggunakan julat untuk menentukan host dalam fail inventori anda seperti yang ditandakan pada tangkapan skrin di bawah, anda tidak dapat menambahkan fakta / pemboleh ubah host seperti itu.
Anda boleh menambahkan fakta / pemboleh ubah host dalam fail yang berasingan, seperti yang anda lakukan untuk fakta / pemboleh ubah global dan kumpulan.
Untuk menambah fakta / pemboleh ubah host untuk vm5.angguk.com hos, buat fail baru vm5.angguk.com (sama dengan nama DNS host) di host_vars / direktori seperti berikut:
$ nano host_vars / vm5.angguk.com
Anda boleh menambah fakta / pemboleh ubah host db_port dan db_nama untuk tuan rumah vm5.angguk.com dengan baris berikut.
db_port: 3306db_name: demo1
Setelah selesai, tekan
Dengan cara yang sama, untuk menambahkan fakta / pemboleh ubah host untuk host vm6.angguk.com, buat fail baru vm6.angguk.com di dalam host_vars / direktori seperti berikut:
$ nano host_vars / vm6.angguk.com
Anda boleh menambah fakta / pemboleh ubah host db_port dan db_nama untuk tuan rumah vm6.angguk.com dengan baris berikut.
db_port: 8877db_name: aplikasi1
Setelah selesai, tekan
Untuk mencetak dan menguji sama ada kita dapat mengakses fakta / pemboleh ubah host, buat buku main baru print_host_facts.keladi di dalam buku permainan / direktori seperti berikut:
Buku main / cetak_host_facts $ nano.keladi
Sekarang, ketik baris berikut di print_host_facts.keladi fail.
- hos: pangkalan datapengguna: tidak boleh dimakan
tugas:
- nama: Mencetak fakta hos
nyahpepijat:
msg: 'Nama Pangkalan Data: db_name Port Pangkalan Data: db_port'
Setelah selesai, tekan
Untuk memeriksa sama ada hos vm5.angguk.com dan vm6.angguk.com boleh mengakses fakta / pemboleh ubah host, jalankan print_host_facts.keladi buku permainan seperti berikut:
$ ansible-playbook playbooks / print_host_facts.keladi
Seperti yang anda lihat, tuan rumah vm5.angguk.com dan vm6.angguk.com boleh mengakses db_nama dan db_port hos fakta / pemboleh ubah.
Menggabungkan Semuanya: Keutamaan Fakta Tidak Boleh Dikenal
Dalam bahagian ini, saya akan membincangkan mengenai fakta yang boleh didengar / didahului pemboleh ubah. Oleh itu, mari kita mulakan.
Sebelum kita bermula, mari bersihkan fail inventori.
Buka tuan rumah fail inventori dengan arahan berikut:
hos $ nano
Keluarkan bahagian yang ditandakan dari fail inventori.
Ini adalah bagaimana fail inventori anda harus dilihat pada tahap ini.
Sekarang, tambahkan baris yang ditandakan dalam fail inventori anda. Garis-garis ini menambah fakta / pemboleh ubah global fakta_kawasan dan pelabuhan.
Kemudian, tambahkan baris yang ditandakan dalam fail inventori anda. Garis-garis ini menambah fakta_kawasan dan pelabuhan fakta / pemboleh ubah untuk tuan rumah di pangkalan data kumpulan.
Akhir sekali, tambah fakta_kawasan dan pelabuhan host fakta / pemboleh ubah untuk vm3.angguk.com dan vm4.angguk.com hos, seperti yang ditunjukkan dalam tangkapan skrin di bawah.
Setelah selesai, tekan
Untuk mencetak nilai fakta / pemboleh ubah global, kumpulan dan hos, buat buku main baru fakta_kepentingan.keladi di dalam buku permainan / direktori seperti berikut:
Buku permainan $ nano / fact_precedence.keladi
Taipkan baris berikut di fact_precedence.keladi fail.
- tuan rumah: semuapengguna: tidak boleh dimakan
tugas:
- nama: Mencetak semua fakta
nyahpepijat:
msg: 'Fakta Skop: fact_scope Port: port'
Setelah selesai, tekan
Untuk mencetak fakta / pembolehubah global, kumpulan, dan host, jalankan fact_precedence.keladi buku permainan seperti berikut:
$ ansible-playbook playbooks / fact_precedence.keladi
Seperti yang anda lihat, fakta / pembolehubah global, kumpulan, dan inang dicetak.
Perhatikan bahawa fakta kumpulan / pemboleh ubah menggantikan fakta / pemboleh ubah global (1). Juga, perhatikan bahawa fakta / pemboleh ubah host menggantikan kedua-dua kumpulan / fakta global / pemboleh ubah (2).
Fakta / keutamaan variabel Ansible adalah seperti berikut:
Fakta hos> Fakta kumpulan> Fakta globalKesimpulan:
Setelah membaca artikel ini, anda seharusnya dapat bekerja dengan selesa dengan fakta / pembolehubah global, kumpulan, dan host Ansible. Ingatlah keutamaan fakta kebiasaan Ansible. Ini akan membantu anda menyahpepijat buku main Ansible anda dengan lebih mudah.