GNU/Linux >> Belajar Linux >  >> Linux

Layanan Otomatis Sekarang dengan Platform Otomatisasi Red Hat Ansible

Sysadmin diminta secara teratur untuk menyelesaikan permintaan layanan dengan cepat guna melayani kebutuhan bisnis dan pengguna dengan lebih baik, dengan semakin banyak admin yang mengandalkan Ansible untuk melakukannya. Bagaimana kami, sebagai sysadmin, dapat merespons lebih cepat ketika permintaan ini muncul?

Manajemen layanan TI (ITSM) adalah kumpulan kebijakan dan proses untuk pengelolaan dan dukungan layanan TI. Fokus utama ITSM adalah meningkatkan nilai rantai layanan pelanggan. Namun tanpa dukungan otomatisasi yang tepat, penyediaan layanan TI dapat dengan cepat menjadi pemborosan waktu bagi administrator.

[ Anda mungkin juga menyukai: Panduan memulai cepat untuk Ansible untuk sysadmin Linux ]

Di sinilah Red Hat Ansible Automation Platform dan Red Hat Ansible Certified Content Collection for ServiceNow berperan. Ansible Automation (dengan beberapa bantuan dari konten Ansible yang sudah ada) dapat mengotomatiskan hampir semua tugas, sedangkan modul dari Koleksi Bersertifikat ini memungkinkan Anda untuk terus memperbarui informasi ServiceNow.

Koleksi ini dirancang dan dikembangkan oleh tim XLAB Steampunk bekerja sama erat dengan Red Hat Ansible, secara khusus mengingat pengguna akhir. Modul ServiceNow memiliki antarmuka pengguna yang intuitif yang didukung oleh implementasi yang kuat, menawarkan dukungan untuk hal-hal yang diharapkan oleh pengguna Ansible (mis., mode periksa dan deteksi perubahan).

Dalam posting ini, saya menunjukkan beberapa contoh Playbook Ansible yang menangani tugas-tugas admin penting seperti:

  1. Memperbarui insiden, masalah, dan permintaan perubahan
  2. Memperbarui database manajemen konfigurasi ServiceNow (CMDB)
  3. Menggunakan CMDB sebagai sumber inventaris

Memasang Koleksi Konten Bersertifikat untuk ServiceNow

Anda dapat mengunduh servicenow.itsm Koleksi dari hub otomatisasi atau Ansible Galaxy. Sebelum Anda dapat mengakses konten di hub otomatisasi, Anda harus terlebih dahulu mengonfigurasi kredensial Anda di file konfigurasi Ansible. Untuk detailnya, silakan lihat posting blog "Hands On With Ansible Collections".

Setelah memiliki kredensial, Anda dapat menginstal ServiceNow Collection dengan menjalankan perintah berikut:

$ ansible-galaxy collection install servicenow.itsm

Jika semuanya berjalan sesuai rencana, Anda kini memiliki akses ke modul berikut:

  1. servicenow.itsm.incident untuk mengelola tiket insiden
  2. servicenow.itsm.problem untuk berinteraksi dengan masalah
  3. servicenow.itsm.change_request untuk menangani perubahan
  4. servicenow.itsm.configuration_item untuk mengelola CMDB

Setiap modul juga memiliki mitra yang memberi Anda akses hanya baca ke data ServiceNow.

Koleksi Konten Bersertifikat untuk ServiceNow juga berisi plugin inventaris yang disebut servicenow.itsm.now yang memungkinkan Anda menggunakan CMDB sebagai sumber inventaris.

Untuk memastikan tidak ada yang salah, tampilkan dokumentasi untuk salah satu modul dengan menjalankan perintah berikut:

$ ansible-doc servicenow.itsm.incident

Jika Ansible tidak meneriaki kami, Anda sudah siap.

Mengelola insiden, dengan cara yang Mungkin

Membuat tiket insiden baru menggunakan Ansible cukup mudah, tetapi sebelum melakukannya, Anda perlu memberi tahu Ansible di mana instance ServiceNow Anda berada dan kredensial apa yang digunakan. Lakukan itu dengan menyetel tiga variabel lingkungan:

$ export SN_HOST='https://dev12345.service-now.com'
$ export SN_USERNAME='user'
$ export SN_PASSWORD='pass'

Setelah kredensial Anda siap, Anda dapat membuat insiden baru. Playbook Ansible minimal akan terlihat seperti ini:

---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Create new incident
      servicenow.itsm.incident:
        state: new
        short_description: Demo incident

