GNU/Linux >> Belajar Linux >  >> Linux

Cara mengotomatiskan reboot sistem menggunakan modul reboot Ansible

Pada artikel ini, saya membahas cara menggunakan Ansible untuk me-reboot mesin Linux atau Windows secara efisien. Memungkinkan reboot modul diperkenalkan di Ansible 2.7 (2018), dan sekarang modul ini adalah bagian dari ansible-base dan termasuk dalam semua instalasi Ansible. Harap dicatat, reboot modul perlu dijalankan dari node pengontrol Ansible dan tidak akan bekerja dengan node seperti localhost.

Mengapa Anda perlu me-reboot node terkelola?

Mem-boot ulang sistem operasi Linux sangat jarang. Sebagian besar waktu, kami dapat mencapai hasil yang diinginkan dengan memulai ulang atau memuat ulang layanan individual setelah perubahan konfigurasi atau pembaruan paket. Namun dalam beberapa kasus, seperti patching atau peningkatan sistem, operasi reboot diperlukan untuk menyelesaikan alur kerja dan efek penuh. Jika Anda menggunakan Ansible untuk manajemen, Anda perlu menyertakan tugas reboot ini untuk menyelesaikan otomatisasi penuh.

Reboot otomatis sangat mudah di Ansible karena Anda memiliki beberapa metode untuk mencapai tugas reboot sistem.

Prasyarat

Pastikan pengguna_jarak jauh— yang Anda gunakan untuk Ansible untuk masuk ke node terkelola—memiliki sudo akses dan izin untuk me-reboot node.

Metode lama yang bagus – Reboot perintah dan tunggu

Di masa lalu, kami biasa me-reboot node terkelola menggunakan Ansible dengan metode dua langkah. (Ada banyak cara, tetapi metode ini adalah praktik umum):

  1. Kami akan memicu perintah reboot menggunakan shell modul.
  2. Kami akan menggunakan wait_for_connection modul untuk memeriksa node kembali online setelah reboot.

Mari saya tunjukkan sebuah contoh.

Tugas pertama adalah shell sederhana modul untuk mem-boot ulang mesin, dan Ansible akan memutuskan sambungan dari node. Pada tugas berikutnya, Ansible akan menunggu node kembali online tetapi dengan batas waktu 300 detik atau lima menit.

- name: Reboot the machine
  shell: "sleep 5 && reboot"

  async: 1
  poll: 0

- name: Wait for the machine to come back online
  wait_for_connection:
    connect_timeout: 60
    sleep: 5
    delay: 5
    timeout: 300

Cukup sederhana bukan? Tunggu, ada metode yang lebih baik dan lebih efisien dengan Ansible reboot modul, dan Anda dapat mencapai tujuan dengan satu tugas.

[ Anda mungkin juga senang membaca: Memperkenalkan Ansible Automation Hub baru ]

Metode baru dan efisien – reboot menggunakan modul reboot Ansible

Memungkinkan reboot modul diperkenalkan di Ansible 2.7 (tahun 2018), dan sekarang modul ini adalah bagian dari ansible-base dan termasuk dalam semua instalasi Ansible. Prasyaratnya sama, tetapi Anda hanya perlu tugas sederhana dengan reboot modul. Memungkinkan reboot modul akan menangani boot ulang sistem atau node yang dikelola, menunggu sistem mati, kembali online, dan merespons perintah.

Anda cukup mem-boot ulang mesin tanpa opsi tambahan apa pun.

- name: Reboot the machine with all defaults options
  reboot:

Ada opsi seperti reboot_timeout untuk menunggu waktu tunggu atau pre_reboot_delay , yang akan menunggu hingga jumlah detik yang ditentukan sebelum reboot. Lihat dokumentasi Ansible Reboot Module untuk detailnya.

Jadi inilah pedoman kami dengan tugas reboot. Anda dapat melihatnya sangat sederhana dan mudah dikelola.

---
- name: Linux Reboot Demo
  hosts: rhel7-base
  gather_facts: no
  remote_user: devops
  become: true
 
  tasks:
    - name: Reboot the machine (Wait for 5 min)
      reboot:
        reboot_timeout: 300

Catatan penting

Jika pengguna_jarak jauh dikonfigurasi dengan sudo kata sandi, pastikan Anda menambahkan -K argumen dan masukkan sudo kata sandi. Ini contohnya:

$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K

Jika Anda menggunakan Menara Ansible, tambahkan sudo kata sandi di antarmuka Kredensial seperti yang ditunjukkan di sini:

Mari kita uji pedomannya.

$ ansible-playbook ansible-os-utils/linux-reboot.yaml -K
BECOME password: 
 
PLAY [Linux Reboot Demo] ************************************************************************************
 
TASK [Reboot the machine (Wait for 5 min)] ******************************************************************
changed: [rhel7-base.lab.local]
 
PLAY RECAP **************************************************************************************************
rhel7-base.lab.local       : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0    

Me-boot ulang mesin Windows

Bagaimana dengan me-reboot mesin Windows? Seperti yang Anda ketahui, Anda dapat mengelola mesin Windows menggunakan Ansible, dan tugas reboot ini akan diperlukan sebagai bagian dari alur kerja otomatisasi Anda.

Berita baiknya adalah, seperti alternatif Windows lainnya, ada win_reboot khusus yang memungkinkan modul untuk menangani tugas ini. Berikut tampilan pengaturannya:

- name: Reboot a Windows Machine
  ansible.windows.win_reboot:
    reboot_timeout: 360

Lihat dokumentasi modul win_reboot Ansible untuk detailnya.

[ Panduan gratis dari Red Hat:5 langkah untuk mengotomatisasi bisnis Anda. ] 

Menutup

Menggunakan reboot atau win_reboot modul di Ansible cukup mudah, dan Anda sudah mempelajarinya. Pastikan Anda memiliki tugas pra-reboot yang tepat (hanya boot ulang jika diperlukan) dan pasca-reboot (untuk memverifikasi layanan atau konfigurasi setelah reboot) di buku pedoman Ansible Anda sebagaimana diperlukan.

Referensi:

  • Memungkinkan reboot
  • Memungkinkan win_reboot

Linux
  1. Cara Memeriksa Uptime Sistem di Linux

  2. Cara membuat Pengguna Linux Menggunakan Ansible

  3. Cara memperbarui/meningkatkan Debian/Ubuntu Linux menggunakan Ansible

  1. Cara Reboot Linux Menggunakan Command Line

  2. Bagaimana cara menunggu server restart menggunakan Ansible?

  3. Bagaimana cara mendapatkan sistem operasi saat ini di MSBuild?

  1. 10 Modul yang memungkinkan untuk otomatisasi sistem Linux

  2. Output Dari Perintah "terakhir"?

  3. Bagaimana cara memeriksa apakah sistem memerlukan reboot