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.