Cara Mengonfigurasi Node Terkelola yang Mungkin dan Menjalankan Perintah ad-hoc - Bagian 3


Dalam dua artikel sebelumnya dari Seri Ansible ini, kami telah menjelaskan Komponen Inti dari Ansible dan Menyiapkan Node Kontrol yang Ansible. Di bagian 3 ini, kami akan mendemonstrasikan bagaimana Anda dapat mengonfigurasi node terkelola yang memungkinkan untuk menjalankan perintah ad-hoc pada host jarak jauh.

Siapkan Otentikasi SSH Tanpa Kata Sandi ke Node Terkelola yang Mungkin

Sebagai rangkuman topik terakhir kami, mengelola host jarak jauh dengan Ansible memerlukan pengaturan otentikasi SSH Tanpa Kata Sandi antara node kontrol Ansible dan host terkelola. Hal ini melibatkan pembuatan pasangan kunci (pasangan kunci SSH Publik dan Pribadi) pada node Ansible Control dan menyalin kunci Publik ke semua host jarak jauh. Ini akan menjadi langkah penting ke depan dan akan membuat pekerjaan Anda lebih mudah.

Konfigurasikan Eskalasi Hak Istimewa pada Node Terkelola

Saat masuk sebagai pengguna biasa, Anda mungkin diminta untuk melakukan tugas tertentu pada node terkelola yang memerlukan hak istimewa yang lebih tinggi atau hak istimewa root. Tugas-tugas ini termasuk manajemen paket, menambahkan pengguna & grup baru, dan memodifikasi konfigurasi sistem, dan masih banyak lagi. Untuk mencapai hal ini, Anda perlu menjalankan arahan tertentu di buku pedoman untuk menjalankan tugas sebagai pengguna yang memiliki hak istimewa di host jarak jauh.

menjadi

Ansible memungkinkan Anda untuk 'menjadi' pengguna lain di node terkelola yang berbeda dari yang saat ini masuk. Perintah become:yes meningkatkan hak istimewa Anda dan memungkinkan Anda melakukan tugas yang memerlukan hak akses root seperti menginstal dan memperbarui paket serta me-reboot sistem.

Pertimbangkan pedoman httpd.yml yang menginstal dan memulai server web Apache seperti yang ditunjukkan:

---
- name: install and start Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         yum: name=httpd  state=latest
         become: yes
       - name: check httpd status
         service: name=httpd state=started

Perintah menjadi: ya memungkinkan Anda menjalankan perintah sebagai pengguna root pada host jarak jauh.

menjadi_pengguna

Arahan lain yang dapat Anda gunakan untuk menjadi pengguna lain adalah menjadi_pengguna. Ini memungkinkan Anda untuk beralih ke pengguna sudo di host jarak jauh saat masuk dan bukan pengguna yang Anda gunakan untuk masuk.

Misalnya, untuk menjalankan perintah sebagai pengguna tecmint di jarak jauh, gunakan arahan seperti yang ditunjukkan.

- name: Run a command as the apache user
  command: somecommand
  become: yes
  become_user: tecmint

menjadi_metode

Arahan ini akan menggantikan metode default yang diatur dalam file ansible.cfg yang biasanya diatur ke sudo.

menjadi_bendera

Ini digunakan pada tingkat permainan atau tugas, misalnya ketika Anda perlu beralih ke pengguna ketika shell diatur ke nologin.

Misalnya,

- name: Run a command as nobody
  command: somecommand
  become: true
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

Opsi Baris Perintah dalam Eskalasi Hak Istimewa

Mari kita lihat beberapa opsi baris perintah yang dapat Anda gunakan untuk meningkatkan hak istimewa Anda saat menjalankan perintah:

  • --ask-become-pass, -K – Ini meminta Anda memasukkan kata sandi pengguna sudo pada sistem jarak jauh yang Anda coba sambungkan.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – Ini memungkinkan Anda menjalankan tugas sebagai pengguna root tanpa meminta kata sandi.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Memungkinkan Anda menjalankan tugas sebagai pengguna lain.
ansible-playbook myplaybook.yml --become-user=tecmint

Validasi Konfigurasi Kerja menggunakan Perintah Ad-Hoc Ansible

Terkadang, Anda mungkin ingin melakukan tugas cepat dan sederhana pada host atau server jarak jauh di Ansible tanpa harus membuat pedoman. Dalam hal ini, Anda perlu menjalankan perintah ad-hoc.

Apa itu Perintah Adhoc?

Perintah ad-hoc yang memungkinkan adalah perintah satu baris yang membantu Anda menjalankan tugas sederhana dengan cara yang sederhana namun efisien tanpa perlu membuat buku pedoman. Tugas-tugas tersebut termasuk menyalin file antar host, me-reboot server, menambah & menghapus pengguna dan menginstal satu paket.

Dalam tutorial ini, kita menjelajahi berbagai aplikasi perintah Ansible Ad-Hoc. Kami akan menggunakan file inventaris di bawah untuk demonstrasi.

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Penggunaan Dasar Perintah Adhoc

