Dalam bentuknya yang paling sederhana, inventaris adalah file statis. Ini sangat ideal saat Anda memulai dengan Ansible, tetapi saat otomatisasi berkembang, hal itu menjadi tidak mencukupi.
Dan itulah kenapa:
- Bagaimana cara memperbarui dan memelihara daftar lengkap node yang dipantau saat ada sesuatu yang terus berubah, ketika beban kerja - dan setelahnya node tempat mereka berjalan - muncul dan menghilang?
- -, ?
Jawaban atas kedua pertanyaan ini memberikan inventori dinamis (inventaris dinamis a ) - skrip atau plugin yang ingin menjadi unit otomasi, mengacu pada sumber kebenaran (sumber kebenaran). Selain itu, inventaris dinamis secara otomatis mengklasifikasikan node ke dalam grup sehingga Anda dapat memilih sistem target dengan lebih akurat untuk melakukan otomatisasi yang memungkinkan.
Plugin inventaris memberi pengguna Ansible kemampuan untuk mengakses platform eksternal untuk menemukan node target secara dinamis dan menggunakan platform ini sebagai sumber kebenaran saat membuat inventaris. Daftar sumber standar yang Mungkin mencakup platform cloud AWS EC2, Google GCP, dan Microsoft Azure, dan ada banyak plugin inventaris lainnya untuk Ansible.
Ansible Tower hadir dengan sejumlah plugin inventaris yang langsung berfungsi dan, selain platform cloud di atas, menyediakan integrasi dengan VMware vCenter, Red Hat OpenStack Platform, dan Red Hat Satellite. Untuk plugin ini, cukup memberikan kredensial untuk terhubung ke platform target, setelah itu dapat digunakan sebagai sumber data inventaris di Ansible Tower.
Selain plugin standar yang disertakan dengan Ansible Tower, ada plugin inventaris lain yang didukung oleh komunitas Ansible. Dengan pindah ke Red Hat Ansible Content Collections, plugin ini telah dimasukkan ke dalam koleksinya masing-masing.
Dalam posting ini, kami akan mengambil contoh bekerja dengan plugin inventaris untuk ServiceNow, platform manajemen layanan TI yang populer, di mana pelanggan sering menyimpan informasi tentang semua perangkat mereka di CMDB. Selain itu, CMDB dapat berisi konteks yang berguna untuk otomatisasi, seperti informasi tentang pemilik server, tingkat layanan (produksi / non-produksi), pembaruan yang diinstal, dan jendela pemeliharaan. Plugin inventaris yang memungkinkan dapat bekerja dengan CMDB ServiceNow dan merupakan bagian dari koleksi servicenow di galaxy.ansible.com .
Repositori Git
Untuk menggunakan plugin inventaris dari koleksi di Ansible Tower, Anda harus mengaturnya sebagai sumber proyek. Di Ansible Tower, proyek adalah integrasi dengan beberapa jenis sistem kontrol versi, seperti repositori git, yang dapat digunakan untuk menyinkronkan tidak hanya buku pedoman otomatisasi, tetapi juga variabel dan daftar inventaris.
Repositori kami sebenarnya sangat sederhana:
├── collections
│ └── requirements.yml
└── servicenow.yml
File servicenow.yml berisi detail untuk inventaris plugin. Dalam kasus kami, kami cukup menentukan tabel di CMDB Service Sekarang yang ingin kami gunakan. Dan juga kita mengatur field yang akan ditambahkan sebagai variabel node, ditambah informasi tertentu pada grup yang ingin kita buat.
$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
- key: sn_sys_class_name | lower
prefix: ''
separator: ''
- key: sn_os | lower
prefix: ''
separator: ''
Harap dicatat bahwa ini tidak menentukan instance ServiceNow yang akan kami hubungkan dengan cara apa pun, dan tidak menentukan kredensial apa pun untuk menghubungkan. Kami akan mengkonfigurasi semua ini nanti di Menara Ansible.
File collections / Requirement.yml diperlukan agar Ansible Tower dapat mengunduh koleksi yang diperlukan dan dengan demikian mendapatkan plugin inventaris yang diperlukan. Jika tidak, kami harus menginstal dan memelihara koleksi ini secara manual di semua node Ansible Tower kami.
$ cat collections/requirements.yml
---
collections:
- name: servicenow.servicenow
Setelah kami mendorong konfigurasi ini ke kontrol sumber, kami dapat membuat proyek di Ansible Tower yang terhubung ke repositori terkait. Contoh di bawah ini menautkan Ansible Tower ke repositori github kami. Perhatikan URL SCM: ini memungkinkan Anda untuk mendaftarkan akun untuk terhubung ke repositori pribadi, serta menentukan cabang tertentu, tag atau komit untuk checkout.
Buat kredensial untuk ServiceNow
Seperti yang dinyatakan, konfigurasi di repositori kami tidak berisi kredensial untuk terhubung ke ServiceNow dan tidak menyempurnakan contoh ServiceNow yang akan kami hubungi. Oleh karena itu, untuk mengatur data ini, kami akan membuat kredensial di Ansible Tower. Menurut dokumentasi plugin inventaris ServiceNow , ada sejumlah variabel lingkungan yang akan kita gunakan untuk menyetel parameter koneksi, misalnya, seperti ini:
= username
The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by SN_TABLE
set_via:
env:
- name: SN_USERNAME
Dalam kasus ini, jika variabel lingkungan SN_USERNAME disetel, plugin inventaris akan menggunakannya sebagai akun untuk terhubung ke ServiceNow.
Kita juga perlu mengatur variabel SN_INSTANCE dan SN_PASSWORD.
Namun, Ansible Tower tidak memiliki jenis kredensial seperti itu di mana seseorang dapat menentukan data ini untuk ServiceNow. Tetapi Ansible Tower memungkinkan kami untuk menentukan jenis kredensial khusus , Anda dapat membaca lebih lanjut tentang ini di artikel "Sorotan Fitur Menara Ansible: Kredensial Khusus" .
Dalam kasus kami, konfigurasi masukan untuk kredensial khusus untuk ServiceNow terlihat seperti ini:
fields:
- id: SN_USERNAME
type: string
label: Username
- id: SN_PASSWORD
type: string
label: Password
secret: true
- id: SN_INSTANCE
type: string
label: Snow Instance
required:
- SN_USERNAME
- SN_PASSWORD
- SN_INSTANCE
Kredensial ini akan ditampilkan sebagai variabel lingkungan dengan nama yang sama. Ini dijelaskan dalam konfigurasi injektor:
env:
SN_INSTANCE: '{{ SN_INSTANCE }}'
SN_PASSWORD: '{{ SN_PASSWORD }}'
SN_USERNAME: '{{ SN_USERNAME }}'
Jadi, kami telah menentukan jenis kredensial yang kami butuhkan, sekarang Anda dapat menambahkan akun ServiceNow dan mengatur instance, nama pengguna dan kata sandi, seperti ini:
Kami membuat inventaris
Jadi sekarang kita siap untuk membuat inventaris di Ansible Tower. Sebut saja ServiceNow:
Setelah membuat inventaris, kami dapat melampirkan sumber data ke dalamnya. Di sini kami menunjuk ke proyek yang kami buat sebelumnya dan memasukkan jalur ke file YAML inventaris kami di repositori kontrol sumber, dalam kasus kami itu adalah servicenow.yml di root proyek. Selain itu, akun ServiceNow harus terikat.
Untuk memeriksa bagaimana semuanya bekerja, mari kita coba menyinkronkan dengan sumber data dengan mengklik tombol "Sinkronkan semua". Jika semuanya dikonfigurasi dengan benar, maka node harus diimpor ke inventaris kami:
Harap dicatat bahwa grup yang kami butuhkan juga telah dibuat.
Kesimpulan
Dalam posting ini, kami melihat bagaimana menggunakan plugin inventaris dari koleksi di Ansible Tower menggunakan plugin ServiceNow sebagai contoh. Kami juga telah menetapkan kredensial dengan aman untuk terhubung ke instance ServiceNow kami. Mengikat plugin inventaris dari proyek tidak hanya berfungsi dengan plugin pihak ketiga atau kustom, tetapi juga dapat digunakan untuk mengubah pekerjaan beberapa inventaris biasa. Hal ini memungkinkan Ansible Automation Platform untuk berintegrasi secara mulus dan mulus dengan alat yang ada untuk mengotomatiskan lingkungan TI yang semakin kompleks.
Temukan informasi lebih lanjut tentang topik yang dibahas dalam posting ini, serta aspek lain menggunakan Ansible, di sini:
- Blog untuk otomatisasi menggunakan ServiceNow Ansible .
- .
- Red Hat Automation Hub (cloud.redhat.com).
- Ansible Automation Platform.
*Red Hat . , .