Ujednolicanie niestandardowych skryptów w całym systemie z RPM na Red Hat/Centos

Ujednolicanie niestandardowych skryptów w całym systemie z RPM na Red Hat/Centos

Cel

Naszym celem jest zbudowanie pakietów RPM z niestandardowymi treściami, ujednolicenie skryptów w dowolnej liczbie systemów, w tym wersji, wdrażania i nierozstrzygnięcia.

Wersje systemu operacyjnego i oprogramowania

  • System operacyjny: Red Hat Enterprise Linux 7.5
  • Oprogramowanie: Build RPM 4.11.3+

Wymagania

Uprzywilejowany dostęp do systemu do instalacji, normalny dostęp do kompilacji.

Trudność

ŚREDNI

Konwencje

  • # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Biorąc pod uwagę polecenia Linux, które mają być wykonywane jako zwykły użytkownik niepewny

Wstęp

Jedną z podstawowych funkcji każdego systemu Linux jest to, że są one zbudowane do automatyzacji. Jeśli konieczne może być wykonanie zadania więcej niż jeden raz - nawet przy jego części zmieniającej się w następnym biegu - sysadmin jest dostarczany z niezliczonymi narzędziami do automatyzacji, z prostego powłoka Skrypty prowadzone ręcznie na żądanie (w ten sposób eliminując błędy w literówki lub zapisz tylko niektóre trafienia klawiatury) na złożone systemy skryptowe, w których zadania działają Cron W określonym czasie, interakcja ze sobą, pracując z wynikiem innego skryptu, być może kontrolowany przez centralny system zarządzania itp.

Chociaż ten wolność i bogaty zestaw narzędzi dodaje rzeczywiście do wydajności, istnieje haczyk: jako sysadmin piszesz użyteczny skrypt w systemie, który okazuje się przydatny w innym, więc skopiujesz skrypt. W trzecim systemie skrypt jest również przydatny, ale z niewielką modyfikacją - być może nowa funkcja przydatna tylko w tym systemie, osiągalna z nowym parametrem. Uogólnieniem, rozszerzasz skrypt, aby zapewnić nową funkcję i wykonać zadanie, dla którego został napisany. Teraz masz dwie wersje skryptu, pierwsza jest w dwóch pierwszych systemach, drugi w trzecim systemie.

Masz 1024 komputery działających w centrum danych, a 256 z nich będzie potrzebować niektórych funkcji dostarczonych przez ten skrypt. Z czasem będziesz mieć 64 wersje skryptu, każda wersja wykonuje swoją pracę. W następnym wdrożeniu systemu potrzebujesz funkcji, którą przypominasz sobie kodowanie w jakiejś wersji, ale która? I na jakich systemach są one?

W systemach opartych na RPM, takich jak Flavours Red Hat, sysadmin może skorzystać z menedżera pakietów, aby utworzyć zamówienie w niestandardowej zawartości, w tym proste skontlerze, które mogą nie dostarczyć inaczej, ale narzędzia, które administrator napisał dla wygody.

W tym samouczku zbudujemy niestandardowe RPM dla Red Hat Enterprise Linux 7.5 zawierające dwa grzmotnąć Skrypty, Parselogi.cii I Pullnews.cii Aby zapewnić sposób, w jaki wszystkie systemy mają najnowszą wersję tych skryptów w /usr/local/sbin katalog, a tym samym na ścieżce każdego użytkownika, który loguje się do systemu.



Dystrybucje, główne i mniejsze wersje

Ogólnie rzecz biorąc, drobna i główna wersja maszyny kompilacji powinna być taka sama jak systemy, które ma być wdrażany, a także dystrybucja, aby zapewnić kompatybilność. Jeśli istnieją różne wersje danej dystrybucji lub nawet różne dystrybucje z wieloma wersjami w twoim środowisku (och, radość!), powinieneś skonfigurować maszyny kompilacji dla każdego. Krótko mówiąc, możesz po prostu skonfigurować środowisko kompilacji dla każdej dystrybucji i każdej głównej wersji, a także mieć je w najniższej mniejszej wersji istniejącej w środowisku dla danej głównej wersji. Bo nie muszą być maszynami fizycznymi i muszą działać tylko w czasie kompilacji, więc możesz używać maszyn wirtualnych lub kontenerów.

