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å
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å
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: allaanvä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å
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.yamlSom 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å
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: allaanvä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å
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å
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å
Springa det ändra_ppa_kodnamn.yaml spelbok, enligt följande:
$ ansible-playbook playbooks / change_ppa_codename.yamlNOTERA: 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.