Setelah buku pedoman sebelumnya selesai dijalankan, Anda akan menemukan insiden baru yang terdaftar di ServiceNow.

Anda dapat memperbarui insiden yang ada dengan memberikan nomor tiket atau id sistem dari catatan insiden. Ansible akan membandingkan status insiden saat ini dan yang diinginkan serta membuat perubahan yang diperlukan untuk menyelaraskannya.

---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Update incident
      servicenow.itsm.incident:
        number: INC0010022
        state: in_progress

Jika Anda menjalankan Ansible dengan --diff switch, itu akan melaporkan perubahan apa yang diterapkan ke catatan insiden:

TASK [Update incident with a problem information] ***************************
--- before
+++ after
@@ -50,7 +50,7 @@
     "parent": "",
     "parent_incident": "",
     "priority": "5",
-    "state": "new",
+    "state": "in_progress",
     "reassignment_count": "0",
     "reopen_count": "0",
     "reopened_by": "",
@@ -71,10 +71,10 @@
     "sys_domain": "global",
     "sys_domain_path": "/",
     "sys_id": "2396e496074f2010d4a1fa9e7c1ed01c",
-    "sys_mod_count": "0",
+    "sys_mod_count": "1",
     "sys_tags": "",
     "sys_updated_by": "admin",

Anda juga dapat menghapus insiden yang ada dengan menyetel status parameter menjadi absent .

---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Delete incident
      servicenow.itsm.incident:
        number: INC0010022
        state: absent

Anda dapat berinteraksi dengan masalah dan mengubah permintaan dengan cara yang sama. Namun, mengelola item konfigurasi sedikit berbeda, jadi mari kita fokus pada area ini selanjutnya.

Memperbarui CMDB

Karena CMDB ServiceNow memiliki lebih dari satu jenis item konfigurasi, Anda perlu menentukan sys_class_name parameter saat menambahkan item baru. Secara default, servicenow.itsm.configuration_item modul akan menggunakan cmdb_ci nama kelas sistem, tetapi Anda dapat mengubahnya ke turunan cmdb_ci lainnya kelas.

---
- name: Demonstrate CMDB management
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Simulate VM creation
      ansible.builtin.set_fact:
        instance:
          name: some-name
          id: vm1234567890
          public_ip_address: 1.2.3.4

    - name: Register the newly-created VM instance
      servicenow.itsm.configuration_item:
        name: "{{ instance.name }}"
        sys_class_name: cmdb_ci_vm_instance
        ip_address: "{{ instance.public_ip_address }}"
        other:
          vm_inst_id: "{{ instance.id }}"

Anda menggunakan lainnya generik parameter yang dapat berisi pasangan nilai kunci arbitrer dalam tugas terakhir. Karena tabel ServiceNow dapat diperluas, semua modul memiliki parameter ini. Anda dapat menggunakan lainnya parameter untuk menyetel nilai kolom yang tidak diekspos modul sebagai parameter tingkat atas. Semua modul ServiceNow Ansible memiliki parameter ini.

Saat memperbarui atau menghapus item yang ada, Anda tidak perlu menentukan nama kelas sistem karena modul akan secara otomatis mengambil nama dari rekaman saat ini. Namun, Anda harus memberikan sys_id nilai parameter.

---
- name: Demonstrate CMDB item update and deletion
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Update the VM state
      servicenow.itsm.configuration_item:
        sys_id: b0ccabf1c0a80009001f14fd151d8df0
        install_status: in_maintenance

    - name: Remove item from CMDB
      servicenow.itsm.configuration_item:
        sys_id: b0ccabf1c0a80009001f14fd151d8df0
        state: absent

Inventaris dinamis

CMDB juga dapat berfungsi sebagai sumber inventaris. Karena item konfigurasi yang mewakili server dan mesin virtual (VM) biasanya berisi alamat IP, Anda dapat menggunakannya sebagai sumber inventaris.

Konfigurasi minimal untuk plugin inventaris terlihat seperti ini:

---
plugin: servicenow.itsm.now

Saat digunakan sebagai sumber inventaris, plugin akan mencantumkan semua server dari cmdb_ci_server meja. Anda dapat secara otomatis mengelompokkan dan memfilter host inventaris berdasarkan ketentuan yang ditentukan di grup_menurut opsi konfigurasi:

---
plugin: servicenow.itsm.now
group_by:
  os:
    includes:
      - Linux Red Hat
      - Windows XP

