Administrar repositorios de paquetes Ubuntu y PPA usando Ansible

Administrar repositorios de paquetes Ubuntu y PPA usando Ansible
Agregar y eliminar repositorios de paquetes y PPA en Ubuntu en su sistema personal puede ser una tarea muy simple. Sin embargo, si tiene muchas máquinas Ubuntu, digamos, 10 o más, luego agregar y eliminar manualmente repositorios de paquetes y PPA en cada sistema uno por uno demostrará tanto tiempo como ineficiente.

El ansible apt_rePository El módulo se puede usar para agregar y eliminar repositorios de paquetes y PPA en sus hosts Ubuntu con facilidad. También puede actualizar el caché del repositorio de paquetes APT utilizando el Ansible apt_rePository módulo.

Este artículo le mostrará cómo administrar repositorios de paquetes Ubuntu y PPA utilizando el Ansible apt_rePository módulo. Entonces empecemos.

Requisitos previos

Si desea probar los ejemplos incluidos en este artículo:

1) Debe tener Ansible instalado en su computadora.
2) Debe tener un host Ubuntu configurado para la automatización Ansible.

Hay muchos artículos sobre Linuxhint dedicados a instalar Ansible y configurar hosts para Automatización Ansible. Puede consultar estos artículos si necesita información adicional.

Configuración del directorio del proyecto

Antes de comenzar, será una buena idea crear una estructura de directorio de proyectos, solo para mantener las cosas un poco más organizadas.

Para crear el directorio del proyecto apt-ppa-repo/ y todos los subdirectorios requeridos (en su directorio de trabajo actual), ejecute el siguiente comando:

$ Mkdir -PV Apt-PPA-Repo/Playbooks

Una vez que se crea el directorio del proyecto, navegue al directorio del proyecto, de la siguiente manera:

$ CD Apt-Ppa-Repo

Crear un Hospedadores archivo de inventario, como sigue:

$ nano anfitriones

Agregue el nombre IP o DNS de host (VM7.notekita.comunicarse y VM8.notekita.comunicarse, En mi caso) de sus hosts ubuntu en el archivo de inventario.

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

Cree un archivo de configuración Ansible en el directorio del proyecto, como sigue:

$ nano ansible.CFG

Escriba las siguientes líneas en el ansible.CFG archivo:

[Valores predeterminados]
inventario = hosts
host_key_checking = falso

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

En este punto, el directorio del proyecto debería verse como el siguiente:

$ árbol

Como puede ver, los hosts ansibles son accesibles. Entonces, podemos pasar a la siguiente sección de este artículo.

$ ansible all -u ansible -m ping

Agregar repositorios de paquetes

En esta sección, le mostraré cómo agregar un repositorio de paquetes en Ubuntu usando Ansible.

Primero, crea un nuevo libro de jugadas llamado add_repo.yaml en el Libros de jugadas/ Directorio, como sigue:

$ Nano Playbooks/add_repo.yaml

Escriba las siguientes líneas en el add_repo.yaml archivo:

- Anfitriones: todos
Usuario: Ansible
hecho realidad
tareas:
- Nombre: Asegúrese de que el repositorio del universo esté habilitado
APT_Repository:
Repo: Deb http: // Archive.ubuntu.com/ubuntu universo focal
Estado: presente
update_cache: verdadero

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

