GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer une collection Ansible sur un nœud de contrôle Ansible déconnecté

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.


Linux
  1. Comment installer Node.js sur Fedora 35 / Fedora 34

  2. Comment installer Ansible sur AlmaLinux 8

  3. Comment installer Ansible sur Debian 11

  4. Comment installer Ansible sur CentOS 8

  5. Comment installer NodeJs sur Ubuntu 18.04

Comment installer Node.js sur Debian 10

Comment installer Node.js sur Debian 11

Comment installer Node.js sur CentOS 7

Comment installer Node.js sur Ubuntu 14.04

Comment installer Ansible Server sur Ubuntu 18.04

Comment installer Ansible sur Linux Mint 20