De Ansible apt_repository module kan worden gebruikt om pakketrepository's en PPA's op uw Ubuntu-hosts gemakkelijk toe te voegen en te verwijderen. U kunt de cache van de APT-pakketrepository ook bijwerken met de Ansible apt_repository module.
Dit artikel laat u zien hoe u Ubuntu-pakketrepository's en PPA's beheert met behulp van de Ansible apt_repository module. Dus laten we beginnen.
Vereisten
Als u de voorbeelden in dit artikel wilt uitproberen:
1) Je moet Ansible op je computer hebben geïnstalleerd.
2) U moet een Ubuntu-host hebben geconfigureerd voor Ansible-automatisering.
Er zijn veel artikelen over LinuxHint gewijd aan het installeren van Ansible en het configureren van hosts voor Ansible-automatisering. U kunt deze artikelen bekijken als u aanvullende informatie nodig heeft.
Projectmap instellen
Voordat we beginnen, is het een goed idee om een projectdirectorystructuur te maken, om de zaken een beetje overzichtelijk te houden.
De projectdirectory maken: apt-ppa-repo/ en alle vereiste subdirectories (in uw huidige werkdirectory), voert u de volgende opdracht uit:
$ mkdir -pv apt-ppa-repo/playbooks
Nadat de projectdirectory is gemaakt, navigeert u als volgt naar de projectdirectory:
$ cd apt-ppa-repo
Maak een gastheren inventarisbestand, als volgt:
$ nano-hosts
Voeg de host-IP- of DNS-naam toe (vm7.nodekite.com en vm8.nodekite.com, in mijn geval) van uw Ubuntu-hosts in het inventarisbestand.
Als u klaar bent, slaat u het bestand op door op . te drukken
Maak als volgt een Ansible-configuratiebestand in de projectdirectory:
$ nano mogelijk.cfg
Typ de volgende regels in de weerbaar.cfg het dossier:
[standaard]inventaris = hosts
host_key_checking = False
Als u klaar bent, slaat u het bestand op door op . te drukken
Op dit punt zou de projectdirectory er als volgt uit moeten zien:
$ boom
Zoals je kunt zien, zijn de Ansible-hosts toegankelijk. We kunnen dus doorgaan naar het volgende gedeelte van dit artikel.
$ ansible all -u ansible -m ping
Pakketopslagplaatsen toevoegen
In deze sectie laat ik je zien hoe je een pakketrepository in Ubuntu toevoegt met Ansible.
Maak eerst een nieuw playbook met de naam add_repo.yaml in de draaiboeken/ directory, als volgt:
$ nano playbooks/add_repo.yaml
Typ de volgende regels in de add_repo.yaml het dossier:
- hosts: allegebruiker: ansible
worden: True
taken:
- naam: zorg ervoor dat de universe-repository is ingeschakeld
apt_repository:
repo: deb http://archive.ubuntu.com/ubuntu brandpuntsuniversum
staat: aanwezig
update_cache: True
Als u klaar bent, slaat u het bestand op door op . te drukken
Hier de repo optie van de apt_repository module wordt gebruikt om de APT-pakketrepositoryregel te specificeren (in mijn geval my, deb http://archief.ubuntu.com/ubuntu brandpuntsuniversum) van de pakketrepository die u wilt toevoegen (in mijn geval de Ubuntu 20.04 LTS officieel universum opslagplaats).
Voor meer informatie over het formaat van de APT-pakketrepositoryregel, lees de: Configuratiebestanden Ubuntu-pakketrepository sectie van het artikel APT Package Manager gebruiken in Ubuntu 20.04 LTS.
Aangezien ik hier een nieuwe pakketrepository aan het toevoegen ben, is de staat is Cadeau.
De update_cache optie kan ofwel zijn waar/Ja of niet waar/Nee.
Als de update_cache ingesteld op waar, Ansible zal de cache van de pakketrepository van APT updaten na het toevoegen van de pakketrepository.
Als de update_cache ingesteld op niet waar, Ansible zal de cache van de APT-pakketrepository niet bijwerken.
Hier wil ik dat de APT-pakketrepository wordt bijgewerkt zodra de nieuwe pakketrepository is toegevoegd. Dus ik heb de update_cache naar waar.
Voer nu de add_repo.yaml draaiboek, als volgt:
$ ansible-playbook playbooks/add_repo.yamlZoals je kunt zien, is het playbook succesvol uitgevoerd.
Om te bevestigen dat de pakketrepository (in mijn geval de Ubuntu 20.04 LTS universum repository) is toegevoegd, voert u de volgende opdracht uit:
$ grep --color -R 'http://archief.ubuntu.com' /etc/apt/sources.lijst/etc/apt/bronnen.lijst.d/*.lijst
Zoals u kunt zien, is er een nieuw bestand aangemaakt in de /etc/apt/bronnen.lijst.d/ directory (1) en de Ubuntu 20.04 LTS universum pakketrepository is toegevoegd (2).
Standaard genereert Ansible automatisch de a .lijst bestand in de /etc/apt/bronnen.lijst.d/ directory, afhankelijk van de APT-repositoryregel.
Als u een specifieke bestandsnaam wilt kiezen (i.e. ubuntu-universum.lijst) voor uw repository, kunt u een bestandsnaam specificeren met de bestandsnaam optie van de apt_repository module in je add_repo.yaml playbook, zoals weergegeven in de onderstaande schermafbeelding.
Voer nu de add_repo.yaml weer speelboek.
$ ansible-playbook playbooks/add_repo.yaml
Zoals je kunt zien, is de bestandsnaam dezelfde naam die ik heb opgegeven.
$ grep --color -R 'http://archief.ubuntu.com' /etc/apt/sources.lijst/etc/apt/bronnen.lijst.d/*.lijst
Pakketopslagplaatsen verwijderen
In dit gedeelte laat ik u zien hoe u een bestaande pakketrepository van uw Ubuntu-hosts verwijdert met Ansible.
Het draaiboek voor het verwijderen van een pakketrepository is bijna hetzelfde als het toevoegen van een pakketrepository. U kunt dus gewoon de . kopiëren add_repo.yaml playbook-bestand en pas het een beetje aan. Dit is heel eenvoudig te doen.
Kopieer eerst de add_repo.yaml bestand naar remove_repo.yaml, als volgt:
$ cp -v playbooks/add_repo.yaml playbooks/remove_repo.yaml
Bewerk de remove_repo.yaml draaiboek, als volgt:
$ nano playbooks/remove_repo.yaml
Verandering staat: aanwezig naar staat: afwezig, zoals aangegeven in de onderstaande schermafbeelding. Dit is de enige wijziging die u hoeft aan te brengen.
Als u klaar bent, slaat u het bestand op door op . te drukken
Voer de ... uit remove_repo.yaml draaiboek, als volgt:
$ ansible-playbook playbooks/remove_repo.yaml
Voer vervolgens de volgende opdracht uit om te controleren of de pakketrepository die u wilt verwijderen, daadwerkelijk is verwijderd:.
$ grep --color -R 'http://archief.ubuntu.com' /etc/apt/sources.lijst/etc/apt/bronnen.lijst.d/*.lijst
Zoals je kunt zien, is de Ubuntu 20.04 LTS officieel universum pakketrepository die ik eerder heb toegevoegd, is verwijderd.
OPMERKING: Negeer de foutmelding. Dit bericht betekent alleen dat de /etc/apt/bronnen.lijst.d/ map is leeg. Als u de foutmelding wilt verwijderen, voegt u gewoon een 2>/dev/null aan het einde van de opdracht, als volgt:. De fout zou verdwenen moeten zijn na het invoeren van deze opdracht.
$ grep --color -R 'http://archief.ubuntu.com' /etc/apt/sources.lijst/etc/apt/bronnen.lijst.d/*.lijst 2>/dev/null
PPA's toevoegen
In dit gedeelte laat ik u zien hoe u een PPA toevoegt aan uw Ubuntu-hosts met Ansible.
ik zal de . toevoegen osomon/nodejs-10.19-focaal Knooppunt.js 10.19 PPA voor Ubuntu 20.04 LTS in mijn voorbeeld.
Maak eerst een nieuw playbook add_ppa.yaml, als volgt:
$ nano playbooks/add_ppa.yaml
Voeg de volgende regels toe aan je add_ppa.yaml Speelboek:
- hosts: allegebruiker: ansible
worden: True
taken:
- naam: Knooppunt toevoegen.js 10.19 PPA
apt_repository:
repo: ppa:osomon/nodejs-10.19-focaal
staat: aanwezig
update_cache: True
valid_certs: False
Als u klaar bent, slaat u de add_ppa.yaml playbook door op te drukken
Hier de repo optie van de apt_repository module wordt gebruikt om de PPA . toe te voegen osomon/nodejs-10.19-focaal (1).
Voeg zeker toe pp: voor de PPA-naam, i.e. ppa:osomon/nodejs-10.19-focaal.
De meeste PPA's gebruiken zelfondertekende certificaten, dus Ansible kan ze niet voor u verifiëren en er kunnen fouten optreden wanneer u het playbook uitvoert.
U kunt instellen valid_certs naar niet waar certificaatvalidatie overslaan voor de PPA die u toevoegt (2). Dit is wat ik heb gedaan in het voorbeeld in dit artikel.
OPMERKING: U kunt ook instellen valid_certs naar niet waar om certificeringsvalidatie over te slaan bij het toevoegen van pakketrepository's van derden.
Voer de ... uit add_ppa.yaml draaiboek, als volgt:
$ ansible-playbook playbooks/add_ppa.yaml
Zoals je kunt zien, een nieuwe .lijst bestand voor de PPA osomon/nodejs-10.19-focaal is gemaakt in de /etc/apt/bronnen.lijst.d/ adresboek (1).
Door te kijken naar de inhoud van de ppa_osomon_nodejs_10_19_focal_focal.lijst bestand kan ik bevestigen dat de PPA is toegevoegd (2).
$ boom /etc/apt/sources.lijst.d/$ cat /etc/apt/sources.lijst.d/ppa_osomon_nodejs_10_19_focal_xenial.lijst
PPA's verwijderen
U kunt PPA's op dezelfde manier verwijderen als we pakketrepository's in het eerdere gedeelte van dit artikel hebben verwijderd.
Kopieer gewoon de app_ppa.yaml draaiboek naar remove_ppa.yaml, als volgt:
$ cp -v playbooks/add_repo.yaml playbooks/remove_repo.yaml
Open nu de remove_ppa.yaml draaiboek, als volgt:
$ nano playbooks/remove_ppa.yaml
Verander vervolgens de regel staat: aanwezig naar staat: afwezig, zoals aangegeven in de onderstaande schermafbeelding.
Als u klaar bent, slaat u de remove_ppa.yaml playbook door op te drukken
Voer de ... uit remove_ppa.yaml draaiboek, als volgt:
$ ansible-playbook playbooks/add_ppa.yaml
Zoals je kunt zien, is de ppa_osomon_nodejs_10_19_focal_focal.lijst bestand voor de osomon/nodejs-10.19-focaal PPA is niet langer beschikbaar in de /etc/apt/bronnen.lijst.d/ map. Dus de PPA osomon/nodejs-10.19-focaal is verwijderd.
$ boom /etc/apt/sources.lijst.d/
PPA-codenaam wijzigen
Soms ondersteunt de PPA die u probeert toe te voegen aan uw Ubuntu-host de versie van Ubuntu die u gebruikt niet. In dat geval moet u de codenaam van de Ubuntu-versie handmatig opgeven tijdens het toevoegen van de PPA.
Stel dat u Ubuntu 20 . gebruikt.04 met codenaam brandpunt en u probeert de PPA toe te voegen xyz, maar de PPA xyz ondersteunt alleen Ubuntu 16.04 LTS-codenaam xenial. Als u de PPA probeert toe te voegen xyz, u krijgt een foutmelding, omdat de PPA geen pakket heeft voor Ubuntu 20.04 codenaam brandpunt. Maar als u de Ubuntu 16 . specificeert.04 LTS-codenaam xenial tijdens het toevoegen van de PPA ontvangt u geen foutmelding. Mogelijk kunt u op deze manier uw gewenste pakket van de PPA installeren, zelfs als het de expliciete versie van Ubuntu die u momenteel gebruikt niet ondersteunt.
Laten we een voorbeeld zien.
Kopieer eerst de add_ppa.yaml playbook-bestand naar change_ppa_codename.yaml, als volgt:
$ cp -v playbooks/add_ppa.yaml playbooks/change_ppa_codename.yaml
Open vervolgens de change_ppa_codename.yaml bestand, als volgt:
$ nano playbooks/change_ppa_codename.yaml
Hier hoef je alleen maar de . toe te voegen codenaam optie met uw gewenste Ubuntu-codenaam (i.e. codenaam: xenial), zoals aangegeven in de onderstaande schermafbeelding.
Als u klaar bent, slaat u de change_ppa_codename.yaml bestand door op te drukken
Voer de ... uit change_ppa_codename.yaml draaiboek, als volgt:
$ ansible-playbook playbooks/change_ppa_codename.yamlOPMERKING: Ik krijg een foutmelding omdat de PPA die ik hier heb toegevoegd alleen Ubuntu 20 ondersteunt.04 LTS. Je kunt dit bericht gewoon negeren.
Zoals u kunt zien, is de PPA toegevoegd en de Ubuntu-codenaam xenial staat in de regel van de APT-pakketrepository.
Conclusie
Dit artikel liet u zien hoe u Ubuntu-pakketrepository's en PPA's kunt beheren (toevoegen/verwijderen) met Ansible.
De Ansible apt_repository module wordt gebruikt om Ubuntu-pakketrepository's en PPA's te beheren. In dit artikel worden alle belangrijke opties van de apt_repository module van Ansible.
Raadpleeg voor meer informatie de officiële Ansible-documentatiepagina van apt_repositorytory.