GNU/Linux >> Belajar Linux >  >> Linux

File Inventaris Dan Konfigurasi yang Mungkin

Beberapa hari yang lalu, kita telah membahas cara menyiapkan lab Ansible tiga simpul menggunakan Vagrant di Linux. Dalam artikel ini, kita akan mempelajari konsep dasar Ansible seperti inventaris Ansible dan file konfigurasi secara mendetail.

Struktur Dasar Kemungkinan

Saat Anda mulai bekerja dengan ansible, ada dua file penting yang harus Anda pahami. Salah satunya adalah Inventaris yang memungkinkan file dan yang kedua adalah Konfigurasi yang memungkinkan berkas.

Konfigurasi file berisi semua konfigurasi yang memungkinkan akan digunakan selama waktu berjalan. Ketika Anda menginstal ansible menggunakan OS package manager, maka Anda dapat melihat ada file konfigurasi default bernama "ansible.cfg " dibuat di /etc/ansible direktori.

File inventaris berisi alamat IP atau informasi DNS tentang daftar host terkelola yang ingin kami tangani. Ansible akan membaca nama host dari file inventaris dan tugas/permainan akan dijalankan pada node tersebut. File inventaris dapat dibuat di ini , yaml , dan json format.

Di bawah ini adalah struktur proyek saya. Saya memiliki ansible.cfg file konfigurasi, file host, dan buku pedoman yang ditulis dalam yaml formatnya.

Ketika saya memicu playbook, ansible akan membaca konfigurasi dari ansible.cfg file dan detail host dari file host untuk menjalankan drama.

[email protected]:~/ansible_project$ tree .
.
├── ansible.cfg
├── hosts
└── playbook.yml

0 directories, 3 files

Mari kita bicara secara detail tentang kedua file ini dan akhirnya kita akan menjalankan beberapa perintah adhoc.

File Konfigurasi yang Memungkinkan

Ansible menggunakan file konfigurasi untuk memuat parameter yang diperlukan untuk menjalankan tugas yang memungkinkan. Jika Anda telah menginstal memungkinkan menggunakan pengelola paket , Anda akan memiliki ansible.cfg file di /etc/ansible direktori.

Di bawah ini adalah contoh dari ansible.cfg berkas.

Ansible akan mencari file konfigurasi dengan urutan sebagai berikut.

  • ANSIBLE_CONFIG - variabel lingkungan
  • ansible.cfg - Direktori saat ini tempat Anda menjalankan perintah
  • .ansible.cfg - Direktori beranda pengguna
  • /etc/ansible/ansible.cfg - Dalam /etc/ansible direktori

Jalankan ansible --version perintah untuk melihat file konfigurasi mana yang mungkin dipilih.

$ ansible --version
ansible [core 2.12.3]
  config file = /home/vagrant/ansible_project/ansible.cfg
  configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/vagrant/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0]
  jinja version = 2.10.1
  libyaml = True

Saya telah membuat direktori proyek khusus dan membuat ansible.cfg mengajukan. File konfigurasi saya hanya berisi dua properti, lokasi inventaris, dan pemeriksaan kunci host yang dinonaktifkan.

[defaults]
inventory = /home/karthick/ansible_project/hosts
host_key_checking = False

Ada banyak properti lain, tetapi saat ini Anda dapat mulai menggunakannya dengan menambahkan properti "inventaris" saja.

File Inventaris yang Memungkinkan

Dalam file inventaris, kami akan memberikan alamat IP atau DNS nama server, perangkat jaringan, layanan cloud, atau apa pun yang memungkinkan untuk bekerja.

Persediaan dapat ditulis dalam ini , json , dan yaml format dan Anda juga memiliki skrip untuk mengonversi satu format inventaris ke format lain.

Secara default, Anda dapat menemukan file inventaris (host) di /etc/ansible direktori jika Anda telah menginstal mungkin menggunakan manajer paket OS. Selalu disarankan untuk membuat direktori proyek terpisah dan membuat inventaris dan file konfigurasi.

Tabel di bawah ini menunjukkan bagaimana kemungkinan lab saya diatur. Saya akan membuat file inventaris untuk penyiapan lab ini dan akan menjalankan modul ping untuk mendemonstrasikan cara kerja berbagai hal di file inventaris.

