Dalam artikel kami sebelumnya, kami telah membahas apa itu file inventaris dan konfigurasi yang memungkinkan yang meletakkan dasar untuk belajar mungkin. Dalam artikel ini, kita akan membahas perintah ad hoc yang memungkinkan dengan beberapa contoh.
Pengantar
Perintah Ad hoc yang memungkinkan sangat bagus saat Anda ingin menjalankan tugas cepat dan tugas yang tidak sering diulang. Biasanya perintah ad hoc ini berupa perintah satu baris yang dapat Anda jalankan langsung dari terminal atau dari skrip shell.
Sebelum mengetahui cara bekerja dengan perintah ad hoc, Anda harus mengetahui apa itu idempoten. Kemungkinan adalah idempoten di alam, artinya terlepas dari berapa kali Anda menjalankan tugas yang sama jika keadaan objek sudah diubah, maka ansible tidak akan mencoba membuat perubahan yang sama lagi pada objek itu.
Perintah ad hoc dikirimkan melalui /usr/bin/ansible
program. Anda dapat menjalankan perintah berikut untuk mendapatkan daftar opsi yang didukung untuk perintah yang memungkinkan.
$ mungkin --help
Jika Anda tidak memiliki lab yang memungkinkan untuk dipraktikkan, maka Anda dapat melihat panduan kami tentang cara menyiapkan ansible secara manual serta menggunakan Vagrant dan Virtualbox.
- Menginstal Dan Mengonfigurasi Ansible Di Linux
- Pengaturan Lab Otomatis Dengan Vagrant Dan Virtualbox Di Linux
Kenali Target
Sebelum bekerja dengan perintah ad hoc atau menulis pedoman, Anda harus memiliki pemahaman yang jelas tentang persyaratan bisnis dan lingkungan target yang akan Anda gunakan.
Lingkungan target dapat berupa apa saja seperti server, perangkat jaringan, wadah, solusi cloud, dll. yang mendukung. Di sini saya menggunakan dua node terkelola yang menjalankan Ubuntu 20.04.
Anda dapat menjalankan perintah berikut untuk memeriksa daftar host yang akan digunakan saat Anda menjalankan perintah ad hoc atau playbook.
#SYNTAX$ memungkinkan --list-hosts
Nama grup bisa default (semua , tidak dikelompokkan ) atau grup buatan pengguna .
Jika Anda ingin mempelajari lebih lanjut tentang grup, lihat tautan berikut.
- File Inventaris dan Konfigurasi yang Memungkinkan
Dapatkan daftar host untuk semua grup.
$ memungkinkan semua --list-hostshosts (2):managed1.anslab.com managed2.anslab.com
Dapatkan daftar host untuk grup yang ditentukan pengguna. Di sini nama grup saya adalah ubuntu .
$ ubuntu yang memungkinkan --list-hostshosts (2):managed1.anslab.com managed2.anslab.com
File Inventaris
File Inventaris menyimpan daftar node yang dikelola. Lokasi file inventaris akan dikonfigurasi di ansible.cfg
mengajukan. Anda dapat mengganti lokasi file inventaris menggunakan -i
atau --inventory
tandai saat menjalankan perintah ad hoc.
Saya memiliki dua file inventaris dan file default bernama host. Untuk menggunakan file host2, saya perlu menggunakan -i
tandai dan berikan file sebagai argumen.
$ ansible all -i host2 --list-hostshosts (1):managed2.anslab.com
Perhatian: Jika file inventaris berada di lokasi yang berbeda, Anda harus memberikan jalur absolut. Anda dapat merujuk ke tautan berikut untuk mengetahui urutan prioritas untuk file inventaris.
- File Inventaris dan Konfigurasi yang Memungkinkan
Modul yang Memungkinkan
Ansible adalah alat yang disertakan dengan baterai yang berarti memiliki banyak modul yang dikirimkan bersamanya. Modul adalah program yang ditulis dalam Python yang digunakan oleh memungkinkan untuk dijalankan pada node yang dikelola untuk melakukan tugas. Ansible mengikuti pendekatan plug and play yang berarti Anda dapat menulis modul Anda sendiri dan menjalankannya melalui ansible.
Ansible mendukung banyak paket yang dibuat oleh komunitas sumber terbuka dan vendor produk yang berbeda. Untuk mendapatkan daftar semua modul yang diinstal pada mesin Anda, jalankan perintah berikut.
$ ansible-doc -l # DAFTAR SEMUA MODUL YANG TERSEDIA$ ansible-doc -l | grep -i -w ^apt # GREP PARTICULAR MODULE(APT) MODULE
Untuk melihat dokumentasi modul Anda dapat menjalankan perintah berikut. Di sini saya melihat dokumentasi untuk modul apt yang merupakan modul pengelola paket untuk distribusi berbasis Debian/Ubuntu.
$ ansible-doc apt
Gambar di bawah menunjukkan dokumentasi untuk modul apt yang memungkinkan.

