Cara Menjalankan Perintah pada Pelbagai Host Linux Menggunakan PSSH

Saya pasti anda pernah mendengar bahawa semua kanak-kanak keren bermain dengan automasi orkestrasi akhir-akhir ini. Tetapi adakah anda tahu mengapa? Pertama, sumber yang digunakan oleh beban kerja perkhidmatan mikro moden menjadi jauh lebih kompleks dan digunakan ke lebih banyak kejadian daripada sebelumnya. Dan kedua, semakin banyak sumber daya itu bersifat maya dan bukannya fizikal - jadi banyak sumber tersebut hanya akan wujud selama beberapa minit atau beberapa saat sahaja.

Semuanya bermaksud bahawa walaupun anda ingin masuk ke setiap pelayan anda, ia tidak akan masuk akal. Dalam kebanyakan kes, sebenarnya tidak mungkin. Sebaliknya, anda akan menjalankan banyak skrip pintar. Alat yang anda gunakan untuk menjalankan skrip seperti itu biasanya disebut sebagai orkestrator.

Saya pasti anda pernah bertemu sekurang-kurangnya satu atau dua ahli kelab orkestrasi. Selain Ansible, ada Terraform, Chef, Boneka dan lain-lain. Tetapi ada juga alat peringkat rendah yang berfungsi sebagai tambahan alat inti Linux seperti SSH. Walaupun, melihat bagaimana ia akan berjalan secara semula jadi di Windows dan, tentu saja, macOS, saya tidak pasti betul untuk memanggil SSH sebagai "Linux" alat lagi.

Salah satu add-on SSH adalah set alat yang disebut pssh - yang bermaksud Parallel SSH. Itulah yang akan kita pelajari dalam artikel ini - yang dipetik dari kursus Pluralsight baru saya, Pengoptimuman Sistem Linux.

Namun, buat masa ini, saya akan memberitahu anda sedikit mengenai makmal yang saya gunakan supaya anda dapat menghasilkannya dengan lebih mudah dan mengikutinya di rumah. Saya telah menjalankan tiga bekas Ubuntu LXD. Pangkalan untuk semua operasi kami akan menjadi yang mempunyai alamat IP 10.0.3.140, sementara dua nod host yang akan kami sediakan dari jarak jauh akan menggunakan 10.0.3.93 dan 10.0.3.43.

Semua yang akan kami lakukan mengandaikan bahawa kami mendapat akses SSH tanpa kata laluan dari bekas asas saya ke setiap dua nod. Sekiranya anda tidak pasti bagaimana caranya, anda boleh melihat modul SSH dari program Protocol Deep Dive: SSH dan Telnet saya di Pluralsight. Sekiranya anda tergesa-gesa, tutorial Topi Merah ini akan membawa anda ke tempat yang sama.

Memasang PSSH pada Ubuntu adalah mudah dan cepat: sudo apt install pssh. Ia tidak menjadi lebih sukar di CentOS.

Saya membuat fail inventori hos sederhana yang disebut sshhosts.txt yang tidak mengandungi lebih daripada alamat IP kedua-dua nod saya:

$ less sshhosts.txt 10.0.3.93 10.0.3.43 

Sekarang saya akan menjalankan perintah pssh parallel-ssh untuk melaksanakan satu perintah pada hos saya.

$ parallel-ssh -i -h sshhosts.txt df -ht ext4 

-i memberitahu program untuk dijalankan sebagai interaktif - jika tidak, kita tidak akan ditunjukkan output arahan. -h menunjuk ke fail host yang saya panggil sshhosts.txt. Dan perintah itu sendiri akan menjadi utiliti Unix lama df. Itu akan mengembalikan senarai pemacu yang dilampirkan ke sistem bersama dengan titik pemasangan dan maklumat penggunaannya. The -h di sini akan memaparkan ruang cakera dalam unit yang dapat dibaca manusia dan t akan menyekat akses ke hanya pemacu yang diformat sebagai ext4.

Mengapa saya mengambil berat tentang perniagaan ext4 itu? Kerana Ubuntu menggunakan pengurus paket snap dan setiap snap membuat peranti maya sendiri. Jadi apa? Baiklah, saya tidak perlu menyisir selusin peranti maya yang melaporkan 0 ruang kosong hanya untuk mendapatkan pemacu sebenar yang melaporkan penggunaan sebenar.

$ parallel-ssh -i -h sshhosts.txt df -ht ext4 [1] 22:02:00 [SUCCESS] 10.0.3.43 Filesystem Size Used Avail Use% Mounted on /dev/sda2 457G 131G 304G 30% / [2] 22:02:00 [SUCCESS] 10.0.3.93 Filesystem Size Used Avail Use% Mounted on /dev/sda2 457G 131G 304G 30% / 

Dan di sana anda pergi! Maklumat ruang cakera penuh mengenai kedua-dua nod saya. Saya pasti anda menyedari bahawa maklumat itu serupa. Ini kerana kedua-dua kontena ini berjalan di stesen kerja saya, sejauh yang mereka tahu, mereka berdua mempunyai akses penuh ke pemacu saya sendiri.

Untuk muslihat saya yang seterusnya, saya akan mengumpulkan fail / etc / group dari setiap nod saya. Ini adalah jenis operasi yang berguna untuk memantau status keselamatan nod anda dengan cepat. Anda boleh menambahkan skrip yang menguraikan data yang masuk dan memberi tahu anda jika ada anomali.

Sebelum memulakan, saya akan membuat direktori yang dipanggil host-file. Kemudian saya akan menggunakan parallel-slurpperintah - yang namanya menggambarkan fungsinya dengan luar biasa. Sekali lagi, -h menunjuk ke fail host. The -Lset direktori host-fail sebagai lokasi sasaran untuk menulis data kita akan menjana, /etc/groupadalah fail jauh kita mahu menghirup, dan groupadalah nama yang kita ingin menetapkan data tempatan.

mkdir host-files parallel-slurp -h sshhosts.txt -L host-files/ /etc/group group 

Setelah selesai, direktori fail-host anda akan mengandungi sub-direktori yang diberi nama IP address setiap nod anda. Seperti yang anda lihat, ada fail yang disebut "group" yang berisi data / etc / group dari setiap nod.

$ tree host-files/ host-files/ ├── 10.0.3.43 │   └── group └── 10.0.3.93 └── group 

Adakah pssh ada dengan makanan lain? Yup. Dan berjalan aproposmemberi anda keseluruhan senarai.

$ apropos parallel parallel-nuke (1) - parallel process kill program parallel-rsync (1) - parallel process kill program parallel-scp (1) - parallel process kill program parallel-slurp (1) - parallel process kill program parallel-ssh (1) - parallel ssh program 

Artikel ini berdasarkan kandungan dalam kursus Pluralsight saya, "Pengoptimuman Sistem Linux." Terdapat banyak kebaikan pentadbiran dalam bentuk buku, kursus, dan artikel yang terdapat di bootstrap-it.com.