JENIS NODE NAMA KODE ALAMAT IP Rasa OS
Simpul Kontrol controller.anslab.com 192.168.10.3 ubuntu/focal64
Node Terkelola managed1.anslab.com 192.168.10.4 ubuntu/focal64
Node Terkelola managed2.anslab.com 192.168.10.5 ubuntu/focal64

File Inventaris Tanpa Pengelompokan Eksplisit

File inventaris memiliki konsep yang disebut pengelompokan di mana Anda akan mengelompokkan sumber daya Anda dan menjalankan tugas terhadap grup itu. Itu akan berada di struktur berikut.

[group-name]
Resource1
Resource2
....
Resource N

Anda dapat membuat file inventaris tanpa menggunakan grup. Dalam hal ini, Ansible akan menggunakan dua grup default "semua" dan "tidak dikelompokkan" .

  • SEMUA KELOMPOK - Semua sumber daya yang tersedia di file inventaris secara default akan ditetapkan ke semua grup .
  • TIDAK TERPISAH - Sumber daya yang bukan bagian dari grup yang ditentukan pengguna akan secara otomatis ditetapkan ke grup yang tidak dikelompokkan .

Saya telah membuat file inventaris tanpa grup apa pun. Sekarang, kedua node ini akan berada di bawah semua grup serta grup yang tidak dikelompokkan.

$ cat hosts
managed1.anslab.com
managed2.anslab.com

Anda dapat menjalankan perintah yang memungkinkan berikut untuk memeriksa daftar host di bawah semua dan grup yang tidak dikelompokkan.

$ ansible all --list-hosts
  hosts (2):
    managed1.anslab.com
    managed2.anslab.com
$ ansible ungrouped --list-hosts
  hosts (2):
    managed1.anslab.com
    managed2.anslab.com

File Inventaris Dengan Pengelompokan

Seperti yang telah diramalkan, pengelompokan adalah cara yang bagus untuk mengatur sumber daya Anda sehingga akan mudah bagi Anda untuk menjalankan tugas terhadap grup tertentu. Saya memiliki dua node yang dikelola dan mereka menjalankan Ubuntu 20.04LTS.

Katakanlah saya ingin mengelompokkan file inventaris saya berdasarkan jenis OS maka file inventaris akan terlihat seperti di bawah ini. Di sini ubuntu adalah nama grup.

[ubuntu]
managed1.anslab.com
managed2.anslab.com

Tugas dapat dijalankan terhadap grup ini.

$ ansible ubuntu -m ping -o
managed1.anslab.com | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
managed2.anslab.com | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}

Jika saya memeriksa grup "tidak dikelompokkan" sekarang, tidak akan ada host di sana.

$ ansible ungrouped --list-hosts
[WARNING]: No hosts matched, nothing to do
hosts (0):

Anda dapat membuat grup sebanyak yang Anda inginkan dalam file inventaris dan menggunakan nama sumber daya yang sama.

[ubuntu]
managed1.anslab.com
managed2.anslab.com

[dev]
managed1.anslab.com

[test]
managed2.anslab.com
$ ansible ubuntu -m ping -o
$ ansible dev -m ping -o
$ ansible test -m ping -o

File Inventaris Dengan Rentang

Bila Anda memiliki pola penamaan umum untuk sumber daya Anda, Anda dapat menggunakan rentang. Lihatlah contoh di bawah ini di mana Alih-alih mengulangi DNS, saya telah menggunakan rentang untuk mempersingkatnya.

[ubuntu]
managed[1:2].anslab.com

File Inventaris Dengan Grup Turunan

Anda dapat membuat grup dan menggunakan nama grup lain di bawahnya. Lihatlah contoh di bawah ini, saya memiliki grup ubuntu yang memiliki nama server saya. Saya telah membuat grup lain bernama server yang berisi grup ubuntu.

Penting bagi Anda untuk menambahkan :anak-anak ke nama grup jika tidak, grup server akan memperlakukan "ubuntu " sebagai nama server, bukan nama grup.

[ubuntu]
managed[1:2].anslab.com

[server:children]
ubuntu

File Inventaris Dengan Host Vars &Grup Vars