Sintaks Perintah Ad hoc
Ada beberapa masukan yang harus Anda berikan saat menjalankan perintah ad hoc.
- Anda harus menentukan target (node terkelola). Anda dapat menggunakan grup default "semua/tidak dikelompokkan" atau grup yang ditentukan pengguna.
- Anda harus meneruskan nama modul sebagai argumen ke
-m
bendera. - Setiap modul menerima serangkaian opsi. Opsi-opsi itu harus diteruskan sebagai argumen ke -a flag. Jika ada beberapa opsi, maka opsi tersebut harus diapit dengan tanda kutip.
$ ansible [grup] -m [modul] -a [argumen modul]
Anda dapat menggabungkan argumen lain yang telah kita lihat di bagian sebelumnya menjadi perintah ad hoc.
Verifikasi Konektivitas Menggunakan Modul Ping
Modul pertama yang Anda jalankan setelah menyiapkan kemungkinan adalah "ping" modul. Modul ping digunakan untuk memverifikasi apakah konektivitas baik-baik saja dengan pengontrol dan node yang dikelola. Jika koneksi berhasil, Anda akan mendapatkan respons sebagai "ping :pong" .
$ memungkinkan semua -m ping

Anda juga dapat menyingkat output dengan menggunakan -o
bendera.
$ ansible all -m ping -o

Jalankan Perintah Melalui Modul Shell
Modul cangkang digunakan untuk menjalankan perintah apa pun yang dapat Anda jalankan melalui terminal. Ini seperti menjalankan perintah melalui terminal Linux.
Anda harus menggunakan -a
tandai dan berikan perintah sebagai argumen ke modul shell.
$ ansible all -m shell -a "arguments"
Di bawah ini adalah beberapa perintah yang saya jalankan melalui modul shell yang memungkinkan.
$ memungkinkan semua -m Shell -a "echo $USER"
$ memungkinkan semua -m Shell -a "waktu aktif"
$ ansible all -m shell -a "cat /etc/os-release | grep -i PRETTY_NAME"
$ memungkinkan semua -m shell -a "sentuh /tmp/abc.txt"
$ ansible all -m shell -a "ls -l /tmp/abc.txt"

Alternatif untuk modul shell Anda juga dapat menggunakan modul perintah yang merupakan modul default di ansible. Anda dapat langsung menggunakan -a
tandai dan berikan perintah sebagai argumen karena modul perintah adalah modul default.
$ memungkinkan semua -m perintah -a "uptime" # SECARA EKSKLUSIF MELALUI MODUL PERINTAH$ memungkinkan semua -a "uptime" # TIDAK MENGGUNAKAN -m UNTUK LULUS MODUL

Perbedaan antara shell dan modul perintah adalah dengan modul perintah Anda dapat mengakses beberapa variabel khusus dan tidak dapat menggunakan pipa, pengalihan, dan operator logika AND.
Jalankan perintah berikut dan Anda akan mendapatkan kesalahan.
$ ansible all -m command -a "test -f /etc/hosts &&echo 'hosts file present'"
Anda dapat menjalankan perintah yang sama melalui modul shell dan itu akan berjalan dengan baik.
$ ansible all -m shell -a "test -f /etc/hosts &&echo 'hosts file present'"

