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):
- Kami akan memicu perintah reboot menggunakan
shell
modul. - 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