Dans ce didacticiel, je montre comment et où installer Ansible Content Collections dans un nœud de contrôle Ansible qui n'a pas accès à Internet. Le processus est simple et direct, mais certains utilisateurs sont confus avec l'emplacement et la configuration de l'installation.
Pourquoi pas d'Internet ?
Certaines organisations n'autorisent pas les serveurs à se connecter directement à Internet. Et parfois, ils n'autorisent pas la connectivité Internet, même via des serveurs proxy. Il s'agit d'une règle standard et vous en avez peut-être déjà fait l'expérience si vous travaillez avec des serveurs critiques. Et l'installation de certains outils ou fichiers requis n'est pas une tâche facile sans accès à Internet.
[ Les lecteurs ont également aimé : Comment bénéficier d'un abonnement Red Hat en temps de crise et au-delà ]
Installer des collections Ansible depuis Internet
Vous pouvez installer directement Ansible Collections depuis Ansible Galaxy en utilisant le ansible-galaxy
commande. Il s'agit d'une tâche simple où il vous suffit de spécifier le nom de la collection et le chemin d'installation. La ansible-galaxy
se chargera des tâches de création de sous-répertoire et de téléchargement de la collection.
$ ansible-galaxy collection install community.kubernetes -p ./collections
Reportez-vous à la documentation Ansible ou à ce guide pratique pour plus de détails.
Installer des collections Ansible sans Internet
Par défaut, ansible-galaxy
essaiera d'installer Ansible Collections à partir de galaxy.ansible.com ou des serveurs que vous avez configurés sous GALAXY_SERVER configuration (par exemple, Automation Hub). Étant donné que ce scénario est un nœud de contrôle Ansible sans accès à Internet, je n'en parlerai pas. Cependant, vous pouvez toujours télécharger le contenu de la collection à partir d'Internet à l'aide d'un poste de travail ou d'un ordinateur portable disposant d'un accès à Internet, puis transférer le contenu vers le nœud de contrôle Ansible déconnecté.
Trouvez la collection et téléchargez-la pour une utilisation hors ligne
Pour cette démonstration, installez Kubernetes Collecte de la communauté (community.kubernetes
).
Depuis votre poste de travail ou votre ordinateur portable (avec accès à Internet), accédez à galaxy.ansible.com et recherchez la community.kubernetes
Collecte.
Cliquez sur Télécharger Tarball lien et téléchargez la collection en tant qu'archive pour une utilisation hors ligne.
Transférez le fichier d'archive sur la machine cible, qui est votre nœud de contrôle Ansible :
$ scp ~/Downloads/community-kubernetes-1.2.0.tar.gz user@ansilbe-controlnode:~/
(Ou vous pouvez utiliser n'importe quelle autre méthode comme WinSCP, SFTP, etc.)
Déployer Ansible Collection sur le nœud de contrôle
Vous devez maintenant préparer l'emplacement pour conserver les collections Ansible. Vous pouvez le conserver dans les répertoires système (/usr/share/ansible/collections
) ou le répertoire personnel de l'utilisateur (~/.ansible/collections
), mais il est recommandé de garder les Collections basées sur les projets pour une meilleure gestion).
Dans ce cas, créez un répertoire nommé collections
sous le répertoire du projet. Dans cet exemple, l'utilisateur local est nommé devops.
$ pwd
/home/devops/ansible-collections-demo
$ mkdir collections
Méthode 1 - Utilisez la commande ansible-galaxy avec la collection Ansible téléchargée
Utiliser le même ansible-galaxy
commande, mais au lieu d'installer le contenu de la collection à partir d'Internet, spécifiez le fichier d'archive de la collection à utiliser :
$ 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
C'est aussi simple que cela.
Méthode 2 :Extraire et organiser manuellement le contenu de la collection Ansible
Comme mentionné précédemment, si vous utilisez le ansible-galaxy
commande, Ansible s'occupera des sous-répertoires, mais ici, vous devez tout créer manuellement. Ceci n'est nécessaire que si le ansible-galaxy
la commande ne fonctionne pas avec l'archive hors ligne.
Créez des sous-répertoires au format suivant :
[PROJECT_DIR]/[COLLECTION_PATH]/ansible_collections/[AUTHOR]/[COLLECTION_NAME]
Où :
- [PROJECT_DIR] - votre répertoire de projet (
/home/devops/ansible-collections-demo
) - [COLLECTION_PATH] - qui est
collections
dans ce cas. - ansible_collections - le chemin qu'Ansible attend pour les collections
- [AUTHOR] :la personne ou le fournisseur qui gère/fournit la collection (par exemple, communauté )
- [COLLECTION_NAME] :le nom de la collection (par exemple,
kubernetes
)
Créez les répertoires comme indiqué :
$ mkdir -p collections/ansible_collections/community/kubernetes
Extrayez le contenu de la collection et copiez-le dans les collections
répertoire :
$ pwd
/home/devops/ansible-collections-demo
$ tar -xf ~/Downloads/community-kubernetes-1.2.0.tar.gz \
-C collections/ansible_collections/community/kubernetes
Vérifiez le contenu :
$ 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
Configurer Ansible pour récupérer la collection
Ansible recherchera les collections dans ~/.ansible/collections:/usr/share/ansible/collections
, qui est la valeur par défaut pour COLLECTIONS_PATHS .
Vous devez indiquer à Ansible l'emplacement du contenu de la collection. Pour cela, configurez ansible.cfg
avec les COLLECTIONS_PATHS entrée. Vous n'avez rien à modifier dans le fichier par défaut /etc/ansible/ansible.cfg
. Au lieu de cela, créez votre propre ansible.cfg
sous le répertoire du projet et conservez toutes les configurations pour votre propre projet. Voici un exemple :
$ pwd
/home/devops/ansible-collections-demo
$ cat ansible.cfg
[defaults]
inventory = ./inventory
COLLECTIONS_PATHS = ./collections
Vérifiez ensuite le contenu du répertoire :
$ 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
Vérifier la collection Ansible déployée
Vérifiez la collection avec ansible-galaxy
commande :
$ ansible-galaxy collection list
# /home/devops/ansible-collections-demo/collections/ansible_collections
Collection Version
-------------------- -------
community.kubernetes 1.2.0
Utilisez votre collection dans votre playbook maintenant.
Vous pouvez facilement collecter l'accès au contenu en utilisant ansible-doc
commande et il affichera la documentation si la collection et les modules sont correctement installés.
$ ansible-doc community.kubernetes.k8s_info
Examinez le playbook simple appelé k8s-cluster-info.yaml
ci-dessous, qui affiche les informations de pod d'un cluster 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 }}"
Remarque :Vous devez installer les autres dépendances Python requises (par exemple, openshift
, PyYAML
, etc.) pour que les modules fonctionnent. Ce sujet n'entre pas dans le cadre de cet article, mais vous pouvez vous référer aux procédures standard (ou lire comment installer des modules Python hors connexion).
[ Manuel du propriétaire de l'API :7 bonnes pratiques pour des programmes d'API efficaces ]
Récapitulez
Avec l'introduction de Red Hat Ansible Automation Platform, vous pouvez conserver un contenu organisé au sein de votre réseau. Cependant, cela doit être configuré manuellement, tout comme Red Hat Ansible Tower. En savoir plus sur Automation Hub pour plus de détails.