Zarządzaj repozytoriami pakietów Ubuntu i PPA za pomocą Ansible

Zarządzaj repozytoriami pakietów Ubuntu i PPA za pomocą Ansible
Dodawanie i usuwanie repozytoriów pakietów i PPA w Ubuntu w twoim systemie osobistym może być bardzo prostym zadaniem. Jeśli jednak masz wiele maszyn Ubuntu, powiedzmy, 10 lub więcej, to ręczne dodawanie i usuwanie repozytoriów pakietów i PPA w każdym systemie okaże się zarówno czasochłonne, jak i nieefektywne.

Ansible apt_repository Moduł może być używany do dodawania i usuwania repozytoriów pakietów i PPA na hostach Ubuntu z łatwością. Możesz także zaktualizować pamięć podręczną repozytorium pakietów Apt za pomocą ansible apt_repository moduł.

W tym artykule pokaże, jak zarządzać repozytoriami pakietu Ubuntu i PPA za pomocą Ansible apt_repository moduł. Więc zacznijmy.

Wymagania wstępne

Jeśli chcesz wypróbować przykłady zawarte w tym artykule:

1) Musisz mieć zainstalowany na komputerze Ansible.
2) Musisz mieć skonfigurowany host Ubuntu do automatyzacji Ansible.

Istnieje wiele artykułów na temat Linuxhint poświęconych instalacji ansible i konfiguracji hostów do automatyzacji ansible. Możesz sprawdzić te artykuły, jeśli potrzebujesz dodatkowych informacji.

Konfigurowanie katalogu projektu

Zanim zaczniemy, dobrym pomysłem będzie stworzenie struktury katalogu projektu, aby zachować trochę bardziej zorganizowane.

Aby utworzyć katalog projektu apt-pA-repo/ i wszystkie wymagane podkatalog (w bieżącym katalogu roboczym) uruchom następujące polecenie:

$ mkdir -pv apt-pA-repo/podręczniki

Po utworzeniu katalogu projektu przejdź do katalogu projektu, w następujący sposób:

$ cd apt-pA-repo

Stwórz zastępy niebieskie Plik zapasowy, w następujący sposób:

$ nano gospodarze

Dodaj nazwę IP lub DNS hosta (VM7.Nodekite.com I VM8.Nodekite.com, w moim przypadku) twoich hostów Ubuntu w pliku ekwipunku.

Po zakończeniu zapisz plik, naciskając + X, śledzony przez Y I .

Utwórz plik konfiguracyjny Ansible w katalogu projektu, w następujący sposób:

$ nano ansible.CFG

Wpisz następujące wiersze w Ansible.CFG plik:

[domyślne]
Inwentaryzacja = hosty
host_key_checking = false

Po zakończeniu zapisz plik, naciskając + X, śledzony przez Y I .

W tym momencie katalog projektu powinien wyglądać jak następujące:

$ Tree

Jak widać, hosty Ansible są dostępne. Możemy więc przejść do następnej sekcji tego artykułu.

$ ansible all -u ansible -m ping

Dodawanie repozytoriów pakietów

W tej sekcji pokażę, jak dodać repozytorium pakietów w Ubuntu za pomocą ansible.

Najpierw stwórz nowy podręcznik o nazwie add_repo.Yaml w podręczniki/ katalog, jak następuje:

$ Nano Playbooks/add_repo.Yaml

Wpisz następujące wiersze w add_repo.Yaml plik:

- Gospodarze: Wszyscy
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Upewnij się, że repozytorium Universe jest włączone
apt_repository:
Repo: deb http: // archiwum.Ubuntu.Com/Ubuntu Focal Universe
Stan: obecny
aktualizacja_cache: true

Po zakończeniu zapisz plik, naciskając + X, śledzony przez Y I .

