Menyatukan skrip khusus sistem di seluruh dengan rpm di red hat/centos
- 4068
- 911
- Ian Parker
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):
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 RPMDan 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
- « Cara mengubah ukuran font konsol tty di ubuntu 18.04 Server
- Penyebaran contoh aplikasi ke dalam wadah Apache Tomcat »