W tym samouczku nasza praca jest znacznie łatwiejsza, wdrażamy tylko dwa skrypty, które w ogóle nie mają zależności (z wyjątkiem grzmotnąć), więc zbudujemy Noarch pakiety, które oznaczają „nie zależne od architektury”, nie będziemy również określać dystrybucji, dla której opakowanie jest zbudowane. W ten sposób możemy zainstalować i zaktualizować je na dowolnym użyciu dystrybucji RPM, i do każdej wersji - musimy tylko upewnić się, że maszyna kompilacji jest Build RPM Pakiet znajduje się w najstarszej wersji w środowisku.

Konfigurowanie środowiska budowlanego

Aby zbudować niestandardowe pakiety RPM, musimy zainstalować Build RPM pakiet:

# Yum Instal RPM-Build

Od teraz my nie używaj źródło użytkownik i nie bez powodu. Pakiety budowlane nie wymagają źródło przywilej i nie chcesz łamać maszyny do budowy.

Budowanie pierwszej wersji pakietu

Utwórzmy strukturę katalogu potrzebną do budowy:

$ mkdir -p rpmbuild/specyfikacje

Nasz pakiet nazywa się skryptami administracyjnymi, wersja 1.0. Tworzymy Specile To określa metadane, zawartość i zadania wykonywane przez pakiet. Jest to prosty plik tekstowy, który możemy utworzyć z naszym ulubionym edytorem tekstu, takim jak vi. Wcześniej zainstalowany rpmbuild Pakiet wypełni pusty specyfile danymi szablonów, jeśli użyjesz vi Aby utworzyć pusty, ale dla tego samouczka rozważ specyfikację poniżej Administrator-Scripts-1.0.Spec:



