Menyatukan skrip khusus sistem di seluruh dengan rpm di red hat/centos

Menyatukan skrip khusus sistem di seluruh dengan rpm di red hat/centos

Objektif

Tujuan kami adalah untuk membangun paket RPM dengan konten khusus, menyatukan skrip di sejumlah sistem, termasuk versi, penyebaran, dan ketidakpastian.

Sistem Operasi dan Versi Perangkat Lunak

  • Sistem operasi: Red Hat Enterprise Linux 7.5
  • Perangkat lunak: RPM-Build 4.11.3+

Persyaratan

Akses istimewa ke sistem untuk diinstal, akses normal untuk dibangun.

Kesulitan

SEDANG

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - Diberikan perintah linux untuk dieksekusi sebagai pengguna biasa

Perkenalan

Salah satu fitur inti dari sistem Linux apa pun adalah bahwa mereka dibangun untuk otomatisasi. Jika suatu tugas mungkin perlu dieksekusi lebih dari satu kali - bahkan dengan beberapa bagian dari itu berubah pada menjalankan berikutnya - sebuah sysadmin dilengkapi dengan alat yang tak terhitung jumlahnya untuk mengotomatiskannya, dari yang sederhana kerang Script yang dijalankan secara langsung (sehingga menghilangkan kesalahan kesalahan ketik, atau hanya menyimpan beberapa hit keyboard) ke sistem skrip yang kompleks di mana tugas berjalan dari cron Pada waktu tertentu, berinteraksi satu sama lain, bekerja dengan hasil skrip lain, mungkin dikendalikan oleh sistem manajemen pusat dll.

Sementara kebebasan dan alat yang kaya ini memang menambah produktivitas, ada tangkapan: sebagai sysadmin, Anda menulis skrip yang berguna pada suatu sistem, yang terbukti berguna di yang lain, jadi Anda menyalin skrip di atas. Pada sistem ketiga skrip juga berguna, tetapi dengan modifikasi kecil - mungkin fitur baru hanya berguna dalam sistem itu, dapat dijangkau dengan parameter baru. Generalisasi dalam pikiran, Anda memperluas skrip untuk menyediakan fitur baru, dan menyelesaikan tugas yang ditulis juga. Sekarang Anda memiliki dua versi skrip, yang pertama adalah pada dua sistem pertama, yang kedua di sistem ketiga.

Anda memiliki 1024 komputer yang berjalan di pusat data, dan 256 di antaranya akan membutuhkan beberapa fungsi yang disediakan oleh skrip itu. Pada waktunya Anda akan memiliki 64 versi skrip di seluruh, setiap versi melakukan tugasnya. Pada penyebaran sistem berikutnya, Anda memerlukan fitur yang Anda ingat Anda kode di beberapa versi, tetapi yang mana? Dan di sistem mana mereka?

Pada sistem berbasis RPM, seperti Red Hat Flavours, sebuah sysadmin dapat memanfaatkan paket manajer untuk membuat pesanan dalam konten khusus, termasuk skrip shell sederhana yang mungkin tidak menyediakan orang lain tetapi alat yang ditulis admin untuk kenyamanan.

Dalam tutorial ini kami akan membangun RPM khusus untuk Red Hat Enterprise Linux 7.5 berisi dua pesta skrip, Parselogs.SH Dan pullnews.SH untuk memberikan cara agar semua sistem memiliki versi terbaru dari skrip ini di /usr/local/sbin direktori, dan dengan demikian di jalur pengguna mana pun yang masuk ke sistem.



Distribusi, versi utama dan kecil

Secara umum, versi minor dan utama dari mesin build harus sama dengan sistem paket yang akan digunakan, serta distribusi untuk memastikan kompatibilitas. Jika ada berbagai versi distribusi yang diberikan, atau bahkan distribusi yang berbeda dengan banyak versi di lingkungan Anda (oh, sukacita!), Anda harus mengatur mesin build untuk masing -masing. Untuk memotong pekerjaan, Anda bisa mengatur lingkungan build untuk setiap distribusi dan setiap versi utama, dan memilikinya pada versi minor terendah yang ada di lingkungan Anda untuk versi utama yang diberikan. Karena mereka tidak perlu menjadi mesin fisik, dan hanya perlu berjalan pada waktu pembangunan, sehingga Anda dapat menggunakan mesin atau wadah virtual.

