Memulai Dengan Perintah Ad Hoc yang Mungkin

Dalam artikel kami sebelumnya, kami telah membahas apa itu inventaris yang memungkinkan dan file konfigurasi yang meletakkan dasar untuk mempelajari kemungkinan. Dalam artikel ini, kita akan membahas perintah ad hoc yang memungkinkan dengan beberapa contoh.
Contents
PendahuluanMengenal File Inventaris TargetModul yang memungkinkanSintaks Perintah Ad hocVerifikasi Konektivitas Menggunakan Modul PingJalankan Perintah Melalui Modul ShellJalankan Skrip Melalui Modul Skrip Modul Manajemen PaketWarna OutputMERAH – KegagalanYELLOW – Sukses Dengan PerubahanG Tapi No ChangesConclusionIntroduction

Ansible Perintah ad hoc 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. Ansible bersifat idempoten, artinya terlepas dari berapa kali Anda menjalankan tugas yang sama jika status objek sudah diubah, maka ansible tidak akan mencoba membuat perubahan yang sama lagi pada objek tersebut.

Perintah ad hoc dikirimkan melalui /usr/bin /program yang memungkinkan. Anda dapat menjalankan perintah berikut untuk mendapatkan daftar opsi yang didukung untuk perintah ansible.

$ ansible --help

Jika Anda tidak memiliki lab yang memungkinkan untuk dipraktikkan, maka Anda dapat melihat panduan kami tentang cara mengatur ansible secara manual juga seperti menggunakan Vagrant dan Virtualbox.
Instal Dan Konfigurasi Ansible Di LinuxPengaturan Lab Otomatis Ansible Dengan Vagrant Dan Virtualbox Di LinuxMengenal Target

Sebelum bekerja dengan perintah ad hoc atau menulis buku pedoman, Anda harus memiliki pemahaman yang jelas tentang kebutuhan bisnis dan lingkungan target Anda akan bekerja dengan.

Lingkungan target dapat berupa apa saja seperti server, perangkat jaringan, wadah, solusi cloud, dll. yang mungkin 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 ketika Anda menjalankan perintah ad hoc atau playbook.

#SYNTAX $ ansible --list-hosts

Nama grup dapat menjadi default(semua, tidak dikelompokkan) atau grup yang ditentukan pengguna.

Jika Anda ingin mempelajari lebih lanjut tentang grup, lihat tautan berikut.
Ansible Inventory And Configuration Files
Dapatkan daftar host untuk semua grup.

$ ansible all --list- host host (2): managed1.anslab.com managed2.anslab.com

Dapatkan daftar host untuk grup yang ditentukan pengguna. Di sini nama grup saya adalah ubuntu.

$ ansible ubuntu --list-hosts hosts (2): managed1.anslab.com managed2.anslab.com

Inventory File

File Inventory menyimpan daftar node yang dikelola. Lokasi file inventaris akan dikonfigurasi dalam file ansible.cfg. Anda dapat mengganti lokasi file inventaris menggunakan tanda -i atau –inventory saat menjalankan perintah ad hoc.

I memiliki dua file inventaris dan file default bernama host. Untuk menggunakan file host2, saya perlu menggunakan flag -i dan meneruskan file sebagai argumen.

$ ansible all -i host2 --list-hosts hosts (1): managed2.anslab.com

Heads Up: If the inventory file 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 AnsibleAnsible Modules

Ansible adalah alat yang disertakan baterai yang berarti memiliki banyak modul yang dikirimkan bersamanya. Modul adalah program yang ditulis dengan Python yang digunakan oleh kemungkinan 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 # LIST SEMUA MODUL 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 Ad hoc Ada beberapa input yang Anda harus menyediakan saat menjalankan perintah ad hoc.
Anda harus menentukan target (node ​​yang dikelola). Anda dapat menggunakan grup default “all/ungrouped” atau grup yang ditentukan pengguna. Anda harus meneruskan nama modul sebagai argumen ke flag -m. Setiap modul menerima serangkaian opsi. Opsi-opsi itu harus diteruskan sebagai argumen ke -a flag. Jika ada beberapa opsi, maka opsi tersebut harus diapit dalam tanda kutip.

