Menyatukan skrip tersuai di seluruh sistem dengan RPM pada Red Hat/CentOS

Menyatukan skrip tersuai di seluruh sistem dengan RPM pada Red Hat/CentOS

Objektif

Matlamat kami adalah untuk membina pakej RPM dengan kandungan tersuai, menyatukan skrip di mana -mana bilangan sistem, termasuk versi, penggunaan dan undeployment.

Sistem operasi dan versi perisian

  • Sistem operasi: Red Hat Enterprise Linux 7.5
  • Perisian: RPM-BUILD 4.11.3+

Keperluan

Akses istimewa ke sistem untuk memasang, akses biasa untuk membina.

Kesukaran

Medium

Konvensyen

  • # - Memerlukan arahan Linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
  • $ - Memandangkan perintah Linux dilaksanakan sebagai pengguna yang tidak berkadar biasa

Pengenalan

Salah satu ciri utama sistem Linux ialah mereka dibina untuk automasi. Sekiranya tugas mungkin perlu dilaksanakan lebih dari satu kali - walaupun dengan sebahagian daripadanya berubah pada larian seterusnya - sysadmin disediakan dengan alat yang tak terhitung jumlahnya untuk mengautomasikannya, dari mudah shell Skrip dijalankan dengan tangan atas permintaan (dengan itu menghapuskan kesilapan kesilapan, atau hanya menyimpan beberapa hits papan kekunci) ke sistem skrip kompleks di mana tugas -tugas yang dikendalikan dari Cron Pada masa yang ditentukan, berinteraksi antara satu sama lain, bekerja dengan hasil skrip lain, mungkin dikawal oleh sistem pengurusan pusat dll.

Walaupun kebebasan dan alat yang kaya ini sememangnya menambah produktiviti, terdapat tangkapan: sebagai sysadmin, anda menulis skrip berguna pada sistem, yang terbukti berguna pada yang lain, jadi anda menyalin skrip. Pada sistem ketiga skrip juga berguna, tetapi dengan pengubahsuaian kecil - mungkin ciri baru hanya berguna dalam sistem itu, dapat dicapai dengan parameter baru. Pengumuman dalam fikiran, anda melanjutkan skrip untuk memberikan ciri baru, dan menyelesaikan tugas yang ditulis juga. Sekarang anda mempunyai dua versi skrip, yang pertama adalah pada dua sistem pertama, yang kedua dalam sistem ketiga.

Anda mempunyai 1024 komputer yang berjalan di pusat data, dan 256 daripadanya memerlukan beberapa fungsi yang disediakan oleh skrip itu. Pada waktunya anda akan mempunyai 64 versi skrip di seluruh, setiap versi melakukan tugasnya. Pada penggunaan sistem seterusnya, anda memerlukan ciri yang anda ingat yang anda kodkan pada beberapa versi, tetapi yang mana? Dan di mana sistem mereka?

Mengenai sistem berasaskan RPM, seperti Red Hat Flavors, sysadmin boleh memanfaatkan pengurus pakej untuk membuat pesanan dalam kandungan tersuai, termasuk skrip shell mudah yang mungkin tidak memberikan yang lain tetapi alat yang ditulis oleh admin untuk kemudahan.

Dalam tutorial ini, kami akan membina RPM tersuai untuk Red Hat Enterprise Linux 7.5 mengandungi dua bash Skrip, Parselogs.sh dan pullnews.sh Untuk memberikan cara semua sistem mempunyai versi terkini skrip ini di /usr/tempatan/sbin direktori, dan dengan itu di jalan mana -mana pengguna yang log masuk ke sistem.



Pengagihan, versi utama dan kecil