Jalankan Skrip Melalui Modul Skrip
Saat Anda ingin menjalankan skrip apa pun (python, shell, dll.), Anda dapat menggunakan modul skrip yang akan menyalin skrip dari mesin pengontrol Anda ke semua node yang dikelola, lalu menjalankan skrip tersebut.
Saya memiliki kode python berikut di /tmp
saya direktori.
import sys,osprint("CURRENT PYTHON VERSION =", sys.version_info)print("HOSTNAME =", os.uname()[1])print("CURRENT DIRECTORY =", os.getcwd())Jalankan perintah berikut untuk menggunakan modul skrip untuk menjalankan skrip. Modul skrip mendukung argumen tambahan tergantung pada bagaimana Anda menjalankan skrip Anda. Dalam kasus saya, saya menjalankan skrip python jadi saya mencoba meneruskan argumen tambahan "executable=python3" bersama dengan jalur skrip.
$ memungkinkan semua -m skrip -a "/tmp/get_host_details.py executable=python3"![]()
Modul Manajemen Paket
Ada modul untuk bekerja dengan manajer paket OS seperti
dnf
,apt
,pacman
, dll. Di sini saya menggunakanapt
karena saya menjalankan Ubuntu. Tetapi sintaksnya akan sama untuk semua manajer paket dengan perbedaan parameter. Anda harus melihat dokumentasi masing-masing untuk mengetahui lebih banyak tentangnya.Untuk menginstal paket, Anda dapat menjalankan perintah berikut dan mengatur status ke "present" . Anda harus memilih
-b
atau-become
tandai untuk menjalankan modul dengansudo
hak istimewa di node yang dikelola. Jika Anda telah menetapkan kata sandi untuk pengguna sudo, maka Anda harus melewati-K
bersama dengan-b
bendera yang akan meminta menjadi kata sandi.$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=present" -b -K![]()
Untuk mempelajari cara kerja eskalasi hak istimewa, lihat artikel kami menggunakan tautan di bawah.
- Otentikasi SSH dan Eskalasi Hak Istimewa yang Memungkinkan
Untuk menghapus paket, Anda dapat menjalankan perintah berikut dan menyetel status ke "absen" .
$ ansible all -m apt -a "name=cowsay,vim,cmatrix state=absent" -b -K

Sampai sekarang saya telah menunjukkan bagaimana menggunakan modul yang berbeda untuk tugas yang berbeda. Ini mungkin memberi Anda pemahaman yang baik tentang cara kerja berbagai hal saat Anda menjalankan perintah ad hoc.
Ada banyak modul lain dan artikel ini tidak akan cukup untuk membahas semuanya. Jadi saya sarankan Anda untuk memilih modul sesuai dengan kasus penggunaan Anda dan mulai berlatih dengan perintah ad hoc.
Warna Keluaran
Saat Anda menjalankan perintah ad hoc, Anda seharusnya melihat output dalam tiga warna berbeda. Setiap warna memiliki arti tersendiri.
RED - FailureYELLOW - Sukses Dengan Perubahan yang terjadiHIJAU - Sukses tetapi tidak ada perubahan yang terjadi
MERAH - Gagal
Jika tugas Anda gagal, maka akan dicetak dengan warna merah.

KUNING - Sukses Dengan Perubahan
Ketika status diatur untuk berubah, maka output akan berwarna kuning.

HIJAU - Sukses Tapi Tidak Ada Perubahan
Ketika status objek tidak diubah, maka output akan berwarna hijau.

Kesimpulan
Pada artikel ini kita telah membahas tentang apa itu perintah ad hoc dan bagaimana menggunakan perintah ad hoc di Ansible. Sebagai pemula, perintah ad hoc akan memberi Anda pemahaman yang baik tentang bagaimana mungkin menggunakan modul untuk mencapai tugas. Pada level berikutnya, Anda akan mulai menulis buku pedoman dalam format YAML yang akan dibahas secara rinci dalam artikel terpisah.
Baca Selanjutnya:
- Bekerja Dengan Playbook yang Memungkinkan
Sumber daya:
- https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html
- https://www.redhat.com/sysadmin/ansible-ad-hoc-commands