$ ansible [group] -m [module] -a [module argument]

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 pengaturan yang memungkinkan adalah modul “ping”. 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”.

$ ansible all -m ping

Anda juga dapat menyingkat output dengan menggunakan flag -o.

$ ansible all -m ping -o

Jalankan Perintah Melalui Shell Module

Modul shell digunakan untuk menjalankan perintah apa pun yang dapat Anda jalankan melalui terminal. Ini seperti menjalankan perintah melalui terminal Linux.

Anda harus menggunakan flag -a dan meneruskan 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 "uptime"$ memungkinkan semua -m shell -a "cat /etc/os-release | grep - i PRETTY_NAME"$ memungkinkan semua -m shell -a "touch /tmp/abc.txt"$ memungkinkan semua -m shell -a "ls -l /tmp/abc.txt"

Alternatif untuk modul shell Anda juga dapat menggunakan perintah modul yang merupakan modul default di ansible. Anda dapat langsung menggunakan flag -a dan meneruskan perintah sebagai argumen karena modul perintah adalah modul default.

$ ansible all -m command -a "uptime" # EXCLUSIVELY PASSING COMMAND MODULE $ ansible all -a "uptime" # NOT MENGGUNAKAN -m UNTUK PASS MODULe

Perbedaan antara shell dan modul perintah adalah dengan modul perintah Anda dapat mengakses beberapa variabel khusus dan tidak dapat menggunakan pipa, pengalihan, dan operator AND logis.

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 Script Melalui Script Module

Bila Anda ingin menjalankan skrip apa pun (python, shell, dll.), Anda dapat menggunakan modul skrip yang akan menyalin skrip dari mesin pengontrol ke semua node yang dikelola lalu ex jalankan script.

Saya memiliki kode python berikut di direktori /tmp saya.

import sys,os print("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 skrip path.

$ ansible all -m script -a "/tmp/get_Host_details.py executable=python3" 

Package Management Modules

Ada modul untuk bekerja dengan manajer paket OS seperti dnf, apt, pacman, dll. Di sini saya menggunakan apt 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 flag -b atau -become untuk menjalankan modul dengan hak istimewa sudo di node yang dikelola. Jika Anda telah menetapkan kata sandi untuk pengguna sudo, maka Anda harus meneruskan -K bersama dengan tanda -b yang akan meminta untuk 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 ini.
Otentikasi SSH yang Mungkin Dan Eskalasi Hak Istimewa
Untuk menghapus paket, Anda dapat menjalankan perintah berikut dan menyetel status ke “absent”.

 $ ansible all -m apt -a "name=cowsay,vim,cmatrix state=absent" -b -K

Sampai sekarang saya telah menunjukkan cara menggunakan modul yang berbeda untuk tugas yang berbeda. Ini mungkin memberi Anda pemahaman yang baik tentang cara kerja sesuatu 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

Ketika Anda menjalankan perintah ad hoc, Anda seharusnya melihat keluaran dalam tiga warna berbeda. Setiap warna memiliki arti.

RED - Kegagalan KUNING - Sukses Dengan Perubahan yang terjadi HIJAU - Sukses tetapi tidak ada perubahan yang terjadi

RED – Kegagalan

Jika tugas Anda gagal, maka akan dicetak dalam warna merah.
KUNING – Sukses Dengan Perubahan

Ketika status disetel untuk mengubah, maka outputnya akan berwarna kuning.
HIJAU – Berhasil Tapi Tidak Ada Perubahan

Bila keadaan objek tidak diubah, maka outputnya akan berwarna hijau.
Kesimpulan

Pada artikel ini kita telah membahas apa itu perintah ad hoc dan bagaimana caranya untuk menggunakan perintah ad hoc di Ansible. Sebagai pemula, perintah ad hoc akan memberi Anda pemahaman yang baik tentang bagaimana mungkin menggunakan modul untuk mencapai suatu tugas. Pada level berikutnya, Anda akan mulai menulis buku pedoman dalam format YAML yang akan dibahas secara rinci dalam artikel terpisah.

Resources:
https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.htmlhttps://www .redhat.com/sysadmin/ansible-ad-hoc-commands