GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So installieren Sie eine Ansible Collection auf einem getrennten Ansible Control Node

In diesem Tutorial zeige ich, wie und wo Ansible Content Collections in einem Ansible Control Node installiert werden, der keinen Internetzugang hat. Der Prozess ist einfach und unkompliziert, aber einige Benutzer sind mit dem Installationsort und der Konfiguration verwirrt.

Warum kein Internet?

Einige Organisationen erlauben Servern nicht, sich direkt mit dem Internet zu verbinden. Und manchmal erlauben sie keine Internetverbindung, nicht einmal über Proxyserver. Dies ist eine Standardrichtlinie und Sie haben dies möglicherweise bereits erlebt, wenn Sie mit kritischen Servern arbeiten. Und die Installation einiger Tools oder erforderlicher Dateien ist ohne Internetzugang keine leichte Aufgabe.

[ Den Lesern gefiel auch: Wie ich in Krisenzeiten und darüber hinaus von einem Red Hat-Abonnement profitiere]

Installieren von Ansible-Sammlungen aus dem Internet

Sie können Ansible Collections direkt von Ansible Galaxy mit ansible-galaxy installieren Befehl. Es ist eine unkomplizierte Aufgabe, bei der Sie nur den Sammlungsnamen und den Installationspfad angeben müssen. Die ansible-galaxy Der Befehl kümmert sich um die Erstellung von Unterverzeichnissen und das Herunterladen von Sammlungen.

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

Weitere Einzelheiten finden Sie in der Ansible-Dokumentation oder in dieser Anleitung.

Installation von Ansible Collections ohne Internet

Standardmäßig ansible-galaxy wird versuchen, Ansible Collections von galaxy.ansible.com oder den Servern zu installieren, die Sie unter GALAXY_SERVER konfiguriert haben Konfiguration (z. B. Automation Hub). Da es sich bei diesem Szenario um einen Ansible-Steuerknoten ohne Internetzugang handelt, werde ich darauf nicht eingehen. Sie können den Sammlungsinhalt jedoch weiterhin mit einer Workstation oder einem Laptop mit Internetzugang aus dem Internet herunterladen und den Inhalt dann auf den getrennten Ansible-Steuerknoten übertragen.

Suchen Sie die Sammlung und laden Sie sie zur Offline-Nutzung herunter

Installieren Sie für diese Demonstration Kubernetes Sammlung aus der Community (community.kubernetes ).

Gehen Sie von Ihrer Workstation oder Ihrem Laptop (mit Internetzugang) zu galaxy.ansible.com und suchen Sie community.kubernetes Sammlung.

Klicken Sie auf Tarball herunterladen Link und laden Sie die Sammlung als Archiv zur Offline-Nutzung herunter.

Übertragen Sie die Archivdatei auf den Zielcomputer, der Ihr Ansible-Steuerknoten ist:

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

(Oder Sie können eine andere Methode wie WinSCP, SFTP usw. verwenden.)

Stellen Sie Ansible Collection auf dem Kontrollknoten bereit

Jetzt müssen Sie den Speicherort für die Aufbewahrung von Ansible-Sammlungen vorbereiten. Sie können es in Systemverzeichnissen aufbewahren (/usr/share/ansible/collections ) oder das Home-Verzeichnis des Benutzers (~/.ansible/collections ), aber es wird empfohlen, Sammlungen basierend auf Projekten für eine bessere Verwaltung zu halten).

Erstellen Sie für diesen Fall ein Verzeichnis mit dem Namen collections unter dem Projektverzeichnis. In diesem Beispiel heißt der lokale Benutzer devops.

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

Methode 1 – Verwenden Sie den Befehl ansible-galaxy mit heruntergeladener Ansible Collection

Verwenden Sie dieselbe ansible-galaxy Befehl, aber anstatt den Sammlungsinhalt aus dem Internet zu installieren, geben Sie die zu verwendende Sammlungsarchivdatei an:

$ 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

So einfach und unkompliziert ist das.

Methode 2 – Inhalte der Ansible-Sammlung manuell extrahieren und organisieren

