L'Ansible apt_repository le module peut être utilisé pour ajouter et supprimer facilement des référentiels de packages et des PPA sur vos hôtes Ubuntu. Vous pouvez également mettre à jour le cache du référentiel de packages APT à l'aide de l'Ansible apt_repository module.
Cet article vous montrera comment gérer les référentiels de packages Ubuntu et les PPA à l'aide d'Ansible apt_repository module. Alors, commençons.
Conditions préalables
Si vous voulez essayer les exemples inclus dans cet article :
1) Vous devez avoir Ansible installé sur votre ordinateur.
2) Vous devez avoir un hôte Ubuntu configuré pour l'automatisation Ansible.
Il existe de nombreux articles sur LinuxHint dédiés à l'installation d'Ansible et à la configuration des hôtes pour l'automatisation d'Ansible. Vous pouvez consulter ces articles si vous avez besoin d'informations supplémentaires.
Configuration du répertoire de projet
Avant de commencer, ce sera une bonne idée de créer une structure de répertoires de projet, juste pour garder les choses un peu plus organisées.
Pour créer le répertoire du projet apt-ppa-repo/ et tous les sous-répertoires requis (dans votre répertoire de travail actuel), exécutez la commande suivante :
$ mkdir -pv apt-ppa-repo/playbooks
Une fois le répertoire du projet créé, accédez au répertoire du projet, comme suit :
$ cd apt-ppa-repo
Créer un hôtes fichier d'inventaire, comme suit :
$ nano hôtes
Ajoutez l'adresse IP ou le nom DNS de l'hôte (vm7.nœudkite.com et vm8.nœudkite.com, dans mon cas) de vos hôtes Ubuntu dans le fichier d'inventaire.
Une fois que vous avez terminé, enregistrez le fichier en appuyant sur
Créez un fichier de configuration Ansible dans le répertoire du projet, comme suit :
$ nano ansible.cfg
Tapez les lignes suivantes dans le ansible.cfg déposer:
[valeurs par défaut]inventaire = hôtes
host_key_checking = False
Une fois que vous avez terminé, enregistrez le fichier en appuyant sur
À ce stade, le répertoire du projet doit ressembler à ce qui suit :
$ arbre
Comme vous pouvez le voir, les hébergeurs Ansible sont accessibles. Nous pouvons donc passer à la section suivante de cet article.
$ ansible all -u ansible -m ping
Ajout de référentiels de packages
Dans cette section, je vais vous montrer comment ajouter un référentiel de packages dans Ubuntu à l'aide d'Ansible.
Tout d'abord, créez un nouveau playbook appelé add_repo.yaml dans le cahiers/ répertoire, comme suit :
$ nano playbooks/add_repo.yaml
Tapez les lignes suivantes dans le add_repo.yaml déposer:
- hôtes : tousutilisateur : ansible
devenir vrai
Tâches:
- name : assurez-vous que le référentiel d'univers est activé
apt_repository :
dépôt : deb http://archive.Ubuntu.univers focal com/ubuntu
état : présent
update_cache : vrai
Une fois que vous avez terminé, enregistrez le fichier en appuyant sur
Ici le dépôt option de la apt_repository module est utilisé pour spécifier la ligne de référentiel de packages APT (dans mon cas, deb http://archive.Ubuntu.univers focal com/ubuntu) du référentiel de packages que vous souhaitez ajouter (dans mon cas, l'Ubuntu 20.04 LTS officiel univers dépôt).
Pour en savoir plus sur le format de la ligne de référentiel de packages APT, lisez le Fichiers de configuration du référentiel de packages Ubuntu section de l'article Comment utiliser le gestionnaire de packages APT dans Ubuntu 20.04 LTS.
Comme j'ajoute un nouveau référentiel de packages ici, le Etat est cadeau.
le mise à jour_cache l'option peut être soit Vrai/Oui ou alors Faux/non.
Si la mise à jour_cache est réglé sur Vrai, Ansible mettra à jour le cache du référentiel de packages APT après avoir ajouté le référentiel de packages.
Si la mise à jour_cache est réglé sur Faux, Ansible ne mettra pas à jour le cache du référentiel de packages APT.
Ici, je souhaite que le référentiel de packages APT soit mis à jour une fois le nouveau référentiel de packages ajouté. Alors, j'ai mis le mise à jour_cache à Vrai.
Maintenant, lancez le add_repo.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/add_repo.yamlComme vous pouvez le voir, le playbook s'est exécuté avec succès.
Pour confirmer que le référentiel de packages (dans mon cas, l'Ubuntu 20.04 LTS univers repository) est ajouté, exécutez la commande suivante :
$ grep --color -R 'http://archive.Ubuntu.com' /etc/apt/sources.liste/etc/apt/sources.liste.ré/*.liste
Comme vous pouvez le voir, un nouveau fichier a été créé dans le /etc/apt/sources.liste.ré/ répertoire (1) et l'Ubuntu 20.04 LTS univers le référentiel de packages a été ajouté (2).
Par défaut, Ansible générera automatiquement le .liste fichier dans le /etc/apt/sources.liste.ré/ répertoire, en fonction de la ligne du référentiel APT.
Si vous souhaitez choisir un nom de fichier spécifique (i.e. ubuntu-univers.liste) pour votre référentiel, vous pouvez spécifier un nom de fichier en utilisant le nom de fichier option de la apt_repository module dans votre add_repo.yaml playbook, comme indiqué dans la capture d'écran ci-dessous.
Maintenant, lancez le add_repo.yaml livre de jeu à nouveau.
$ ansible-playbook playbooks/add_repo.yaml
Comme vous pouvez le voir, le nom de fichier est le même nom que j'ai spécifié.
$ grep --color -R 'http://archive.Ubuntu.com' /etc/apt/sources.liste/etc/apt/sources.liste.ré/*.liste
Suppression des référentiels de packages
Dans cette section, je vais vous montrer comment supprimer un référentiel de packages existant de vos hôtes Ubuntu à l'aide d'Ansible.
Le playbook pour supprimer un référentiel de packages est presque le même que l'ajout d'un référentiel de packages. Ainsi, vous pouvez simplement copier le add_repo.yaml playbook et modifiez-le un peu. c'est très simple à faire.
Tout d'abord, copiez le add_repo.yaml fichier à remove_repo.yaml, comme suit:
$ cp -v playbooks/add_repo.playbooks yaml/remove_repo.yaml
Modifier le remove_repo.yaml livre de jeu, comme suit :
$ nano playbooks/remove_repo.yaml
Changer état : présent à état : absent, comme indiqué dans la capture d'écran ci-dessous. Ce sera le seul changement que vous devez faire.
Une fois que vous avez terminé, enregistrez le fichier en appuyant sur
Exécutez le remove_repo.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/remove_repo.yaml
Ensuite, exécutez la commande suivante pour vérifier si le référentiel de packages que vous souhaitez supprimer a bien été supprimé.
$ grep --color -R 'http://archive.Ubuntu.com' /etc/apt/sources.liste/etc/apt/sources.liste.ré/*.liste
Comme vous pouvez le voir, l'Ubuntu 20.04 LTS officiel univers le référentiel de packages que j'ai ajouté précédemment a été supprimé.
REMARQUE: Ignorer le message d'erreur. Ce message signifie simplement que le /etc/apt/sources.liste.ré/ le répertoire est vide. Si vous souhaitez supprimer le message d'erreur, ajoutez simplement un 2>/dev/null à la fin de la commande, comme suit. L'erreur devrait disparaître après avoir entré cette commande.
$ grep --color -R 'http://archive.Ubuntu.com' /etc/apt/sources.liste/etc/apt/sources.liste.ré/*.liste 2>/dev/null
Ajout de PPA
Dans cette section, je vais vous montrer comment ajouter un PPA sur vos hôtes Ubuntu en utilisant Ansible.
je vais ajouter le osomon/nodejs-10.19 focales Nœud.js 10.19 PPA pour Ubuntu 20.04 LTS dans mon exemple.
Tout d'abord, créez un nouveau playbook ajouter_ppa.yaml, comme suit:
$ nano playbooks/add_ppa.yaml
Ajoutez les lignes suivantes dans votre ajouter_ppa.yaml livre de jeu :
- hôtes : tousutilisateur : ansible
devenir vrai
Tâches:
- nom : Ajouter un nœud.js 10.19 APP
apt_repository :
dépôt : ppa:osomon/nodejs-10.19 focales
état : présent
update_cache : vrai
valid_certs : Faux
Une fois que vous avez terminé, enregistrez le ajouter_ppa.yaml playbook en appuyant sur
Ici le dépôt option de la apt_repository module est utilisé pour ajouter le PPA osomon/nodejs-10.19 focales (1).
Assurez-vous d'ajouter pp : avant le nom PPA, je.e. ppa:osomon/nodejs-10.19 focales.
La plupart des PPA utilisent des certificats auto-signés, donc Ansible ne peut pas les vérifier pour vous, et ils peuvent se tromper lorsque vous exécutez le playbook.
Vous pouvez définir valider_certs à Faux pour ignorer la validation du certificat pour le PPA que vous ajoutez (2). C'est ce que j'ai fait dans l'exemple de cet article.
REMARQUE: Vous pouvez également définir valider_certs à Faux pour ignorer la validation de la certification lors de l'ajout de référentiels de packages tiers.
Exécutez le ajouter_ppa.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/add_ppa.yaml
Comme vous pouvez le voir, une nouvelle .liste dossier pour le PPA osomon/nodejs-10.19 focales a été créé dans le /etc/apt/sources.liste.ré/ annuaire (1).
En regardant le contenu du ppa_osomon_nodejs_10_19_focal_focal.liste fichier, je peux confirmer que le PPA a été ajouté (2).
$ arbre /etc/apt/sources.liste.ré/$ cat /etc/apt/sources.liste.d/ppa_osomon_nodejs_10_19_focal_xenial.liste
Supprimer les PPA
Vous pouvez supprimer les PPA de la même manière que nous avons supprimé les référentiels de packages dans la section précédente de cet article.
Copiez simplement le app_ppa.yaml livre de jeu à remove_ppa.yaml, comme suit:
$ cp -v playbooks/add_repo.playbooks yaml/remove_repo.yaml
Maintenant, ouvrez le remove_ppa.yaml livre de jeu, comme suit :
$ nano playbooks/remove_ppa.yaml
Ensuite, modifiez la ligne état : présent à état : absent, comme indiqué dans la capture d'écran ci-dessous.
Une fois que vous avez terminé, enregistrez le remove_ppa.yaml playbook en appuyant sur
Exécutez le remove_ppa.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/add_ppa.yaml
Comme vous pouvez le voir, le ppa_osomon_nodejs_10_19_focal_focal.liste dossier pour le osomon/nodejs-10.19 focales Le PPA n'est plus disponible dans le /etc/apt/sources.liste.ré/ annuaire. Ainsi, le PPA osomon/nodejs-10.19 focales a été retiré.
$ arbre /etc/apt/sources.liste.ré/
Changer le nom de code PPA
Parfois, le PPA que vous essayez d'ajouter sur votre hôte Ubuntu ne prend pas en charge la version d'Ubuntu que vous exécutez. Dans ce cas, vous devrez spécifier manuellement le nom de code de la version Ubuntu lors de l'ajout du PPA.
Supposons que vous exécutiez Ubuntu 20.04 avec nom de code focal et vous essayez d'ajouter le PPA xyz, mais le PPA xyz ne prend en charge que Ubuntu 16.04 nom de code LTS xénial. Si vous essayez d'ajouter le PPA xyz, vous obtiendrez une erreur, car le PPA n'a aucun package pour Ubuntu 20.04 nom de code focal. Mais, si vous spécifiez Ubuntu 16.04 nom de code LTS xénial lors de l'ajout du PPA, vous ne recevrez aucune erreur. Vous pourrez peut-être installer le package souhaité à partir du PPA de cette manière, même s'il ne prend pas en charge la version explicite d'Ubuntu que vous utilisez actuellement.
Voyons un exemple.
Tout d'abord, copiez le ajouter_ppa.yaml fichier de playbook à change_ppa_codename.yaml, comme suit:
$ cp -v playbooks/add_ppa.playbooks yaml/change_ppa_codename.yaml
Ensuite, ouvrez le change_ppa_codename.yaml fichier, comme suit :
$ nano playbooks/change_ppa_codename.yaml
Ici, tout ce que vous avez à faire est d'ajouter le nom de code option avec le nom de code Ubuntu de votre choix (je.e. nom de code : xenial), comme indiqué dans la capture d'écran ci-dessous.
Une fois que vous avez terminé, enregistrez le change_ppa_codename.yaml fichier en appuyant sur
Exécutez le change_ppa_codename.yaml livre de jeu, comme suit :
$ ansible-playbook playbooks/change_ppa_codename.yamlREMARQUE: Je reçois une erreur car le PPA que j'ai ajouté ici ne prend en charge que Ubuntu 20.04 LTS. Vous pouvez simplement ignorer ce message.
Comme vous pouvez le voir, le PPA a été ajouté et le nom de code Ubuntu xénial est dans la ligne du référentiel de packages APT.
Conclusion
Cet article vous a montré comment gérer (ajouter/supprimer) les référentiels de packages Ubuntu et les PPA à l'aide d'Ansible.
L'Ansible apt_repository module est utilisé pour gérer les référentiels de packages Ubuntu et les PPA. Cet article a expliqué toutes les options importantes du apt_repository module d'Ansible.
Pour plus d'informations, consultez la page de documentation officielle apt_repository Ansible.