GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar una colección de Ansible en un nodo de control de Ansible desconectado

En este tutorial, demuestro cómo y dónde instalar Ansible Content Collections en un nodo de control de Ansible que no tiene acceso a Internet. El proceso es simple y directo, pero algunos usuarios se confunden con la ubicación y la configuración de la instalación.

¿Por qué no hay Internet?

Algunas organizaciones no permitirán que los servidores se conecten directamente a Internet. Y a veces no permiten la conectividad a Internet, ni siquiera a través de servidores proxy. Esta es una política estándar y es posible que ya haya experimentado esto si trabaja con servidores críticos. Y la instalación de algunas herramientas o archivos requeridos no es una tarea fácil sin acceso a Internet.

[ A los lectores también les gustó: Cómo me beneficio de una suscripción a Red Hat en tiempos de crisis y más allá ]

Instalación de Ansible Collections desde Internet

Puede instalar Ansible Collections directamente desde Ansible Galaxy utilizando ansible-galaxy dominio. Es una tarea sencilla en la que solo necesita especificar el nombre de la colección y la ruta de instalación. La ansible-galaxy El comando se encargará de la creación del subdirectorio y las tareas de descarga de la colección.

$ ansible-galaxy collection install community.kubernetes -p ./collections

Consulte la documentación de Ansible o esta guía práctica para obtener más detalles.

Instalación de Ansible Collections sin Internet

Por defecto, ansible-galaxy intentará instalar Ansible Collections desde galaxy.ansible.com o los servidores que haya configurado en GALAXY_SERVER configuración (por ejemplo, Automation Hub). Dado que este escenario es un nodo de control de Ansible sin acceso a Internet, no hablaré de esto. Sin embargo, aún puede descargar el contenido de la colección de Internet mediante una estación de trabajo o una computadora portátil que tenga acceso a Internet y luego transferir el contenido al nodo de control de Ansible desconectado.

Encuentra la colección y descárgala para usarla sin conexión

Para esta demostración, instale Kubernetes Colección de la comunidad (community.kubernetes ).

Desde su estación de trabajo o computadora portátil (con acceso a Internet), vaya a galaxy.ansible.com y busque community.kubernetes Colección.

Haga clic en Descargar Tarball enlace y descargue la colección como un archivo para uso sin conexión.

Transfiera el archivo de almacenamiento a la máquina de destino, que es su nodo de control de Ansible:

$ scp ~/Downloads/community-kubernetes-1.2.0.tar.gz user@ansilbe-controlnode:~/

(O puede usar cualquier otro método como WinSCP, SFTP, etc.)

Implemente Ansible Collection en el nodo de control

Ahora debe preparar la ubicación para guardar las colecciones de Ansible. Puede guardarlo en los directorios del sistema (/usr/share/ansible/collections ) o el directorio de inicio del usuario (~/.ansible/collections ), pero se recomienda mantener las colecciones basadas en proyectos para una mejor gestión).

Para este caso, cree un directorio llamado collections en el directorio del proyecto. En este ejemplo, el usuario local se llama devops.

$ pwd
/home/devops/ansible-collections-demo
$ mkdir collections

Método 1:use el comando ansible-galaxy con Ansible Collection descargado

Usa el mismo ansible-galaxy comando, pero en lugar de instalar el contenido de la colección desde Internet, especifique el archivo de almacenamiento de la colección que se utilizará:

$ pwd
/home/devops
$ ansible-galaxy collection install ~/Downloads/community-kubernetes-1.2.0.tar.gz \
  -p collections/
Starting galaxy collection install process
Process install dependency map
Starting collection install process
Installing 'community.kubernetes:1.2.0' to '/home/devops/devops/workshops/ansible-collections-demo/collections/ansible_collections/community/kubernetes'
community.kubernetes (1.2.0) was installed successfully

Es así de fácil y directo.

Método 2:extraiga y organice el contenido de Ansible Collection manualmente

Como se mencionó anteriormente, si está utilizando ansible-galaxy comando, Ansible se encargará de los subdirectorios, pero aquí debe crear todo manualmente. Esto solo es necesario si ansible-galaxy El comando no funciona con el archivo fuera de línea.

Cree subdirectorios en el siguiente formato:

[PROJECT_DIR]/[COLLECTION_PATH]/ansible_collections/[AUTHOR]/[COLLECTION_NAME]

donde:

  • [PROJECT_DIR]:el directorio de su proyecto (/home/devops/ansible-collections-demo )
  • [COLLECTION_PATH] - que es collections en este caso.
  • ansible_collections:la ruta que Ansible espera para las colecciones
  • [AUTHOR]:la persona o proveedor que mantiene/proporciona la colección (p. ej., comunidad )
  • [COLLECTION_NAME]:el nombre de la colección (por ejemplo, kubernetes )

Cree los directorios como se muestra:

$ mkdir -p collections/ansible_collections/community/kubernetes

Extraiga el contenido de la colección y cópielo en las collections directorio:

$ pwd
/home/devops/ansible-collections-demo
$ tar -xf ~/Downloads/community-kubernetes-1.2.0.tar.gz \
  -C collections/ansible_collections/community/kubernetes