Wie bereits erwähnt, wenn Sie ansible-galaxy verwenden Befehl kümmert sich Ansible um Unterverzeichnisse, aber hier müssen Sie alles manuell erstellen. Dies wird nur benötigt, wenn ansible-galaxy Befehl funktioniert nicht mit dem Offline-Archiv.

Erstellen Sie Unterverzeichnisse im folgenden Format:

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

Wo:

  • [PROJECT_DIR] – Ihr Projektverzeichnis (/home/devops/ansible-collections-demo )
  • [COLLECTION_PATH] – das ist collections in diesem Fall.
  • ansible_collections – der Pfad, den Ansible für Sammlungen erwartet
  • [AUTHOR] – die Person oder der Anbieter, der die Sammlung pflegt/bereitstellt (z. B. Community )
  • [COLLECTION_NAME] – der Sammlungsname (z. B. kubernetes )

Erstellen Sie die Verzeichnisse wie gezeigt:

$ mkdir -p collections/ansible_collections/community/kubernetes

Sammlungsinhalt extrahieren und in die collections kopieren Verzeichnis:

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

Überprüfen Sie den Inhalt:

$ 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

Konfigurieren Sie Ansible, um die Sammlung aufzunehmen

Ansible sucht nach Sammlungen in ~/.ansible/collections:/usr/share/ansible/collections , was der Standardwert für COLLECTIONS_PATHS ist .

Sie müssen Ansible den Speicherort des Sammlungsinhalts mitteilen. Konfigurieren Sie dazu ansible.cfg mit den COLLECTIONS_PATHS Eintrag. Sie müssen nichts an der Standarddatei /etc/ansible/ansible.cfg bearbeiten . Erstellen Sie stattdessen Ihre eigene ansible.cfg unter dem Projektverzeichnis und behalten Sie alle Konfigurationen für Ihr eigenes Projekt bei. Hier ist ein Beispiel:

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

Prüfen Sie als Nächstes den Inhalt des Verzeichnisses:

$ 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

Überprüfen Sie die bereitgestellte Ansible-Sammlung

Überprüfen Sie die Sammlung mit ansible-galaxy Befehl:

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

Verwenden Sie jetzt Ihre Sammlung in Ihrem Playbook.

Mit ansible-doc können Sie ganz einfach Zugriff auf Inhalte sammeln Befehl und zeigt die Dokumentation an, wenn die Sammlung und die Module richtig installiert sind.

$ ansible-doc community.kubernetes.k8s_info

Sehen Sie sich das einfache Playbook namens k8s-cluster-info.yaml an unten, das die Pod-Informationen eines Kubernetes-Clusters anzeigt:

---
- 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 }}"

Hinweis :Sie müssen die anderen erforderlichen Python-Abhängigkeiten installieren (z. B. openshift , PyYAML usw.), damit die Module funktionieren. Dieses Thema ist nicht Gegenstand dieses Artikels, aber Sie können sich auf Standardverfahren beziehen (oder lesen Sie, wie Sie Python-Module offline installieren).

[ Das API-Eigentümerhandbuch:7 Best Practices effektiver API-Programme ] 

Abschluss

Mit der Einführung von Red Hat Ansible Automation Platform können Sie organisierte Inhalte in Ihrem Netzwerk aufbewahren. Dies muss jedoch wie Red Hat Ansible Tower manuell eingerichtet werden. Lesen Sie mehr über Automation Hub für Details.


Linux
  1. So installieren Sie Node.js auf Fedora 35 / Fedora 34

  2. So installieren Sie Ansible auf AlmaLinux 8

  3. So installieren Sie Ansible unter Debian 11

  4. So installieren Sie Ansible unter CentOS 7

  5. So installieren Sie NodeJs unter Ubuntu 18.04

So installieren Sie Node.js unter Debian 10

So installieren Sie Node.js unter Debian 11

So installieren Sie Node.js unter CentOS 7

So installieren Sie Node.js unter Ubuntu 14.04

So installieren Sie Ansible Server unter Ubuntu 18.04

So installieren Sie Ansible unter Linux Mint 20