Ansible

Hantera Ubuntu-paketförvar och PPA med Ansible

Hantera Ubuntu-paketförvar och PPA med Ansible
Att lägga till och ta bort paketförvar och PPA i Ubuntu på ditt personliga system kan vara en mycket enkel uppgift. Men om du har många Ubuntu-maskiner, säg 10 eller fler, kan man manuellt lägga till och ta bort paketförvar och PPA på varje system en efter en, både tidskrävande och ineffektivt.

Ansible apt_repository modulen kan enkelt användas för att lägga till och ta bort paketförvar och PPA på dina Ubuntu-värdar. Du kan också uppdatera APT-paketets förvarscache med Ansible apt_repository modul.

Den här artikeln visar hur du hanterar Ubuntu-paketförvar och PPA med Ansible apt_repository modul. Så, låt oss komma igång.

Förutsättningar

Om du vill prova exemplen i den här artikeln:

1) Du måste ha Ansible installerat på din dator.
2) Du måste ha en Ubuntu-värd konfigurerad för Ansible-automatisering.

Det finns många artiklar om LinuxHint tillägnad Installera Ansible och konfigurera värdar för Ansible-automatisering. Du kan kolla in dessa artiklar om du behöver ytterligare information.

Ställa in projektkatalog

Innan vi börjar är det en bra idé att skapa en projektkatalogstruktur, bara för att hålla sakerna lite mer organiserade.

För att skapa projektkatalogen apt-ppa-repo / och alla nödvändiga underkataloger (i din nuvarande arbetskatalog), kör följande kommando:

$ mkdir -pv apt-ppa-repo / playbooks

När projektkatalogen har skapats navigerar du till projektkatalogen enligt följande:

$ cd apt-ppa-repo

Skapa en värdar inventeringsfil, enligt följande:

$ nano värdar

Lägg till värdens IP- eller DNS-namn (vm7.nodekite.com och vm8.nodekite.com, i mitt fall) av dina Ubuntu-värdar i inventeringsfilen.

När du är klar sparar du filen genom att trycka på + X, följd av Y och .

Skapa en Ansible-konfigurationsfil i projektkatalogen enligt följande:

$ nano ansible.cfg

Skriv följande rader i ansible.cfg fil:

[standard]
inventering = värdar
host_key_checking = Falskt

När du är klar sparar du filen genom att trycka på + X, följd av Y och .

Vid denna punkt ska projektkatalogen se ut som följande:

$ träd

Som du kan se är Ansible-värdarna tillgängliga. Så vi kan gå vidare till nästa avsnitt i den här artikeln.

$ ansible all -u ansible -m ping

Lägga till paketförvar

I det här avsnittet visar jag dig hur du lägger till ett paketförvar i Ubuntu med Ansible.

Skapa först en ny spelbok som heter add_repo.yaml i spelböcker / katalog, enligt följande:

$ nano playbooks / add_repo.yaml

Skriv följande rader i add_repo.yaml fil:

- värdar: alla
användare: ansible
bli sann
uppgifter:
- namn: Se till att universumsförvaret är aktiverat
apt_repository:
repo: deb http: // arkiv.ubuntu.com / ubuntu fokaluniversum
tillstånd: närvarande
update_cache: True

När du är klar sparar du filen genom att trycka på + X, följd av Y och .