File inventaris mendukung variabel host &grup. Variabel host tidak lain adalah variabel dan nilainya diteruskan ke host dalam file inventaris. Dalam konfigurasi di bawah ini saya memberi tahu Anda dapat menggunakan ostechnix sebagai pengguna my saya dan daripada menggunakan port ssh standar, gunakan port 2222 .

[ubuntu]
managed1.anslab.com ansible_user=ostechnix ansible_port=2222
managed2.anslab.com ansible_user=ostechnix ansible_port=2222

Grup vars sama dengan vars host tetapi variabel akan diterapkan ke seluruh grup alih-alih satu host. Anda dapat melihat dari konfigurasi di atas, ansible_user, dan ansible_port adalah sama untuk kedua node. Jadi Anda dapat membuat grup var di mana variabel akan diwarisi oleh semua node dalam grup. Anda perlu menambahkan :vars untuk menjadikan grup sebagai vars grup.

[ubuntu]
managed1.anslab.com
managed2.anslab.com

[ubuntu:vars]
ansible_user=ostechnix
ansible_port=2222

Perhatian: Jika Anda memiliki grup var dan host var untuk node yang sama, maka host var akan diprioritaskan.

Ada banyak parameter inventaris yang dapat Anda gunakan dan Anda bisa mendapatkan daftarnya dari dokumen resmi .

File Inventaris Dengan Alias

Anda dapat membuat alias untuk sumber daya seperti di bawah ini. Di sini m1 dan m2 adalah alias.

[ubuntu]
m1 ansible_host=managed1.anslab.com
m2 ansible_host=managed2.anslab.com

Sekarang alias ini dapat digunakan untuk menjalankan beberapa tugas.

$ ansible m1 -m ping -o
m1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}
$ ansible m2 -m ping -o
m2 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"},"changed": false,"ping": "pong"}

File Inventaris Dalam Format YAML

File inventaris juga dapat ditulis dalam format YAML. Apapun yang telah kita bahas di bagian sebelumnya ditulis dalam format YAML.

Gambar di bawah mewakili dua node dengan beberapa variabel host.

Gambar di bawah mewakili dua node dengan variabel grup.

Perintah Inventaris yang Dimungkinkan

Ansible memiliki perintah inventaris yang akan sangat membantu untuk melihat informasi file inventaris.

Untuk mendapatkan daftar opsi yang didukung, jalankan perintah bantuan.

$ ansible-inventory --help

Untuk mendapatkan detail inventaris dalam format grafik, gunakan --graph bendera. Jika Anda memiliki file inventaris yang berbeda, Anda dapat menggunakan -i tandai untuk secara eksplisit menunjuk ke file inventaris.

$ ansible-inventory --graph

Anda dapat mencetak informasi var host dan grup dengan meneruskan --vars tandai bersama dengan --graph bendera.

$ ansible-inventory --graph --vars

Saat Anda menggunakan --list bendera, output akan dalam format JSON.

$ ansible-inventory -list

Anda bisa mendapatkan informasi tentang node tertentu menggunakan --host bendera.

$ ansible-inventory --host managed1.anslab.com

Kesimpulan

Dalam artikel ini, kita telah melihat konsep penting yang membentuk inti dari arsitektur yang memungkinkan. Jika Anda seorang pemula, fokuslah untuk membangun inventaris dengan format ini dan selanjutnya Anda akan mengetahui lebih banyak tentang praktik terbaik saat Anda mulai mengerjakan proyek produksi.

Baca Selanjutnya:

  • Otentikasi SSH dan Eskalasi Hak Istimewa yang Memungkinkan
  • Memulai Perintah Ad Hoc yang Memungkinkan

Linux
  1. Cara Menemukan File Konfigurasi MySQL, PHP dan Apache

  2. Cara Mengelola Inventaris Host Statis dan Dinamis yang Mungkin

  3. wget vs curl:Cara Mengunduh File Menggunakan wget dan curl

  1. Cara Mudah Menyembunyikan File dan Direktori di Linux

  2. Panduan Ansible:Kelola File menggunakan Ansible

  3. Cara mengekstrak file .gz dan .tar.gz di Linux

  1. Perintah Ls di Linux (Daftar File dan Direktori)

  2. Buat dan hapus file swap di Ubuntu

  3. perbedaan antara file perangkat dan driver perangkat