Verifica el contenido:

$ ls -l collections/ansible_collections/community/kubernetes/
total 120
-rw-rw-r--  1 devops devops    36 Feb 26 18:13 bindep.txt
-rw-rw-r--  1 devops devops 15739 Feb 26 18:13 CHANGELOG.rst
drwxrwxr-x  3 devops devops  4096 Feb 26 18:13 changelogs
-rw-rw-r--  1 devops devops   107 Feb 26 18:13 codecov.yml
-rw-rw-r--  1 devops devops  3278 Feb 26 18:13 CONTRIBUTING.md
-rw-rw-r--  1 devops devops   857 Feb 26 18:13 galaxy.yml
-rw-rw-r--  1 devops devops 35148 Feb 26 18:13 LICENSE
-rw-rw-r--  1 devops devops  1112 Feb 26 18:13 Makefile
drwxrwxr-x  2 devops devops  4096 Feb 26 18:13 meta
drwxrwxr-x  3 devops devops  4096 Feb 26 18:13 molecule
drwxrwxr-x 10 devops devops  4096 Feb 26 18:13 plugins
-rw-rw-r--  1 devops devops  8542 Feb 26 18:13 README.md
-rw-rw-r--  1 devops devops    35 Feb 26 18:13 requirements.txt
-rw-rw-r--  1 devops devops    50 Feb 26 18:13 setup.cfg
-rw-rw-r--  1 devops devops    20 Feb 26 18:13 test-requirements.txt
drwxrwxr-x  5 devops devops  4096 Feb 26 18:13 tests
drwxrwxr-x  2 devops devops  4096 Feb 26 18:13 utils

Configurar Ansible para recoger la colección

Ansible buscará Colecciones en ~/.ansible/collections:/usr/share/ansible/collections , que es el valor predeterminado para COLLECTIONS_PATHS .

Debe informar a Ansible sobre la ubicación del contenido de la colección. Para hacerlo, configure ansible.cfg con COLLECTIONS_PATHS entrada. No necesita editar nada en el archivo predeterminado /etc/ansible/ansible.cfg . En su lugar, cree su propio ansible.cfg en el directorio del proyecto y guarde todas las configuraciones para su propio proyecto. He aquí un ejemplo:

$ pwd
/home/devops/ansible-collections-demo
$ cat ansible.cfg 
[defaults]
inventory = ./inventory 
COLLECTIONS_PATHS = ./collections

Verifique el contenido del directorio a continuación:

$ ls -l
total 16
-rw-rw-r-- 1 devops devops  309 Dec 22 22:40 ansible.cfg
drwxrwxr-x 3 devops devops 4096 Feb 26 18:09 collections
-rw-rw-r-- 1 devops devops  369 Feb 26 18:36 k8s-cluster-info.yaml

Verificar la colección de Ansible implementada

Verifica la colección con ansible-galaxy comando:

$ ansible-galaxy collection list
 
# /home/devops/ansible-collections-demo/collections/ansible_collections
Collection           Version
-------------------- -------
community.kubernetes 1.2.0 

Usa tu Colección en tu libro de jugadas ahora.

Puede recopilar fácilmente el acceso al contenido usando ansible-doc comando y mostrará la documentación si la colección y los módulos están correctamente instalados.

$ ansible-doc community.kubernetes.k8s_info

Examine el libro de jugadas simple llamado k8s-cluster-info.yaml a continuación, que muestra la información del pod de un clúster de Kubernetes:

---
- name: Ansible k8s Test
  hosts: localhost
  tasks:
    
    - name: Get a list of all pods from any namespace
      community.kubernetes.k8s_info:
        kind: Pod
      register: pod_list
    
    - name: Display k8s Cluster details
      debug:
        msg: "{{ pod_list }}"

Nota :debe instalar las otras dependencias de Python requeridas (por ejemplo, openshift , PyYAML , etc.) para que los módulos funcionen. Este tema no está dentro del alcance de este artículo, pero puede consultar los procedimientos estándar (o leer cómo instalar módulos de Python sin conexión).

[ El manual del propietario de API:7 prácticas recomendadas para programas de API efectivos ] 

Resumir

Con la introducción de Red Hat Ansible Automation Platform, puede mantener el contenido organizado dentro de su red. Sin embargo, esto debe configurarse manualmente, al igual que Red Hat Ansible Tower. Obtenga más información sobre Automation Hub para obtener más detalles.


Linux
  1. Cómo instalar Node.js en Fedora 35 / Fedora 34

  2. Cómo instalar Ansible en AlmaLinux 8

  3. Cómo instalar Ansible en Debian 11

  4. Cómo instalar Ansible en CentOS 8

  5. Cómo instalar NodeJs en Ubuntu 18.04

Cómo instalar Node.js en Debian 10

Cómo instalar Node.js en Debian 11

Cómo instalar Node.js en CentOS 7

Cómo instalar Node.js en Ubuntu 14.04

Cómo instalar el servidor Ansible en Ubuntu 18.04

Cómo instalar Ansible en Linux Mint 20