Här, den repo alternativet för apt_repository modulen används för att specificera APT-paketförvaringsraden (i mitt fall, deb http: // arkiv.ubuntu.com / ubuntu fokaluniversum) av paketförvaret du vill lägga till (i mitt fall Ubuntu 20.04 LTS-tjänsteman universum förvar).

Om du vill lära dig mer om formatet på APT-paketets förvaringsrad, läs Konfigurationsfiler för Ubuntu Package Repository avsnittet i artikeln Hur man använder APT Package Manager i Ubuntu 20.04 LTS.

När jag lägger till ett nytt paketförvar här, kommer stat är närvarande.

De update_cache alternativet kan antingen vara Sann/ja eller Falsk/Nej.

Om den update_cache är satt till Sann, Ansible uppdaterar APT-paketförvarets cache efter att paketförvaret har lagts till.

Om den update_cache är satt till Falsk, Ansible uppdaterar inte cache för APT-paketförvar.

Här vill jag att APT-paketförvaret ska uppdateras när det nya paketförvaret har lagts till. Så jag ställde in update_cache till Sann.

Kör nu add_repo.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / add_repo.yaml

Som du kan se körde spelboken framgångsrikt.

För att bekräfta att paketförvaret (i mitt fall Ubuntu 20.04 LTS universum repository) läggs till, kör följande kommando:

$ grep --color -R 'http: // arkiv.ubuntu.com '/ etc / apt / sources.lista
/ etc / apt / sources.lista.d / *.lista

Som du kan se har en ny fil skapats i / etc / apt / sources.lista.d / katalog (1) och Ubuntu 20.04 LTS universum paketförvar har lagts till (2).

Som standard genererar Ansible automatiskt a .lista filen i / etc / apt / sources.lista.d / katalog, beroende på APT-förrådsraden.

Om du vill välja ett specifikt filnamn (i.e. ubuntu-universum.lista) för ditt arkiv kan du ange ett filnamn med filnamn alternativet för apt_repository modul i din add_repo.yaml spelbok, som visas på skärmdumpen nedan.

Kör nu add_repo.yaml spelbok igen.

$ ansible-playbook playbooks / add_repo.yaml

Som du kan se är filnamnet samma namn som jag angav.

$ grep --color -R 'http: // arkiv.ubuntu.com '/ etc / apt / sources.lista
/ etc / apt / sources.lista.d / *.lista

Ta bort paketförvar

I det här avsnittet visar jag dig hur du tar bort ett befintligt paketförvar från dina Ubuntu-värdar med Ansible.

Spelboken för att ta bort ett paketförvar är nästan detsamma som att lägga till ett paketförvar. Så du kan bara kopiera add_repo.yaml playbook-fil och ändra den lite. Detta är väldigt enkelt att göra.

Kopiera först add_repo.yaml fil till remove_repo.yaml, som följer:

$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.yaml

Redigera remove_repo.yaml spelbok, enligt följande:

$ nano playbooks / remove_repo.yaml

Förändra tillstånd: närvarande till tillstånd: frånvarande, som markerat i skärmdumpen nedan. Det här är den enda förändringen du behöver göra.

När du är klar sparar du filen genom att trycka på + X, följd av Y och .

Springa det remove_repo.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / remove_repo.yaml

Kör sedan följande kommando för att verifiera om paketförvaret du vill ta bort faktiskt har tagits bort.

$ grep --color -R 'http: // arkiv.ubuntu.com '/ etc / apt / sources.lista
/ etc / apt / sources.lista.d / *.lista

Som du kan se, Ubuntu 20.04 LTS-tjänsteman universum paketförvar jag lagt till tidigare har tagits bort.

NOTERA: Ignorera felmeddelandet. Detta meddelande betyder bara att / etc / apt / sources.lista.d / katalogen är tom. Om du vill ta bort felmeddelandet, lägg bara till en 2> / dev / null i slutet av kommandot enligt följande. Felet ska vara borta efter att detta kommando har sammanställts.

$ grep --color -R 'http: // arkiv.ubuntu.com '/ etc / apt / sources.lista
/ etc / apt / sources.lista.d / *.lista 2> / dev / null

Lägga till PPA

I det här avsnittet kommer jag att visa dig hur du lägger till en PPA på dina Ubuntu-värdar med Ansible.

Jag ska lägga till osomon / nodejs-10.19-fokal Nod.js 10.19 PPA för Ubuntu 20.04 LTS i mitt exempel.

Skapa först en ny spelbok add_ppa.yaml, som följer:

$ nano playbooks / add_ppa.yaml

Lägg till följande rader i din add_ppa.yaml spelbok:

- värdar: alla
användare: ansible
bli sann
uppgifter:
- namn: Lägg till nod.js 10.19 PPA
apt_repository:
repo: ppa: osomon / nodejs-10.19-fokal
tillstånd: närvarande
update_cache: True
validate_certs: Falskt

När du är klar sparar du add_ppa.yaml genom att trycka på + X, följd av Y och .

Här, den repo alternativet för apt_repository modulen används för att lägga till PPA osomon / nodejs-10.19-fokal (1).

Var noga med att lägga till ppa: före PPA-namnet, i.e. ppa: osomon / nodejs-10.19-fokal.

De flesta av PPA: erna använder självsignerade certifikat, så Ansible kan inte verifiera dem åt dig, och de kan komma att fel när du kör playbook.

Du kan ställa in validate_certs till Falsk att hoppa över certifikatvalidering för den PPA du lägger till (2). Detta är vad jag har gjort i exemplet i den här artikeln.

NOTERA: Du kan också ställa in validate_certs till Falsk att hoppa över certifieringsvalidering när du lägger till paketförvar från tredje part.

Springa det add_ppa.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / add_ppa.yaml

Som du kan se, en ny .lista filen för PPA osomon / nodejs-10.19-fokal har skapats i / etc / apt / sources.lista.d / katalog (1).

Genom att titta på innehållet i ppa_osomon_nodejs_10_19_focal_focal.lista kan jag bekräfta att PPA har lagts till (2).

$ tree / etc / apt / sources.lista.d /
$ cat / etc / apt / sources.lista.d / ppa_osomon_nodejs_10_19_focal_xenial.lista

Ta bort PPA

Du kan ta bort PPA på samma sätt som vi tog bort paketförvar i det tidigare avsnittet i den här artikeln.

Kopiera bara app_ppa.yaml spelbok till ta bort_ppa.yaml, som följer:

$ cp -v playbooks / add_repo.yaml playbooks / remove_repo.yaml

Öppna nu ta bort_ppa.yaml spelbok, enligt följande:

$ nano playbooks / remove_ppa.yaml

Ändra sedan raden tillstånd: närvarande till tillstånd: frånvarande, som markerat i skärmdumpen nedan.

När du är klar sparar du ta bort_ppa.yaml genom att trycka på + X, följd av Y och .

Springa det ta bort_ppa.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / add_ppa.yaml

Som du kan se ppa_osomon_nodejs_10_19_focal_focal.lista fil för osomon / nodejs-10.19-fokal PPA är inte längre tillgängligt i / etc / apt / sources.lista.d / katalog. Så, PPA osomon / nodejs-10.19-fokal har tagits bort.

$ tree / etc / apt / sources.lista.d /

Ändrar PPA-kodnamn

Ibland stöder inte den PPA du försöker lägga till på din Ubuntu-värd den version av Ubuntu du kör. I så fall måste du ange Ubuntu-kodens kodnamn manuellt medan du lägger till PPA.

Antag att du kör Ubuntu 20.04 med kodnamn fokal- och du försöker lägga till PPA xyz, men PPA xyz stöder bara Ubuntu 16.04 LTS kodnamn xenial. Om du försöker lägga till PPA xyz, du får ett fel, eftersom PPA inte har något paket för Ubuntu 20.04 kodnamn fokal-. Men om du anger Ubuntu 16.04 LTS kodnamn xenial när du lägger till PPA kommer du inte att få något fel. Du kanske kan installera ditt önskade paket från PPA på detta sätt, även om det inte stöder den explicita versionen av Ubuntu som du för närvarande kör.

Låt oss se ett exempel.

Kopiera först add_ppa.yaml playbook-fil till ändra_ppa_kodenamn.yaml, som följer:

$ cp -v playbooks / add_ppa.yaml playbooks / change_ppa_codename.yaml

Öppna sedan ändra_ppa_kodenamn.yaml fil, enligt följande:

$ nano playbooks / change_ppa_codename.yaml

Här är allt du behöver göra att lägga till kodnamn alternativ med önskat Ubuntu-kodnamn (i.e. kodnamn: xenial), som markerat i skärmdumpen nedan.

När du är klar sparar du ändra_ppa_kodenamn.yaml fil genom att trycka på + X, följd av Y och .

Springa det ändra_ppa_kodnamn.yaml spelbok, enligt följande:

$ ansible-playbook playbooks / change_ppa_codename.yaml

NOTERA: Jag får ett fel eftersom PPA jag har lagt till här bara stöder Ubuntu 20.04 LTS. Du kan bara ignorera detta meddelande.

Som du kan se har PPA lagts till och Ubuntu-kodnamnet xenial finns i APT-paketförvaret.

Slutsats

Den här artikeln visade dig hur du hanterar (lägger till / tar bort) Ubuntu-paketförvar och PPA med Ansible.

Ansible apt_repository modulen används för att hantera Ubuntu-paketförvar och PPA. Denna artikel förklarar alla viktiga alternativ för apt_repository modul av Ansible.

Mer information finns på sidan apt_repository officiell Ansible-dokumentation.

Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...