Secara umum, versi kecil dan utama mesin binaan harus sama dengan sistem pakej yang akan digunakan, serta pengedaran untuk memastikan keserasian. Sekiranya terdapat pelbagai versi pengedaran yang diberikan, atau bahkan pengagihan yang berbeza dengan banyak versi dalam persekitaran anda (oh, kegembiraan!), anda harus menyediakan mesin binaan untuk masing -masing. Untuk memotong kerja pendek, anda hanya boleh menubuhkan persekitaran membina untuk setiap pengedaran dan setiap versi utama, dan memilikinya pada versi kecil yang paling rendah yang ada di persekitaran anda untuk versi utama yang diberikan. Sebab mereka tidak perlu menjadi mesin fizikal, dan hanya perlu berjalan pada masa binaan, jadi anda boleh menggunakan mesin maya atau bekas.

Dalam tutorial ini kerja kami lebih mudah, kami hanya menggunakan dua skrip yang tidak mempunyai ketergantungan sama sekali (kecuali bash), jadi kami akan membina Noarch pakej yang berdiri untuk "tidak bergantung kepada seni bina", kami juga tidak akan menentukan pengedaran pakej yang dibina untuk. Dengan cara ini kita boleh memasang dan menaik tarafnya pada sebarang pengedaran yang digunakan rpm, dan ke mana -mana versi - kita hanya perlu memastikan bahawa mesin membina RPM-BUILD Pakej adalah pada versi tertua di persekitaran.

Menyiapkan persekitaran bangunan

Untuk membina pakej RPM tersuai, kita perlu memasang RPM-BUILD Pakej:

# yum pasang rpm-membina

Mulai sekarang, kami jangan guna akar pengguna, dan untuk alasan yang baik. Pakej bangunan tidak memerlukan akar keistimewaan, dan anda tidak mahu memecahkan mesin bangunan anda.

Membina versi pertama pakej

Mari buat struktur direktori yang diperlukan untuk membina:

$ mkdir -p rpmbuild/spesifikasi

Pakej kami dipanggil skrip admin, versi 1.0. Kami membuat a specfile yang menentukan metadata, kandungan dan tugas yang dilakukan oleh pakej. Ini adalah fail teks mudah yang boleh kita buat dengan editor teks kegemaran kami, seperti vi. Yang dipasang sebelumnya rpmBuild Pakej akan mengisi spesifikasi kosong anda dengan data templat jika anda menggunakan vi Untuk membuat yang kosong, tetapi untuk tutorial ini pertimbangkan spesifikasi di bawah yang dipanggil skrip admin-1.0.spesifikasi:



Nama: Pentadbir-skrip Versi: 1 Siaran: 0 Ringkasan: Foobar Inc. Ia jabatan. Packager skrip admin: John Doe Group: Aplikasi/Lesen Lain: GPL URL: www.Foobar.com/admin-skrip sumber0: %name- %versi.tar.GZ Buildarch: Pakej Penerangan Noarch %Memasang Versi Terkini Skrip Admin yang Digunakan oleh IT Dept. %prep %persediaan -q %binaan %Pasang rm -rf $ rpm_build_root mkdir -p $ rpm_build_root/usr/local/sbin cp skrip/* $ rpm_build_root/usr/local/sbin/ % (-, root, root,-) %dir/usr/local/sbin/usr/local/sbin/parselogs.sh/usr/local/sbin/pullnews.sh %doc %changelog * Wed Ogos 1 2018 John Doe - Release 1.0 - Siaran Awal 
Salinan

Letakkan spesifikasi di rpmbuild/spec direktori yang kami buat sebelum ini.

Kita memerlukan sumber yang dirujuk di specfile - Dalam kes ini, dua skrip shell. Mari buat direktori untuk sumber (dipanggil sebagai nama pakej yang dilampirkan dengan versi utama):

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

Dan salin/gerakkan skrip ke dalamnya:

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

Oleh kerana tutorial ini bukan mengenai skrip shell, kandungan skrip ini tidak relevan. Seperti yang kita akan buat versi baru pakej, dan pullnews.sh Adakah skrip yang akan kami tunjukkan, sumbernya dalam versi pertama adalah seperti di bawah:

#!/bin/bash echo "Berita ditarik" Keluar 0 
Salinan

Jangan lupa untuk menambah hak yang sesuai untuk fail dalam sumber - dalam kes kami, pelaksanaan hak:

CHMOD +X RPMBUILD/Sumber/Admin-Scripts-1/Skrip/*.sh


Sekarang kita membuat a tar.Gz Arkib dari sumber dalam direktori yang sama:

cd rpmbuild/ sumber/ && tar -czf-scripts-1.tar.GZ Admin-Scripts-1
Salinan

Kami sudah bersedia untuk membina pakej:

RPMBUILD--BB RPMBuild/Specs/Admin-Scripts-1.0.spesifikasi

Kami akan mendapat beberapa output mengenai binaan, dan jika ada yang salah, kesilapan akan ditunjukkan (contohnya, fail atau laluan yang hilang). Sekiranya semuanya berjalan lancar, pakej baru kami akan muncul dalam direktori rpms yang dihasilkan secara lalai di bawah rpmBuild Direktori (disusun menjadi subdirektori oleh seni bina):

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

Kami telah membuat pakej RPM yang mudah tetapi berfungsi sepenuhnya. Kami boleh menanyakannya untuk semua metadata yang kami dibekalkan sebelum ini:

$ rpm -qpi rpmbuild/rpms/noarch/admin-scripts-1-0.Noarch.RPM Nama: Pentadbir-skrip Versi: 1 Siaran: 0 Senibina: Noarch Pemasangan Tarikh: (Tidak Dipasang) Kumpulan: Aplikasi/Saiz Lain: 78 Lesen: GPL Tandatangan: (Tiada) Sumber RPM: Admin-Scripts-1-0.SRC.Tarikh Membina RPM: 2018. Aug. 1., Rabu, 13.27.34 CEST Build Host: Build01.Foobar.Com Relocations: (tidak boleh dipindahkan) Pembungkus: John Doe URL: www.Foobar.Com/Admin-Scripts Ringkasan: Foobar Inc. Ia jabatan. Skrip Admin Penerangan: Pakej Memasang Versi Terkini Skrip admin yang digunakan oleh IT Dept. 
Salinan


Dan sebab kita dapat memasangnya (dengan akar Keistimewaan):

Memasang skrip tersuai dengan rpm

Semasa kami memasang skrip ke dalam direktori yang ada pada setiap pengguna $ Jalan, Anda boleh menjalankannya sebagai pengguna dalam sistem, dari mana -mana direktori:

$ pullnews.Berita SH ditarik 
Salinan


Pakej ini boleh diedarkan seperti itu, dan boleh ditolak ke repositori yang tersedia untuk beberapa sistem. Untuk berbuat demikian adalah keluar dari skop tutorial ini - bagaimanapun, membina versi lain pakej pastinya tidak.

Membina versi lain pakej

Pakej kami dan skrip yang sangat berguna di dalamnya menjadi popular dalam masa yang singkat, memandangkan mereka dapat dicapai di mana sahaja dengan mudah Yum memasang skrip admin dalam persekitaran. Akan ada banyak permintaan untuk beberapa penambahbaikan - dalam contoh ini, banyak undi datang dari pengguna gembira yang pullnews.sh Sekiranya mencetak garis lain pada pelaksanaan, ciri ini akan menjimatkan seluruh syarikat. Kita perlu membina versi lain pakej, kerana kita tidak mahu memasang skrip lain, tetapi versi baru dengan nama dan jalan yang sama, seperti sysadmins dalam organisasi kita sudah banyak bergantung.

Pertama kita menukar sumber pullnews.sh Di sumber untuk sesuatu yang lebih kompleks:

#!/bin/bash echo "Berita ditarik" echo "garis lain dicetak" Keluar 0 

Kita perlu mencipta semula tar.GZ dengan kandungan sumber baru - kita boleh menggunakan nama fail yang sama sebagai kali pertama, kerana kita tidak mengubah versi, hanya melepaskan (dan sebagainya Sumber0 rujukan akan masih sah). Perhatikan bahawa kami memadamkan arkib sebelumnya:

CD RPMBuild/ Sumber/ && RM -f-Skrip-1.tar.gz && tar -czf-scripts-1.tar.GZ Admin-Scripts-1
Salinan

Sekarang kami membuat spesifikasi lain dengan nombor pelepasan yang lebih tinggi:

CP RPMBuild/Specs/Admin-Scripts-1.0.spec rpmbuild/spesifikasi/admin-skrip-1.1.spesifikasi
Salinan

Kami tidak banyak mengubah pakej itu sendiri, jadi kami hanya mentadbir versi baru seperti yang ditunjukkan di bawah:

Nama: Skrip Admin Versi: 1 Siaran: 1 Ringkasan: Foobar Inc. Ia jabatan. Packager skrip admin: John Doe Group: Aplikasi/Lesen Lain: GPL URL: www.Foobar.com/admin-skrip sumber0: %name- %versi.tar.GZ Buildarch: Pakej Penerangan Noarch %Memasang Versi Terkini Skrip Admin yang Digunakan oleh IT Dept. %prep %persediaan -q %binaan %Pasang rm -rf $ rpm_build_root mkdir -p $ rpm_build_root/usr/local/sbin cp skrip/* $ rpm_build_root/usr/local/sbin/ % (-, root, root,-) %dir/usr/local/sbin/usr/local/sbin/parselogs.sh/usr/local/sbin/pullnews.sh %doc %changelog * Rabu 22 Ogos 2018 John Doe  - Siaran 1.1 - Pullnews.SH V1.1 mencetak baris lain * Wed 1 Ogos 2018 John Doe - Siaran 1.0 - Siaran Awal 


Semua selesai, kami boleh membina versi lain pakej kami yang mengandungi skrip yang dikemas kini. Perhatikan bahawa kita merujuk spesifikasi dengan versi yang lebih tinggi sebagai sumber binaan:

RPMBUILD--BB RPMBuild/Specs/Admin-Scripts-1.1.spesifikasi

Jika binaan berjaya, kami kini mempunyai dua versi pakej di bawah direktori RPMS kami:

LS RPMBuild/RPMS/Noarch/Admin-Scripts-1-0.Noarch.RPM Admin-Scripts-1-1.Noarch.rpm 
Salinan

Dan sekarang kita boleh memasang skrip "lanjutan", atau menaik taraf jika sudah dipasang.

Meningkatkan skrip tersuai dengan rpm

Dan sysadmin kami dapat melihat bahawa permintaan ciri mendarat dalam versi ini:

RPM -Q --CHANGELOG -SCRIPTS * WED 22 Ogos 2018 John Doe -Siaran 1.1 - Pullnews.SH V1.1 mencetak baris lain * Wed Ogos 01 2018 John Doe - Siaran 1.0 - Siaran Awal 

Kesimpulan

Kami membungkus kandungan tersuai kami ke dalam pakej rpm versi. Ini bermakna tiada versi lama yang tersebar di seluruh sistem, semuanya ada di tempatnya, pada versi yang kami pasang atau ditingkatkan ke. RPM memberikan keupayaan untuk menggantikan barangan lama yang diperlukan hanya dalam versi sebelumnya, boleh menambah kebergantungan tersuai atau memberikan beberapa alat atau perkhidmatan pakej kami yang lain bergantung. Dengan usaha, kami dapat mengemas hampir mana -mana kandungan tersuai kami ke dalam pakej RPM, dan mengedarkannya ke seluruh persekitaran kami, bukan hanya dengan mudah, tetapi dengan konsistensi.

Tutorial Linux Berkaitan:

  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Fail Konfigurasi Linux: 30 teratas yang paling penting
  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Muat turun linux
  • Bolehkah linux mendapat virus? Meneroka kelemahan Linux ..
  • Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
  • Distro linux terbaik untuk pemaju
  • Ubuntu 20.04 Panduan
  • Cara berhijrah dari Centos ke Almalinux