Menggunakan plugin inventaris dari Ansible Content Collections di Ansible Tower

Lingkungan TI menjadi semakin kompleks. Dalam kondisi ini, sangat penting bagi sistem otomasi TI untuk memiliki informasi terkini tentang node yang ada di jaringan dan sedang diproses. Dalam Red Hat Ansible Automation Platform, masalah ini diselesaikan melalui apa yang disebut Inventori ( inventaris a ) - daftar node yang dikelola.







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:



  1. 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?
  2. -, ?


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:





*Red Hat . , .



All Articles