Nazwa: Administrator Scripts Wersja: 1 Wydanie: 0 Podsumowanie: Foobar Inc. To wyłania. Skrypty administracyjne Packager: John Doe Grupa: aplikacja/inna licencja: GPL URL: WWW.foobar.com/admin-scripts Źródło 0: %name- %wersja.smoła.GZ Buildarch: Noarch %Opis Pakiet Instalowanie najnowszej wersji Skrypty administratora używane przez Dept IT. %Prep %konfiguracja -q %kompilacja %instalacja rm -rf $ rpm_build_root mkdir -p $ rpm_build_root/usr/local/sbin cp scenariusze/* $ rpm_build_root/usr/local/sbin/ %czysty rm -rf $ rpm_build_root % %defattr (-, root, root,-) %dir/usr/local/sbin/usr/local/sbin/parselogs.sh/usr/local/sbin/pullnews.SH %Doc %Changelog * Wed 1 sierpnia 2018 John Doe - Wydanie 1.0 - Początkowe wydanie 
Kopiuj

Umieść specyl w RPMBUILD/Spec katalog, który stworzyliśmy wcześniej.

Potrzebujemy źródeł odwołanych w Specile - W tym przypadku dwa skontlerze. Utwórzmy katalog źródeł (nazywany nazwą pakietu dołączoną do głównej wersji):

$ mkdir -p rpmbuild/Źródła/administrator-skrypty-1/Scenariusz

I skopiuj/przenieś scenariusze:

$ ls rpmbuild/Źródła/administrator-scripts-1/Scripts/Parselogs.SH Pullnews.cii 
Kopiuj

Ponieważ w tym samouczku nie dotyczy scenariuszy skorupy, zawartość tych scenariuszy jest nieistotna. Jak utworzymy nową wersję pakietu i Pullnews.cii to skrypt, z którym będziemy zademonstrować, jego źródło w pierwszej wersji jest jak poniżej:

#!/bin/bash echo „News wyciągnął” wyjście 0 
Kopiuj

Nie zapomnij dodać odpowiednich praw do plików w źródle - w naszym przypadku wykonanie prawa:

CHMOD +x rpmbuild/Źródła/admin-scripts-1/Scripts/*.cii


Teraz tworzymy smoła.GZ Archiwum ze źródła w tym samym katalogu:

CD RPMBuild/ Sources/ && TAR -czf admin-scripts-1.smoła.GZ admin-scripts-1
Kopiuj

Jesteśmy gotowi zbudować pakiet:

RPMBUILD-BB RPMBUILD/Specs/Admin-Scripts-1.0.Spec

Otrzymamy trochę wyjścia na temat kompilacji, a jeśli coś pójdzie nie tak, zostaną wyświetlone błędy (na przykład brakujący plik lub ścieżka). Jeśli wszystko pójdzie dobrze, nasz nowy pakiet pojawi się w katalogu RPMS wygenerowanym domyślnie w ramach rpmbuild katalog (posortowany w podwodności według architektury):

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

Stworzyliśmy prosty, ale w pełni funkcjonalny pakiet RPM. Możemy je zapytać o wszystkie dostarczone wcześniej metadane:

$ rpm -qpi rpmbuild/rpms/noarch/admin-scripts-1-0.Noarch.Nazwa RPM: Administrator Scripts Wersja: 1 Wydanie: 0 Architektura: Noarch Data instalacji: (nie zainstalowana) Grupa: Aplikacja/Inny rozmiar: 78 Licencja: GPL Podpis: (Brak) źródło RPM: Administrator-Scripts-1-0.src.Data budowy RPM: 2018. sierpień. 1., Wed, 13.27.34 Cest Build Host: Build01.foobar.COM RELOCations: (nie przenoszony) Packager: John Doe URL: www.foobar.Podsumowanie COM/Administrator: Foobar Inc. To wyłania. Skrypty administracyjne Opis: Pakiet Instalowanie najnowszej wersji Skrypty administratora używane przez Dept IT. 
Kopiuj


I przyczyna, ponieważ możemy go zainstalować (z źródło przywileje):

Instalowanie niestandardowych skryptów z RPM

Gdy zainstalowaliśmy skrypty w katalogu, który znajduje się na każdym użytkowniku $ Ścieżka, Możesz uruchomić je jako dowolnego użytkownika w systemie, z dowolnego katalogu:

$ Pullnews.SH News wyciągnęły 
Kopiuj


Pakiet może być dystrybuowany tak, jak jest, i może być popychany do repozytoriów dostępnych dla dowolnej liczby systemów. Aby to zrobić, jest poza zakresem tego samouczka - jednak zbudowanie innej wersji pakietu z pewnością nie jest.

Budowanie kolejnej wersji pakietu

Nasz pakiet i niezwykle przydatne skrypty stają się popularne w krótkim czasie, biorąc pod uwagę, że są one dostępne w dowolnym miejscu z prostym Yum Instal instaluj skrypty administratora w środowisku. Wkrótce będzie wiele próśb o pewne ulepszenia - w tym przykładzie wiele głosów pochodzi od zadowolonych użytkowników, że Pullnews.cii Gdyby wydrukować inną linię na temat wykonania, ta funkcja uratowałaby całą firmę. Musimy zbudować inną wersję pakietu, ponieważ nie chcemy instalować innego skryptu, ale nowa jego wersja o tej samej nazwie i ścieżce, jak sysadmin w naszej organizacji, już na nim polegają.

Najpierw zmieniamy źródło Pullnews.cii w źródłach czegoś jeszcze bardziej złożonego:

#!/bin/bash echo „nowości wyciągnięte„ echo ”kolejna linia wydrukowana” wyjście 0 

Musimy odtworzyć smołę.GZ z nową zawartością źródłową - możemy użyć tej samej nazwy pliku, co po raz pierwszy, ponieważ nie zmieniamy wersji, tylko wydanie (i tak Źródło 0 odniesienie będzie nadal ważne). Zauważ, że najpierw usuwamy poprzednie archiwum:

CD RPMBuild/ Sources/ && Rm -f admin-scripts-1.smoła.GZ && tar -czf admin-scripts-1.smoła.GZ admin-scripts-1
Kopiuj

Teraz tworzymy kolejny spefile z wyższym numerem wydania:

CP RPMBuild/Specs/Admin-Scripts-1.0.Spec rpmbuild/specyps/admin-scripts-1.1.Spec
Kopiuj

Nie zmieniamy zbyt wiele na samym pakiecie, więc po prostu zarządzamy nową wersją, jak pokazano poniżej:

Nazwa: Administrator Scripts Wersja: 1 Wydanie: 1 Podsumowanie: Foobar Inc. To wyłania. Skrypty administracyjne Packager: John Doe Grupa: aplikacja/inna licencja: GPL URL: WWW.foobar.com/admin-scripts Źródło 0: %name- %wersja.smoła.GZ Buildarch: Noarch %Opis Pakiet Instalowanie najnowszej wersji Skrypty administratora używane przez Dept IT. %Prep %konfiguracja -q %kompilacja %instalacja rm -rf $ rpm_build_root mkdir -p $ rpm_build_root/usr/local/sbin cp scenariusze/* $ rpm_build_root/usr/local/sbin/ %czysty rm -rf $ rpm_build_root % %defattr (-, root, root,-) %dir/usr/local/sbin/usr/local/sbin/parselogs.sh/usr/local/sbin/pullnews.sh %doc %Changelog * Śr. 22 sierpnia 2018 John Doe  - Wydanie 1.1 - Pullnews.SH V1.1 drukuje inną linię * Śr 1 sierpnia 2018 John Doe - wydanie 1.0 - Początkowe wydanie 


Wszystko, co skończone, możemy zbudować inną wersję naszego pakietu zawierającego zaktualizowany skrypt. Zauważ, że odwołujemy się do specyfikacji z wyższą wersją jako źródłem kompilacji:

RPMBUILD-BB RPMBUILD/Specs/Admin-Scripts-1.1.Spec

Jeśli kompilacja zakończy się powodzeniem, mamy teraz dwie wersje pakietu w naszym katalogu RPMS:

LS rpmbuild/rpms/noarch/admin-scripts-1-0.Noarch.RPM administrator-scripts-1-1.Noarch.RPM 
Kopiuj

A teraz możemy zainstalować skrypt „Advanced” lub aktualizować, jeśli jest już zainstalowany.

Uaktualnianie niestandardowych skryptów za pomocą RPM

A nasi sysadmin mogą zobaczyć, że żądanie funkcji wyląduje w tej wersji:

RPM -Q -ChangeLog administrator * śr. 22 sierpnia 2018 John Doe -Wydanie 1.1 - Pullnews.SH V1.1 drukuje kolejna linia * śr. 01 sierpnia 2018 John Doe - Wydanie 1.0 - Początkowe wydanie 

Wniosek

Owinęliśmy naszą niestandardową treść w wersji pakietów RPM. Oznacza to, że żadne starsze wersje pozostały rozproszone po systemach, wszystko jest na swoim miejscu, w wersji, którą zainstalowaliśmy lub uaktualniliśmy. RPM daje możliwość wymiany starych rzeczy potrzebnych tylko w poprzednich wersjach, może dodawać niestandardowe zależności lub dostarczać narzędzia lub usługi, na których opierają się nasze inne pakiety. Dzięki wysiłku możemy spakować prawie dowolną z naszych niestandardowych treści w pakiety RPM i rozpowszechniać ją w naszym środowisku, nie tylko z łatwością, ale z konsekwencją.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Pobierz Linux
  • Czy Linux może uzyskać wirusy? Badanie podatności Linuksa…
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Najlepszy Linux Distro dla programistów
  • Ubuntu 20.04 Przewodnik
  • Jak migrować z Centos do Almalinux