Penggunaan paling dasar dari perintah Ansible-Adhoc adalah melakukan ping ke host atau sekelompok host.

ansible -m ping all

Pada perintah di atas, parameter -m adalah opsi modul. Ping adalah perintah adhoc dan parameter kedua semuanya mewakili semua host di file inventaris. Output dari perintah tersebut ditunjukkan di bawah ini:

Untuk melakukan ping ke grup host tertentu, ganti parameter 'semua' dengan nama grup. Pada contoh di bawah, kami menguji konektivitas dengan host di bawah grup server web.

ansible -m ping webservers

Selain itu, Anda dapat menggunakan atribut -a untuk menentukan perintah Linux reguler dalam tanda kutip ganda. Misalnya, untuk memeriksa waktu aktif sistem pada sistem jarak jauh, jalankan:

ansible -a "uptime" all

Untuk memeriksa penggunaan disk dari host jarak jauh yang dijalankan.

ansible -a "df -Th" all

Ada ratusan modul yang dapat Anda gunakan dengan perintah Adhoc. Untuk melihat seluruh daftar modul beserta deskripsinya, jalankan perintah di bawah ini.

ansible-doc -l

Untuk melihat informasi rinci tentang modul tertentu, jalankan perintah.

ansible-doc module_name

Misalnya, untuk mencari detail lebih lanjut tentang modul yum yang dijalankan:

ansible-doc yum

Mengelola Paket/Layanan dengan Ansible

Perintah adhoc yang memungkinkan dapat digunakan untuk instalasi dan penghapusan paket menggunakan manajer paket yum dan apt.

Untuk menginstal server web Apache pada host CentOS 7 di bawah grup server web dalam file inventaris, jalankan perintah:

ansible webservers -m yum -a "name=httpd  state=present"

Untuk memverifikasi instalasi server web Apache, masuk ke klien jarak jauh dan jalankan.

rpm -qa | grep httpd

Untuk menghapus instalasi Apache, cukup ubah statusnya dari ada menjadi tidak ada.

ansible webservers -m yum -a "name=httpd  state=absent"

Sekali lagi, untuk mengonfirmasi penghapusan httpd run.

rpm -qa | grep httpd

Seperti yang diamati, paket server web Apache telah dibersihkan.

Membuat Pengguna dan Grup Menggunakan Ansible

Saat membuat pengguna, modul ‘pengguna‘ sangat berguna. Untuk membuat pengguna baru james dengan kata sandi redhat di database_server sistem klien, berikan perintah.

ansible database_server -m user -a "name=james password=redhat"

Untuk mengonfirmasi pembuatan pengguna baru, jalankan perintah:

ansible database_servers -a "id james"

Untuk menghapus pengguna, jalankan perintah:

ansible database_servers -m user -a "name=james state=absent"

Peningkatan Hak Istimewa

Jika Anda menjalankan Ansible sebagai pengguna biasa, Ansible menyediakan peningkatan hak istimewa di host jarak jauh menggunakan opsi --become untuk memperoleh hak istimewa root dan -k untuk meminta kata sandi.

Misalnya, untuk menjalankan perintah adhoc yang mungkin 'netstat -pnltu' dengan opsi istimewa –-become dan opsi -K untuk meminta kata sandi pengguna root untuk menjalankan perintah.

ansible webservers -m shell -a 'netstat -pnltu' --become -K

Untuk menjadi pengguna lain selain root, gunakan atribut --become-user.

Misalnya untuk menjalankan ‘df -Th‘ sebagai pengguna tecmint di host jarak jauh dan meminta kata sandi dijalankan:

ansible all -m shell -a 'df -Th' --become-user tecmint -K

Mengumpulkan Fakta tentang Sistem Host

Fakta mengacu pada informasi mendetail tentang suatu sistem. Ini termasuk informasi tentang alamat IP, arsitektur sistem, memori, dan CPU, dan masih banyak lagi.

Untuk mengambil informasi tentang host jarak jauh, jalankan perintah:

ansible all -m setup 

Transfer File/Salin File

Ansible menggunakan modul copy untuk menyalin file dengan aman dari kontrol Ansible ke beberapa host jarak jauh.

Di bawah ini adalah contoh operasi penyalinan:

ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"

Perintah ini menyalin file /var/log/secure di node Ansible Control ke host jarak jauh di grup server web di tujuan /tmp.

Anda dapat menggunakan modul file untuk mengubah izin dan kepemilikan file.

ansible webservers -m file -a "dest=/tmp/secure mode=600"

Selain itu, Anda dapat menambahkan argumen pemilik dan grup seperti yang ditunjukkan:

ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"

Anda juga dapat membuat direktori, dengan cara yang mirip dengan mkdir -p seperti yang ditunjukkan.

ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"

Misalnya,

ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"

Kesimpulan

Dalam artikel ini, kami menjelaskan bagaimana Anda dapat mengonfigurasi node terkelola untuk menjalankan perintah ad-hoc yang mungkin dilakukan untuk mengelola host jarak jauh. Kami harap ini bermanfaat bagi Anda. Cobalah dan beri tahu kami bagaimana kelanjutannya.