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.