Tutaj Repo opcja apt_repository Moduł służy do określenia linii repozytorium pakietów Apt (w moim przypadku, deb http: // archiwum.Ubuntu.Com/Ubuntu Focal Universe) z repozytorium pakietu, które chcesz dodać (w moim przypadku Ubuntu 20.04 LTS Urzędnik wszechświat magazyn).

Aby dowiedzieć się więcej o formacie linii repozytorium pakietów Apt, przeczytaj Pliki konfiguracji repozytorium pakietów Ubuntu Sekcja artykułu Jak korzystać z APT Pakiet Manager w Ubuntu 20.04 LTS.

Gdy dodam tutaj nowe repozytorium pakietów, państwo Jest obecny.

aktualizacja_cache Opcja może być albo PRAWDA/Tak Lub FAŁSZ/NIE.

Jeśli aktualizacja_cache jest ustawione na PRAWDA, Ansible zaktualizuje pamięć podręczną repozytorium pakietów apt po dodaniu repozytorium pakietów.

Jeśli aktualizacja_cache jest ustawione na FAŁSZ, Ansible nie zaktualizuje pamięci podręcznej repozytorium pakietów apt.

Tutaj chcę, aby repozytorium pakietów Apt zostało zaktualizowane po dodaniu nowego repozytorium pakietów. Więc ustawiłem aktualizacja_cache Do PRAWDA.

Teraz uruchom add_repo.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/add_repo.Yaml

Jak widać, podręcznik działał pomyślnie.

Aby potwierdzić, że repozytorium pakietów (w moim przypadku Ubuntu 20.04 LTS wszechświat Repozytorium) jest dodawane, uruchom następujące polecenie:

$ grep -color -r 'http: // archiwum.Ubuntu.com '/etc/apt/źródła.lista
/etc/apt/źródła.lista.D/*.lista

Jak widać, w nowym pliku została utworzona w /etc/apt/źródła.lista.D/ katalog (1) i Ubuntu 20.04 LTS wszechświat Dodano repozytorium pakietów (2).

Domyślnie Ansible automatycznie wygeneruje .lista plik w /etc/apt/źródła.lista.D/ katalog, w zależności od linii repozytorium apt.

Jeśli chcesz wybrać określoną nazwę pliku (i.mi. Ubuntu-Universe.lista) W przypadku repozytorium możesz określić nazwę pliku za pomocą Nazwa pliku opcja apt_repository moduł w twoim add_repo.Yaml podręcznik, jak pokazano na zrzucie ekranu poniżej.

Teraz uruchom add_repo.Yaml Znowu podręcznik.

$ Ansible-Playbook Playbooks/add_repo.Yaml

Jak widać, nazwa pliku to ta sama nazwa, którą określałem.

$ grep -color -r 'http: // archiwum.Ubuntu.com '/etc/apt/źródła.lista
/etc/apt/źródła.lista.D/*.lista

Usuwanie repozytoriów pakietów

W tej sekcji pokażę, jak usunąć istniejące repozytorium pakietów z hostów Ubuntu za pomocą Ansible.

Podręcznik do usunięcia repozytorium pakietów jest prawie taki sam jak dodanie repozytorium pakietów. Więc możesz po prostu skopiować add_repo.Yaml Plik podręcznika i trochę go zmodyfikuj. Jest to bardzo proste.

Najpierw skopiuj add_repo.Yaml plik do usuń_repo.Yaml, następująco:

$ CP -V Playbooki/add_repo.YAML Playbooks/Revel_Repo.Yaml

Edytuj usuń_repo.Yaml Playbook, w następujący sposób:

$ Nano Playbooks/remove_repo.Yaml

Zmiana Stan: obecny Do Stan: nieobecny, jak zaznaczono na zrzucie ekranu poniżej. To będzie jedyna zmiana, którą musisz wprowadzić.

Po zakończeniu zapisz plik, naciskając + X, śledzony przez Y I .

Uruchom usuń_repo.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/remove_repo.Yaml

Następnie uruchom następujące polecenie, aby sprawdzić, czy repozytorium pakietów, które chcesz usunąć, zostało faktycznie usunięte.

$ grep -color -r 'http: // archiwum.Ubuntu.com '/etc/apt/źródła.lista
/etc/apt/źródła.lista.D/*.lista

Jak widać, Ubuntu 20.04 LTS Urzędnik wszechświat Repozytorium pakietów, które dodałem wcześniej, zostało usunięte.

NOTATKA: Zignoruj ​​komunikat o błędzie. Ta wiadomość oznacza po prostu, że /etc/apt/źródła.lista.D/ Katalog jest pusty. Jeśli chcesz usunąć komunikat o błędzie, po prostu dodaj 2>/dev/null na końcu polecenia, jak następuje. Błąd powinien zniknąć po całkowitym tym poleceniu.

$ grep -color -r 'http: // archiwum.Ubuntu.com '/etc/apt/źródła.lista
/etc/apt/źródła.lista.D/*.Lista 2>/dev/null

Dodawanie PPA

W tej sekcji pokażę ci, jak dodać PPA do swoich hostów Ubuntu za pomocą Ansible.

Dodam Osomon/NodeJS-10.19-foc Węzeł.JS 10.19 PPA dla Ubuntu 20.04 LTS w moim przykładzie.

Najpierw stwórz nowy podręcznik add_ppa.Yaml, następująco:

$ Nano Playbooks/add_ppa.Yaml

Dodaj następujące wiersze w swoim add_ppa.Yaml Playbook:

- Gospodarze: Wszyscy
Użytkownik: Ansible
staje się prawdą
Zadania:
- Nazwa: Dodaj węzeł.JS 10.19 PPA
apt_repository:
Repo: PPA: Osomon/Nodejs-10.19-foc
Stan: obecny
aktualizacja_cache: true
VALIDATE_CERTS: FAŁSZ

Po zakończeniu zapisz add_ppa.Yaml Playbook przez nacisk + X, śledzony przez Y I .

Tutaj Repo opcja apt_repository Moduł służy do dodania PPA Osomon/NodeJS-10.19-foc (1).

Pamiętaj, aby dodać PPA: Przed nazwą PPA, ja.mi. PPA: Osomon/Nodejs-10.19-foc.

Większość PPA korzysta z samowystarczalnych certyfikatów, więc Ansible nie może ich weryfikować dla ciebie i mogą one błędnie uruchomić poradnik.

Możesz ustawić VALIDATE_CERTS Do FAŁSZ Aby pominąć walidację certyfikatu dla PPA, którą dodajesz (2). To właśnie zrobiłem w przykładzie w tym artykule.

NOTATKA: Możesz także ustawić VALIDATE_CERTS Do FAŁSZ Aby pominąć walidację certyfikacji podczas dodawania repozytoriów pakietów innych firm.

Uruchom add_ppa.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/add_ppa.Yaml

Jak widać, nowy .lista plik PPA Osomon/NodeJS-10.19-foc został stworzony w /etc/apt/źródła.lista.D/ katalog (1).

Patrząc na zawartość PPA_OSOMON_NODEJS_10_19_FOCAL_FOCAL.lista Plik mogę potwierdzić, że PPA został dodany (2).

$ drzewo/etc/apt/źródła.lista.D/
$ cat/etc/apt/źródła.lista.D/PPA_OSOMON_NODEJS_10_19_FOCAL_XENIAL.lista

Usuwanie PPA

Możesz usunąć PPA w taki sam sposób, jak usuwaliśmy repozytoria opakowań we wcześniejszej sekcji tego artykułu.

Po prostu skopiuj app_ppa.Yaml podręcznik do usuń_ppa.Yaml, następująco:

$ CP -V Playbooki/add_repo.YAML Playbooks/Revel_Repo.Yaml

Teraz otwórz usuń_ppa.Yaml Playbook, w następujący sposób:

$ Nano Playbooks/remove_ppa.Yaml

Następnie zmień linię Stan: obecny Do Stan: nieobecny, jak zaznaczono na zrzucie ekranu poniżej.

Po zakończeniu zapisz usuń_ppa.Yaml Playbook przez nacisk + X, śledzony przez Y I .

Uruchom usuń_ppa.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/add_ppa.Yaml

Jak widać, PPA_OSOMON_NODEJS_10_19_FOCAL_FOCAL.lista plik dla Osomon/NodeJS-10.19-foc PPA nie jest już dostępna w /etc/apt/źródła.lista.D/ informator. Więc PPA Osomon/NodeJS-10.19-foc zostało usunięte.

$ drzewo/etc/apt/źródła.lista.D/

Zmiana nazwy PPA

Czasami PPA, którą próbujesz dodać do swojego hosta Ubuntu, nie obsługuje wersji Ubuntu, którą uruchomi się. W takim przypadku będziesz musiał ręcznie określić kod namienia wersji Ubuntu podczas dodawania PPA.

Załóżmy, że bierzesz Ubuntu 20.04 Z Nazwa pokrowca ogniskowy I próbujesz dodać PPA XYZ, Ale PPA XYZ obsługuje tylko Ubuntu 16.04 LTS Codename ksenial. Jeśli spróbujesz dodać PPA XYZ, Otrzymasz błąd, ponieważ PPA nie ma żadnego pakietu dla Ubuntu 20.04 Codename ogniskowy. Ale jeśli określisz Ubuntu 16.04 LTS Codename ksenialny Dodając PPA, nie otrzymasz żadnego błędu. W ten sposób możesz zainstalować żądany pakiet z PPA, nawet jeśli nie obsługuje on jawnej wersji Ubuntu, którą aktualnie uruchomi się.

Zobaczmy przykład.

Najpierw skopiuj add_ppa.Yaml Plik podręcznika do zmiana_ppa_codename.Yaml, następująco:

$ CP -V Playbooki/add_ppa.YAML Playbooks/Change_PPA_Codename.Yaml

Następnie otwórz zmiana_ppa_codename.Yaml Plik w następujący sposób:

$ Nano Playbooks/Change_PPA_Codename.Yaml

Tutaj wszystko, co musisz zrobić, to dodać kryptonim opcja z żądaną kodą Ubuntu (i.mi. Nazwa kodowa: Xenial), jak zaznaczono na zrzucie ekranu poniżej.

Po zakończeniu zapisz zmiana_ppa_codename.Yaml plik naciskając + X, śledzony przez Y I .

Uruchom zmiana_ppa_codename.Yaml Playbook, w następujący sposób:

$ Ansible-Playbook Playbooks/Change_PPA_Codename.Yaml

NOTATKA: Dostaję błąd, ponieważ PPA, którą tu dodałem.04 LTS. Możesz po prostu zignorować tę wiadomość.

Jak widać, PPA został dodany i nazwa Ubuntu ksenialny znajduje się w linii repozytorium pakietów Apt.

Wniosek

W tym artykule pokazano, jak zarządzać (dodać/usunąć) repozytoria pakietów Ubuntu i PPA za pomocą Ansible.

Ansible apt_repository Moduł służy do zarządzania repozytoriami pakietów Ubuntu i PPA. W tym artykule wyjaśniono wszystkie ważne opcje apt_repository Moduł Ansible.

Aby uzyskać więcej informacji, sprawdź oficjalną stronę dokumentacji APT_Repository Ansible.