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]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.yamlEscriba las siguientes líneas en el add_repo.yaml archivo:
- Anfitriones: todosUna 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/Sí 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.yamlComo 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.yamlComo 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.yamlEditar el remove_repo.yaml Libro de jugadas, como sigue:
$ Nano Playbooks/remove_repo.yamlCambiar 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.yamlA 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.listaComo 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.listaAgregar 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.yamlAgregue las siguientes líneas en su add_ppa.yaml Playbook:
- Anfitriones: todosUna 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.yamlComo 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/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.yamlAhora, abra el remover_ppa.yaml Libro de jugadas, como sigue:
$ Nano Playbooks/remove_ppa.yamlA 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.yamlComo 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.yamlA continuación, abra el Change_ppa_codename.yaml Archivo, como sigue:
$ Nano Playbooks/Change_ppa_codename.yamlAquí, 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.yamlNOTA: 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.