Dalam tutorial ini, pekerjaan kami jauh lebih mudah, kami hanya menggunakan dua skrip yang tidak memiliki ketergantungan sama sekali (kecuali pesta), jadi kami akan membangun Noarch Paket yang mendukung "tidak tergantung pada arsitektur", kami juga tidak akan menentukan distribusi yang dibangun paket. Dengan cara ini kami dapat menginstal dan meningkatkannya pada distribusi apa pun yang menggunakan RPM, Dan untuk versi apa pun - kita hanya perlu memastikan bahwa mesin build RPM-Build Paket ada di versi tertua di lingkungan.

Menyiapkan Lingkungan Bangunan

Untuk membangun paket RPM khusus, kita perlu menginstal RPM-Build kemasan:

# yum instal rpm-build

Mulai sekarang, kami jangan gunakan akar pengguna, dan untuk alasan yang bagus. Paket bangunan tidak memerlukan akar hak istimewa, dan Anda tidak ingin merusak mesin bangunan Anda.

Membangun versi pertama paket

Mari kita buat struktur direktori yang dibutuhkan untuk membangun:

$ mkdir -p rpmbuild/spesifikasi

Paket kami disebut Admin-Scripts, Versi 1.0. Kami membuat a Specfile yang menentukan metadata, konten dan tugas yang dilakukan oleh paket. Ini adalah file teks sederhana yang dapat kami buat dengan editor teks favorit kami, seperti vi. Yang sebelumnya diinstal rpmBuild Paket akan mengisi specfile kosong Anda dengan data template jika Anda menggunakan vi Untuk membuat yang kosong, tetapi untuk tutorial ini, pertimbangkan spesifikasi di bawah ini Admin-Scripts-1.0.spec:



Nama: Admin-Scripts Versi: 1 Rilis: 0 Ringkasan: Foobar Inc. Itu dept. Paket Admin Scripts: John Doe Group: Aplikasi/Lisensi Lainnya: GPL URL: www.foobar.com/admin-scripts Source0: %name- %versi.ter.GZ Buildarch: Paket Deskripsi Noarch %Menginstal Versi Terbaru Skrip Admin yang Digunakan oleh IT Dept. %Prep %Pengaturan -Q %Bangun %Instal RM -RF $ RPM_BUILD_ROOT MKDIR -P $ RPM_BUILD_ROOT/USR/LOCAL/SBIN CP SCRIPS/* $ RPM_BUILD_ROOT/USR/LOCAL/SBIN/ %BERSIH RM -RF $ RPM_BUILD/USR/LOCAL/SBIN/ %Bersihkan RM -RF $ RPM_BUILD/USR/LOCAL/SBIN/ %Bersihkan RM $ RPM_BUILD/USROT/LOCAL/SBIN/ %Bersihkan $ RPM_BUILD/USROT/SBIN/ % %RM $ RPM_BUILD/USROT/ %SBIN/ %Bersihkan $ RPM_BUILLD (-, root, root,-) %dir/usr/local/sbin/usr/local/sbin/parselogs.sh/usr/local/sbin/pullnews.Sh %Doc %Changelog * Rab 1 Agustus 2018 John Doe - Rilis 1.0 - Rilis Awal 
Menyalin

Tempatkan specfile di RPMBuild/Spec Direktori yang kami buat sebelumnya.

Kita membutuhkan sumber yang dirujuk di Specfile - dalam hal ini dua skrip shell. Mari kita buat direktori untuk sumber (disebut sebagai nama paket ditambahkan dengan versi utama):

$ mkdir -p rpmbuild/sumber/admin-skrip-1/skrip

Dan menyalin/memindahkan skrip ke dalamnya:

$ ls rpmbuild/sumber/admin-skrip-1/skrip/parselogs.sh pullnews.SH 
Menyalin

Karena tutorial ini bukan tentang skrip shell, isi skrip ini tidak relevan. Karena kami akan membuat versi baru dari paket, dan pullnews.SH adalah skrip yang akan kami tunjukkan, sumber di versi pertama adalah seperti di bawah ini:

#!/BIN/BASH ECHO "NEWS PULEDED" EXIT 0 
Menyalin

Jangan lupa untuk menambahkan hak yang sesuai ke file dalam sumber - dalam kasus kami, eksekusi hak:

CHMOD +X RPMBUILD/SUMBER/ADMIN-SCRIPS-1/SCRIPS/*.SH


Sekarang kami membuat file ter.GZ Arsip dari sumber di direktori yang sama:

CD RPMBUILD/ SUMBER/ && TAR -CZF-SCRIPS-1.ter.GZ Admin-Scripts-1
Menyalin

Kami siap membangun paket:

RPMBUILD --BB RPMBUILD/SPECS/ADMIN-SCRIPS-1.0.spec

Kami akan mendapatkan beberapa output tentang build, dan jika ada yang salah, kesalahan akan ditampilkan (misalnya, file atau path yang hilang). Jika semuanya berjalan dengan baik, paket baru kami akan muncul di direktori RPMS yang dihasilkan secara default di bawah rpmBuild Direktori (diurutkan menjadi subdirektori berdasarkan arsitektur):

$ ls rpmbuild/rpms/noarch/admin-scripts-1-0.Noarch.RPM

Kami telah membuat paket RPM sederhana namun berfungsi penuh. Kami dapat menanyakannya untuk semua metadata yang kami berikan sebelumnya:

$ rpm -qpi rpmbuild/rpms/noarch/admin-scripts-1-0.Noarch.Nama RPM: Admin-Scripts Versi: 1 Rilis: 0 Arsitektur: Noarch Instal Tanggal: (tidak diinstal) Grup: Aplikasi/Ukuran Lainnya: 78 Lisensi: GPL Tanda Tangan: (Tidak Ada) Sumber RPM: Admin-Scripts-1-0.SRC.Tanggal pembangunan RPM: 2018. Agustus. 1., Rabu, 13.27.34 CEST Build Host: Build01.foobar.COM Relocations: (tidak relokatable) Packagager: John doe url: www.foobar.Com/Admin-Scripts Ringkasan: Foobar Inc. Itu dept. Script Admin Deskripsi: Paket Menginstal Versi Terbaru Skrip Admin yang Digunakan oleh IT Dept. 
Menyalin


Dan karena kita dapat menginstalnya (dengan akar hak istimewa):

Menginstal skrip khusus dengan RPM

Saat kami menginstal skrip ke dalam direktori yang ada di setiap pengguna $ Path, Anda dapat menjalankannya sebagai pengguna mana pun dalam sistem, dari direktori mana pun:

$ pullnews.SH News ditarik 
Menyalin


Paket dapat didistribusikan sebagaimana adanya, dan dapat didorong ke repositori yang tersedia untuk sejumlah sistem. Untuk melakukannya adalah di luar ruang lingkup tutorial ini - namun, membangun versi paket lain tentu saja tidak.

Membangun versi lain dari paket tersebut

Paket kami dan skrip yang sangat berguna di dalamnya menjadi populer dalam waktu singkat, mengingat mereka dapat dijangkau di mana saja dengan yang sederhana YUM Instal Admin-Scripts di dalam lingkungan. Akan segera ada banyak permintaan untuk beberapa perbaikan - dalam contoh ini, banyak suara berasal dari pengguna yang bahagia pullnews.SH Harus mencetak baris lain saat dieksekusi, fitur ini akan menyimpan seluruh perusahaan. Kita perlu membangun versi paket lain, karena kita tidak ingin menginstal skrip lain, tetapi versi baru dengan nama dan jalur yang sama, karena sysadmin di organisasi kami sudah sangat bergantung padanya.

Pertama, kami mengubah sumber dari pullnews.SH dalam sumber ke sesuatu yang lebih kompleks:

#!/BIN/BASH ECHO "Berita ditarik" ECHO "LAIN LAIN CETCOCED" EXIT 0 

Kita perlu membuat ulang tar.GZ dengan konten sumber baru - kita dapat menggunakan nama file yang sama dengan pertama kali, karena kita tidak mengubah versi, hanya rilis (dan karenanya Sumber0 referensi masih valid). Perhatikan bahwa kami menghapus arsip sebelumnya terlebih dahulu:

CD RPMBUILD/ SUMBER/ && RM -F-SCRIPS-SCRIPS-1.ter.gz && tar -czf admin-scripts-1.ter.GZ Admin-Scripts-1
Menyalin

Sekarang kami membuat specfile lain dengan nomor rilis yang lebih tinggi:

CP RPMBuild/Specs/Admin-Scripts-1.0.Spec RpMBuild/Specs/Admin-Scripts-1.1.spec
Menyalin

Kami tidak banyak berubah pada paket itu sendiri, jadi kami hanya memberikan versi baru seperti yang ditunjukkan di bawah ini:

Nama: Admin-Scripts Versi: 1 Rilis: 1 Ringkasan: Foobar Inc. Itu dept. Paket Admin Scripts: John Doe Group: Aplikasi/Lisensi Lainnya: GPL URL: www.foobar.com/admin-scripts Source0: %name- %versi.ter.GZ Buildarch: Paket Deskripsi Noarch %Menginstal Versi Terbaru Skrip Admin yang Digunakan oleh IT Dept. %Prep %Pengaturan -Q %Bangun %Instal RM -RF $ RPM_BUILD_ROOT MKDIR -P $ RPM_BUILD_ROOT/USR/LOCAL/SBIN CP SCRIPS/* $ RPM_BUILD_ROOT/USR/LOCAL/SBIN/ %BERSIH RM -RF $ RPM_BUILD/USR/LOCAL/SBIN/ %Bersihkan RM -RF $ RPM_BUILD/USR/LOCAL/SBIN/ %Bersihkan RM $ RPM_BUILD/USROT/LOCAL/SBIN/ %Bersihkan $ RPM_BUILD/USROT/SBIN/ % %RM $ RPM_BUILD/USROT/ %SBIN/ %Bersihkan $ RPM_BUILLD (-, root, root,-) %dir/usr/local/sbin/usr/local/sbin/parselogs.sh/usr/local/sbin/pullnews.sh %doc %changelog * Rabu 22 Agustus 2018 John Doe  - Rilis 1.1 - PullNews.SH V1.1 mencetak baris lain * Rabu 1 Agustus 2018 John Doe - Rilis 1.0 - Rilis Awal 


Semua selesai, kami dapat membangun versi lain dari paket kami yang berisi skrip yang diperbarui. Perhatikan bahwa kami merujuk Specfile dengan versi yang lebih tinggi sebagai sumber build:

RPMBUILD --BB RPMBUILD/SPECS/ADMIN-SCRIPS-1.1.spec

Jika build berhasil, kami sekarang memiliki dua versi paket di bawah direktori RPMS kami:

LS RPMBUILD/RPMS/NOARCH/ADMIN-SCRIPS-1-0.Noarch.RPM Admin-Scripts-1-1.Noarch.RPM 
Menyalin

Dan sekarang kita dapat menginstal skrip "lanjutan", atau memutakhirkan jika sudah diinstal.

Meningkatkan skrip khusus dengan RPM

Dan sysadmin kami dapat melihat bahwa permintaan fitur mendarat dalam versi ini:

RPM -Q --Cript Admin -Changelog * Rab 22 Agustus 2018 John Doe -Rilis 1.1 - PullNews.SH V1.1 mencetak baris lain * Rabu 01 Agustus 2018 John Doe - Rilis 1.0 - Rilis Awal 

Kesimpulan

Kami membungkus konten khusus kami ke dalam paket RPM versi. Ini berarti tidak ada versi lama yang tersisa di seluruh sistem, semuanya ada di tempatnya, pada versi yang kami instal atau tingkatkan. RPM memberikan kemampuan untuk mengganti hal -hal lama yang dibutuhkan hanya dalam versi sebelumnya, dapat menambahkan dependensi khusus atau menyediakan beberapa alat atau layanan yang diandalkan paket kami yang lain. Dengan upaya, kami dapat mengemas hampir semua konten khusus kami ke dalam paket RPM, dan mendistribusikannya di seluruh lingkungan kami, tidak hanya dengan mudah, tetapi dengan konsistensi.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Unduh Linux
  • Can Linux mendapatkan virus? Menjelajahi kerentanan Linux…
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
  • Distro linux terbaik untuk pengembang
  • Ubuntu 20.04 Panduan
  • Cara bermigrasi dari centos ke almalinux