Aquí el repositorio opción del apt_rePository El módulo se usa para especificar la línea de repositorio de paquetes APT (en mi caso, Deb http: // Archive.ubuntu.com/ubuntu universo focal) del repositorio de paquetes que desea agregar (en mi caso, el Ubuntu 20.04 LTS Oficial universo repositorio).

Para obtener más información sobre el formato de la línea de repositorio de paquetes APT, lea la Archivos de configuración del repositorio de paquetes de Ubuntu Sección del artículo Cómo usar el Administrador de paquetes APT en Ubuntu 20.04 LTS.

Como estoy agregando un nuevo repositorio de paquetes aquí, el estado es presente.

El update_cache La opción puede ser Verdadero/ o FALSO/No.

Si el update_cache se establece en Verdadero, Ansible actualizará el caché del repositorio de paquetes APT después de agregar el repositorio de paquetes.

Si el update_cache se establece en FALSO, Ansible no actualizará el caché del repositorio de paquetes APT.

Aquí, quiero que se actualice el repositorio de paquetes APT una vez que se agrega el nuevo repositorio de paquetes. Entonces, configuré el update_cache a Verdadero.

Ahora, corre el add_repo.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/add_repo.yaml

Como puede ver, el libro de jugadas se ejecutó con éxito.

Para confirmar que el repositorio del paquete (en mi caso, el Ubuntu 20.04 LTS universo se agrega el repositorio), ejecute el siguiente comando:

$ Grep -Color -r 'http: // Archive.ubuntu.com '/etc/apt/fuentes.lista
/etc/apt/fuentes.lista.d/*.lista

Como puede ver, se ha creado un nuevo archivo en el /etc/apt/fuentes.lista.d/ Directorio (1) y el Ubuntu 20.04 LTS universo Se ha agregado el repositorio de paquetes (2).

Por defecto, Ansible generará automáticamente el A .lista archivo en el /etc/apt/fuentes.lista.d/ Directorio, dependiendo de la línea de repositorio APT.

Si desea elegir un nombre de archivo específico (i.mi. Ubuntu-Universe.lista) Para su repositorio, puede especificar un nombre de archivo utilizando el Nombre del archivo opción del apt_rePository módulo en tu add_repo.yaml Playbook, como se muestra en la captura de pantalla a continuación.

Ahora, corre el add_repo.yaml Libro de jugadas de nuevo.

$ Ansible-Playbook Playbooks/add_repo.yaml

Como puede ver, el nombre de archivo es el mismo nombre que especifiqué.

$ Grep -Color -r 'http: // Archive.ubuntu.com '/etc/apt/fuentes.lista
/etc/apt/fuentes.lista.d/*.lista

Eliminar repositorios de paquetes

En esta sección, le mostraré cómo eliminar un repositorio de paquetes existente de sus hosts Ubuntu usando Ansible.

El libro de jugadas para eliminar un repositorio de paquetes es casi el mismo que agregar un repositorio de paquetes. Entonces, puedes copiar el add_repo.yaml archivo de libro de jugadas y modifíquelo un poco. Esto es muy sencillo de hacer.

Primero, copie el add_repo.yaml archivo remove_repo.yaml, como sigue:

$ CP -V Playbooks/add_repo.Yaml Playbooks/remove_repo.yaml

Editar el remove_repo.yaml Libro de jugadas, como sigue:

$ Nano Playbooks/remove_repo.yaml

Cambiar Estado: presente a Estado: ausente, como se marca en la captura de pantalla a continuación. Este será el único cambio que necesitas hacer.

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

Ejecutar el remove_repo.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/remove_repo.yaml

A continuación, ejecute el siguiente comando para verificar si el repositorio de paquetes que desea eliminar realmente se ha eliminado.

$ Grep -Color -r 'http: // Archive.ubuntu.com '/etc/apt/fuentes.lista
/etc/apt/fuentes.lista.d/*.lista

Como puede ver, el Ubuntu 20.04 LTS Oficial universo El repositorio de paquetes que agregué anteriormente se ha eliminado.

NOTA: Ignorar el mensaje de error. Este mensaje solo significa que el /etc/apt/fuentes.lista.d/ El directorio está vacío. Si desea eliminar el mensaje de error, simplemente agregue un 2>/dev/nulo Al final del comando, como sigue. El error debe desaparecer después de sugerir este comando.

$ Grep -Color -r 'http: // Archive.ubuntu.com '/etc/apt/fuentes.lista
/etc/apt/fuentes.lista.d/*.Lista 2>/dev/null

Agregar ppas

En esta sección, le mostraré cómo agregar un PPA a sus anfitriones de Ubuntu usando Ansible.

Agregaré el Osomon/NodeJS-10.19 focal Nodo.JS 10.19 PPA para Ubuntu 20.04 LTS en mi ejemplo.

Primero, crea un nuevo libro de jugadas add_ppa.yaml, como sigue:

$ Nano Playbooks/add_ppa.yaml

Agregue las siguientes líneas en su add_ppa.yaml Playbook:

- Anfitriones: todos
Usuario: Ansible
hecho realidad
tareas:
- Nombre: Agregar nodo.JS 10.19 PPA
APT_Repository:
Repo: PPA: Osomon/NodeJS-10.19 focal
Estado: presente
update_cache: verdadero
validate_certs: falso

Una vez que haya terminado, guarde el add_ppa.yaml Playbook presionando + X, seguido por Y y .

Aquí el repositorio opción del apt_rePository El módulo se usa para agregar el PPA Osomon/NodeJS-10.19 focal (1).

Asegúrese de agregar PPA: Antes del nombre de PPA, yo.mi. PPA: Osomon/NodeJS-10.19 focal.

La mayoría de los PPA usan certificados autofirmados, por lo que Ansible no puede verificarlos por usted, y pueden equivocarse cuando ejecuta el libro de jugadas.

Puedes configurar validate_certs a FALSO Para omitir la validación del certificado para el PPA que está agregando (2). Esto es lo que he hecho en el ejemplo de este artículo.

NOTA: También puedes configurar validate_certs a FALSO Para omitir la validación de la certificación al agregar repositorios de paquetes de terceros.

Ejecutar el add_ppa.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/add_ppa.yaml

Como puede ver, un nuevo .lista Archivo para el PPA Osomon/NodeJS-10.19 focal ha sido creado en el /etc/apt/fuentes.lista.d/ directorio (1).

Mirando el contenido del PPA_OSOMON_NODEJS_10_19_FOCAL_FOCAL.lista Archivo, puedo confirmar que se ha agregado el PPA (2).

$ árbol/etc/apt/fuentes.lista.d/
$ cat/etc/apt/fuentes.lista.D/PPA_OSOMON_NODEJS_10_19_FOCAL_XENIAL.lista

Eliminar PPA

Puede eliminar los PPA de la misma manera que eliminamos los repositorios de paquetes en la sección anterior de este artículo.

Solo copia el app_ppa.yaml libro de jugadas para remover_ppa.yaml, como sigue:

$ CP -V Playbooks/add_repo.Yaml Playbooks/remove_repo.yaml

Ahora, abra el remover_ppa.yaml Libro de jugadas, como sigue:

$ Nano Playbooks/remove_ppa.yaml

A continuación, cambie la línea Estado: presente a Estado: ausente, como se marca en la captura de pantalla a continuación.

Una vez que haya terminado, guarde el remover_ppa.yaml Playbook presionando + X, seguido por Y y .

Ejecutar el remover_ppa.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/add_ppa.yaml

Como puedes ver, el PPA_OSOMON_NODEJS_10_19_FOCAL_FOCAL.lista archivo para el Osomon/NodeJS-10.19 focal PPA ya no está disponible en el /etc/apt/fuentes.lista.d/ directorio. Entonces, el PPA Osomon/NodeJS-10.19 focal ha sido removido.

$ árbol/etc/apt/fuentes.lista.d/

Cambiar el nombre de código PPA

A veces, el PPA que está tratando de agregar en su host Ubuntu no admite la versión de Ubuntu que está ejecutando. En ese caso, tendrá que especificar la versión de Ubuntu en codeName manualmente al agregar el PPA.

Supongamos que está ejecutando Ubuntu 20.04 con nombre en código focal Y estás tratando de agregar el PPA xyz, Pero el PPA xyz Solo admite Ubuntu 16.04 LTS CodeName xenial. Si intentas agregar el PPA xyz, Recibirá un error, ya que el PPA no tiene ningún paquete para Ubuntu 20.04 nombre en código focal. Pero, si especifica el Ubuntu 16.04 LTS CodeName xenial Al agregar el PPA, no recibirá ningún error. Es posible que pueda instalar su paquete deseado desde el PPA de esta manera, incluso si no admite la versión explícita de Ubuntu que está ejecutando actualmente.

Veamos un ejemplo.

Primero, copie el add_ppa.yaml archivo de libros de jugadas a Change_ppa_codename.yaml, como sigue:

$ CP -V Playbooks/add_ppa.Yaml Playbooks/Change_ppa_codename.yaml

A continuación, abra el Change_ppa_codename.yaml Archivo, como sigue:

$ Nano Playbooks/Change_ppa_codename.yaml

Aquí, todo lo que tienes que hacer es agregar el nombre clave Opción con el nombre de código Ubuntu deseado (yo.mi. nombre en código: xenial), como se marca en la captura de pantalla a continuación.

Una vez que haya terminado, guarde el Change_ppa_codename.yaml Archivo presionando + X, seguido por Y y .

Ejecutar el Change_ppa_codename.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/Change_ppa_codename.yaml

NOTA: Estoy recibiendo un error porque el PPA que he agregado aquí solo admite Ubuntu 20.04 LTS. Puedes ignorar este mensaje.

Como puede ver, se ha agregado el PPA y el nombre en código de Ubuntu xenial está en la línea de repositorio de paquetes apt.

Conclusión

Este artículo le mostró cómo administrar (agregar/eliminar) repositorios de paquetes Ubuntu y PPA usando Ansible.

El ansible apt_rePository El módulo se utiliza para administrar repositorios de paquetes Ubuntu y PPAs. Este artículo explicó todas las opciones importantes del apt_rePository Módulo de Ansible.

Para obtener más información, consulte la página de documentación de Ansible APT_REPository Ansible.