Pada contoh sebelumnya, Ansible membuat dua grup:satu untuk Windows XP dan satu untuk komputer Linux. Plugin inventaris melakukan pemfilteran sebanyak mungkin di backend, meminimalkan jumlah data yang diunduh.

Anda juga dapat mengonfigurasi nilai kolom mana yang ditambahkan plugin inventaris sebagai variabel host:

---
plugin: servicenow.itsm.now

columns:
  - name
  - classification
  - cpu_type

group_by:
  os:
    includes:
      - Linux Red Hat
      - Windows XP

Untuk menguji konfigurasi, jalankan perintah berikut:

$ ansible-inventory -i inventory.now.yaml --graph --vars

Dengan asumsi bahwa Anda menyimpan konfigurasi inventaris di inventory.now.yaml mengajukan. Outputnya akan terlihat seperti ini:

@all:
 |--@Linux_Red_Hat:
 |  |--P1000019
 |  |  |--{ansible_host = my1.server.com}
 |  |  |--{classification = Production}
 |  |  |--{cpu_type = Intel}
 |  |  |--{name = SAP-SD-01}
 |--@Windows_XP:
 |  |--P1000020
 |  |  |--{ansible_host = my2.server.com}
 |  |  |--{classification = Production}
 |  |  |--{cpu_type = Intel}
 |  |  |--{name = SAP-SD-02}
 |--@ungrouped:

Dan sekarang setelah Anda tahu cara menggunakan modul individual dan plugin inventaris, sekarang saatnya untuk grand final.

Resolusi otomatis dari permintaan perubahan standar

Permintaan perubahan standar adalah prosedur yang telah disetujui sebelumnya dengan risiko minimal, dan properti ini menjadikannya kandidat utama untuk otomatisasi.

Jadi tanpa basa-basi lagi, inilah pedoman yang akan:

  1. Cari permintaan perubahan berdasarkan nomornya
  2. Tandai permintaan perubahan sebagai sedang dikerjakan
  3. Ambil item konfigurasi yang terpengaruh dari permintaan perubahan
  4. Lakukan operasi yang diminta pada item konfigurasi tersebut, dan akhirnya
  5. Tutup permintaan perubahan
---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Mark change request as in progress
      servicenow.itsm.change_request:
        number: "{{ change_number }}"
        state: implement
      register: change

    - name: Fetch configuration item we will update
      servicenow.itsm.configuration_item_info:
        sys_id: "{{ change.record.cmdb_ci }}"
      register: citem

    - name: Create an in-memory inventory with the item
      ansible.builtin.add_host:
        name: host_to_update
        ansible_host: "{{ citem.record.ip_address }}"

- hosts: host_to_update
  tasks:
    - name: Simulate some work
      ansible.builtin.debug:
        msg: Doing real work here

- hosts: localhost
  gather_facts: false
  tasks:
    - name: Mark change request as done
      servicenow.itsm.change_request:
        number: "{{ change_number }}"
        state: closed

Siapa yang menyangka bahwa seseorang dapat memasukkan kehebatan sebanyak ini ke dalam satu buku pedoman?

[ Mencari lebih banyak tentang otomatisasi sistem? Mulailah dengan The Automated Enterprise, buku gratis dari Red Hat. ] 

Masa depan itu otomatis

Saya membahas cukup banyak namun masih hanya berhasil menggores permukaan dari apa yang mungkin. Jadi pergilah ke hub otomatisasi atau Ansible Galaxy, unduh ServiceNow ITSM Ansible Collection, dan mulailah menjelajah. Anda juga dapat melihat cara kerja solusi baru ini di webinar ini.

Jika Anda memerlukan bantuan terkait otomatisasi dan integrasi proses ServiceNow Anda dengan Red Hat Ansible Automation Platform, hubungi tim kami di XLAB Steampunk yang dapat membantu Anda memulai dan menjalankannya dalam waktu singkat.


Linux
  1. Mengotomatiskan rilis upstream dengan rilis-bot

  2. Menggunakan Ansible untuk menyebarkan Microsoft SQL Server 2019 di Red Hat Enterprise Linux 8

  3. Apa itu Red Hat Linux?

  1. Daftarkan Red Hat Enterprise Linux dan lampirkan langganan dengan Ansible

  2. Cara mencerminkan repositori di Linux

  3. Memperbarui gairah saya di tempat kerja dengan Ansible

  1. Cara mengatur SSL/TLS dengan Apache httpd di Red Hat

  2. Bekerja dengan dependensi paket di Red Hat Linux

  3. Bagaimana cara menambahkan repositori ke Red Hat Linux dengan dan tanpa proxy