Normale Ansicht

Welche ansible-core-Version und welche Collections sind in welchem Ansible Execution Environment enthalten?

02. März 2026 um 06:00

Das sind ja gleich mehrere Fragen auf einmal. Doch ich denke, dass man diese gut in einem Beitrag beantworten kann.

Für die Antwort auf die Frage was Execution Environments sind, verweise ich auf die offizielle Dokumentation, da dies sonst den Umfang dieses Beitrags sprengen würde. Kurz gesagt handelt es sich dabei um Container-Images, welche unterschiedliche Versionen von ansible-core und diverse Ansible Collections enthalten.

Ich verwende für die folgenden Beispiele die Execution Environments aka Container-Images ee-minimal-rhel9 und ee-supported-rhel9 von registry.redhat.io/ansible-automation-platform-26.

Option 1: Mit Podman schnell und simpel zum Ziel

Folgender Code-Block zeigt den gesuchten Inhalt für das Minimal-Image an:

[jkastning@aap-1 ~]$ podman run --rm registry.redhat.io/ansible-automation-platform-26/ee-minimal-rhel9:latest ansible --version
ansible [core 2.16.14]
  config file = None
  configured module search path = ['/home/runner/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.11/site-packages/ansible
  ansible collection location = /home/runner/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.11.13 (main, Aug 21 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-11)] (/usr/bin/python3.11)
  jinja version = 3.1.6
  libyaml = True
[jkastning@aap-1 ~]$ podman run --rm registry.redhat.io/ansible-automation-platform-26/ee-minimal-rhel9:latest ansible-galaxy collection list
usage: ansible-galaxy [-h] [--version] [-v] TYPE ...

Perform various Role and Collection related operations.

positional arguments:
  TYPE
    collection   Manage an Ansible Galaxy collection.
    role         Manage an Ansible Galaxy role.

options:
  --version      show program's version number, config file location,
                 configured module search path, module location, executable
                 location and exit
  -h, --help     show this help message and exit
  -v, --verbose  Causes Ansible to print more debug messages. Adding multiple
                 -v will increase the verbosity, the builtin plugins currently
                 evaluate up to -vvvvvv. A reasonable level to start is -vvv,
                 connection debugging might require -vvvv. This argument may
                 be specified multiple times.
ERROR! - None of the provided paths were usable. Please specify a valid path with --collections-path 

Dieses Image enthält ansible-core in Version 2.16.14 und keinerlei Ansible Collection. Das ee-suported-rhel9 bringt im Vergleich dazu eine ganze Reihe an Collections mit:

[jkastning@aap-1 ~]$ podman run --rm registry.redhat.io/ansible-automation-platform-26/ee-supported-rhel9:latest ansible --version
ansible [core 2.16.14]
  config file = None
  configured module search path = ['/home/runner/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.11/site-packages/ansible
  ansible collection location = /home/runner/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.11.13 (main, Aug 21 2025, 00:00:00) [GCC 11.5.0 20240719 (Red Hat 11.5.0-11)] (/usr/bin/python3.11)
  jinja version = 3.1.6
  libyaml = True
[jkastning@aap-1 ~]$ podman run --rm registry.redhat.io/ansible-automation-platform-26/ee-supported-rhel9:latest ansible-galaxy collection list

# /usr/share/ansible/collections/ansible_collections
Collection                      Version     
------------------------------- ------------
amazon.aws                      9.5.1       
ansible.controller              4.7.6       
ansible.eda                     2.10.0      
ansible.hub                     1.0.1       
ansible.netcommon               8.1.0       
ansible.network                 5.0.0       
ansible.platform                2.6.20251106
ansible.posix                   2.1.0       
ansible.scm                     3.0.0       
ansible.security                5.0.0       
ansible.snmp                    3.0.0       
ansible.utils                   6.0.0       
ansible.windows                 3.2.0       
ansible.yang                    3.0.0       
arista.eos                      12.0.0      
cisco.intersight                2.2.0       
cisco.ios                       11.1.1      
cisco.iosxr                     12.0.0      
cisco.nxos                      11.0.0      
cloud.common                    5.0.0       
cloud.terraform                 4.0.0       
hashicorp.terraform             1.1.0       
hashicorp.vault                 1.0.0       
junipernetworks.junos           11.0.0      
kubernetes.core                 6.1.0       
microsoft.ad                    1.9.2       
microsoft.iis                   1.0.3       
redhat.amq_broker               2.3.4       
redhat.amq_streams              1.0.0       
redhat.data_grid                1.3.3       
redhat.eap                      1.5.7       
redhat.insights                 1.3.0       
redhat.jbcs                     1.1.2       
redhat.jws                      2.1.1       
redhat.openshift                5.0.0       
redhat.openshift_virtualization 2.2.3       
redhat.redhat_csp_download      1.2.2       
redhat.rhbk                     3.0.1       
redhat.rhel_idm                 1.15.1      
redhat.rhel_system_roles        1.95.7      
redhat.rhv                      2.4.2       
redhat.runtimes_common          1.2.2       
redhat.sap_install              1.7.1       
redhat.satellite                5.5.0       
redhat.satellite_operations     3.0.0       
redhat.sso                      2.0.0       
sap.sap_operations              2.2.0       
servicenow.itsm                 2.11.0      
splunk.es                       4.0.0       
trendmicro.deepsec              4.0.0       
vmware.vmware                   2.3.0       
vmware.vmware_rest              4.8.1

Option 2: Ansible Navigator

Alternativ kann man das Container-Image aka Execution Environment Image (eei) auch mit dem ansible-navigator untersuchen. Der Befehl ansible-navigator images --eei ee-supported-rhel9 lädt das gewünschte Image bei Bedarf herunter und öffnet einen interaktives Text-Interface, welches alle lokal vorhandenen Images auflistet. Das folgend Bild zeigt eine Ansicht von meinem Labor-PC:

Auflistung der vorhandenen Container-Images im ansible-navigator

Durch drücken der Taste ‚4‘ wird das Image ee-supported-rhel9 ausgewählt:

Auswahlmenü für das Image: ee-supported-rhel9:latest

Wählt man hier die ‚2‘ muss man sich in Geduld üben. Denn die Analyse des Images kann in der Tat etwas dauern. In diesem Fall waren es ganze 2 Minuten!

Auf Computer zu warten kann ich wirklich nicht gut leiden.

Hat man die Wartezeit überlebt, wird man mit folgender Ansicht belohnt:

Ansicht der enthaltenen Ansible Collections und der Version von ansible-core

Fazit

Dieser Beitrag hat zwei Optionen gezeigt, wie man sich die Version von ansible-core und die in einem Execution Environment Image enthaltenen Ansible Collections anzeigen lassen kann.

Ich persönlich bevorzuge Option 1, da diese deutlich schneller zu einem Ergebnis führt, während man sich bei Option 2 für mehrere Minuten gedulden muss. Diese Geduld benötigt man übrigens auch für das Image ee-minimal-rhel9, welches gar keine Collections enthält. Hier betrug die Wartezeit immerhin mehrere Sekunden.

Wie kann ich die Unixzeit einer Variablen im Forgejo Workflow zuweisen?

23. Juni 2025 um 05:00

Dies ist ein Beitrag der Sorte „Notiz an mich selbst“. Wenn sie euch ebenfalls hilft, umso besser.

Ich hatte in folgendem Workflow versucht, die aktuelle Unixzeit in einer Umgebungsvariablen zu speichern, um sie in verschiedenen Schritten des Workflows wiederverwenden zu können. Mein Test-Workflow sah wie folgt aus:

name: test

on:
  push:
    branches: workflow_tests

env:
  UNIXTIME: $(date +%s)

jobs:
  test:
    runs-on: podman
    steps:
      - run: echo Debug output
      - run: echo Current unix time is ${{ env.UNIXTIME }}
      - run: sleep 10
      - run: echo Current unix time is ${{ env.UNIXTIME }}

Leider entsprach die Ausgabe nicht meiner Erwartung.

  • Ergebnis der ersten Ausgabe: 1747991617
  • Ergebnis der zweiten Ausgabe: 1747991629

In https://matrix.to/#/#codeberg.org:matrix.org erklärte mir jacksonchen666, dass $(date +%s) vermutlich als String an UNIXTIME übergeben wird. Die Auswertung durch die Shell findet dann erst im jeweiligen Workflow-Schritt statt. Ob das stimmt, weiß ich nicht, es klingt jedoch plausibel.

Christoph aus dem gleichen Matrix-Kanal schlug folgende Lösung vor:

echo "MY_VAR=foo" >> $GITHUB_ENV

Hier wird in der Shell der Wert foo der Variablen MY_VAR zugewiesen und diese anschließend in der Workflow-Umgebung verfügbar gemacht. Für mein Beispiel sieht das nun so aus:

name: test

on:
  push:
    branches: workflow_tests

jobs:
  test:
    runs-on: podman
    steps:
      - run: echo Debug output
      - run: echo "UNIXTIME=$(date +%s)" >> $GITHUB_ENV
      - run: echo Current unix time is ${UNIXTIME}
      - run: sleep 10
      - run: echo Current unix time is ${UNIXTIME}

Und schon stimmt die Ausgabe der UNIXTIME in beiden Schritten überein. Ich habe wieder was dazu gelernt. :-)

Wie kann ich mit GNU sed innerhalb eines Verzeichnisses rekursiv alle vorkommen eines Strings ersetzen?

19. April 2025 um 15:00

Verwende find mit sed für die rekursive Textersetzung in allen Dateien:

find . -type f -exec sed -i 's/foo/bar/g' {} +
  • -type f: Bearbeitet nur Dateien (keine Verzeichnisse)
  • -exec ... +: Führt sed effizient auf mehreren Dateien gleichzeitig aus
  • sed -i: Überschreibt Dateien direkt („in-place“).

Die Antwort auf diese Frage lieferte perplexity.ai.

Wie füge ich einer KVM/libvirt VM eine serielle Konsole hinzu?

07. April 2025 um 06:00

Ich beantworte hier meine eigene Frage, damit ich zukünftig nicht so lange im Internet nach der Anwort suchen muss.

Mein Ziel ist es, eine virtuelle Maschine mit dem Kommando virt-install zu installieren, zu welcher ich mich anschließend mit dem Kommando virsh console <domain> verbinden kann, um z.B. das Netzwerk konfigurieren zu können.

Dies geht mit folgendem Befehl:

$ virt-install --connect qemu:///system --name vm1 --memory 4096 --vcpus 2 --disk VirtualMachines/vm1.qcow2,size=40 --os-variant rhel9.5 --cdrom iso/rhel-9.5-x86_64-dvd-ks.iso --network network=lab1,model=virtio --console pty,target_type=virtio

Der entscheidende Teil ist dabei --console pty,target_type=virtio. Der folgende Codeblock zeigt nun noch die erfolgreiche Verbindung zur seriellen Konsole der VM:

$ virsh -c qemu:///system console vm1 --safe
Connected to domain 'vm1'
Escape character is ^] (Ctrl + ])

localhost login:

Fertig.

Wie kann ich das MQTT-Passwort in Home Assistant auslesen?

24. Februar 2025 um 06:00

Das MQTT-Passwort lässt sich auf der Konsole des Home Assistant Systems in der Datei /mnt/data/supervisor/homeassistant/.storage/core.config_entries finden. Der entsprechende Eintrag sieht bei mir wie folgt aus:

{
        "created_at": "1970-01-01T00:00:00+00:00",
        "data": {
          "birth_message": {
            "payload": "online",
            "qos": 0,
            "retain": false,
            "topic": "homeassistant/status"
          },
          "broker": "localhost",
          "discovery": true,
          "discovery_prefix": "homeassistant",
          "password": "hierstehtmeinmegalangesundkomplexespasswort",
          "port": 1883,
          "username": "homeassistant",
          "will_message": {
            "payload": "offline",
            "qos": 0,
            "retain": false,
            "topic": "homeassistant/status"
          }
},

Jetzt steht das Passwort in meinem Passwort-Manager KeePassXC und ich werde auf diesen Beitrag hoffentlich nicht so schnell zurückgreifen müssen.

Weitere Links zum Thema

Wie kann ich die Dokumentation von docs.redhat.com am einfachsten als PDF herunterladen?

18. November 2024 um 05:00

Unter ‚http://docs.redhat.com‚ findet man gesammelt und sortiert Red Hats Dokumentation, z.B. zu Ansible Automation Platform, OpenShift, RHEL, RHV, Satellite, etc.

Neben der Online-Version im Single- und Multi-Page-Format kann man die einzelnen Texte auch als PDF herunterladen. Dies manuell zu tun, ist allerdings mühselig. Deutlich leichter geht es mit dem PDF Document Downloader von Kazuo Moriwaka. Es handelt sich dabei um ein Bash-Skript, bestehend aus awk, curl, grep, und parallel, welches als Argument die Basis-URL für eine Produktkategorie übernimmt und anschließend alle PDF-Dateien ermittelt und herunterlädt.

Klingt gut? So bekommt ihr das Skript:

  1. Ladet euch die aktuelle Version als Zip-Datei aus dem Gist herunter
  2. Entpackt das Zip-Archiv in ein Verzeichnis eurer Wahl, z.B. nach ~/bin/
  3. Macht das Skript ausführbar: chmod u+x ~/bin/fetchdoc.sh

Folgender Code-Block zeigt einige Beispiele, mit denen ich mir einen Teil der Dokumentation auf mein Laptop gezogen habe:

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/10-beta

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_ansible_automation_platform/2.5

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_satellite/6.15

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_satellite/6.16

$ ~/bin/fetchdoc.sh https://docs.redhat.com/en/documentation/red_hat_virtualization/4.4

Thank you Kazuo Moriwaka for this awesome little helper!

Warum beschäftigst du dich mit IPv6?

29. Januar 2024 um 06:00

Das ist eine gute Frage. Hat man „IPv6… Kein Anschluss unter dieser Nummer“ gelesen, kann man mich sicher fragen, warum ich mir das antue, wo doch überall Stolpersteine und Probleme lauern. Und ich kenne einige Personen, die sich lieber eine Axt ins Bein schlagen, eine Nadel unter die Fingernägel schieben oder Broccoli essen würden, statt sich mit IPv6 zu beschäftigen.

Die Antwort ist ganz einfach. Ich tue dies, weil ich es kann, Spaß daran habe und IPv4-Adressen knapper und teurer werden.

Möchte man Dienste im Internet anbieten, benötigt man IP-Adressen. Üblicherweise bekommt man zu den gängigen Angeboten von Virtual Private Server, Dedicated Server, etc. eine IPv4-Adresse und ein /64-IPv6-Netzsegment kostenlos. Zusätzliche IPv4-Adressen kosten Stand heute zwischen 2,00 € und 5,00 € pro Monat, wobei häufig noch eine saftige Einrichtungsgebühr hinzukommt. Im Abschnitt Preisübersicht findet ihr das Ergebnis einer kurzen Internetrecherche.

Da ich einen Proxmox-Host und ein /64-IPv6-Netzsegment für Spiel-, Spaß- und Laborumgebungen besitze, möchte ich mich gern damit auseinandersetzen. Und sei es nur, um zu lernen, wo es noch überall klemmt und mit welchen Workarounds man die existierenden Klippen umschiffen kann. Wundert euch also nicht, wenn es in Zukunft noch den ein oder anderen Artikel zu diesem Thema gibt.

Preisübersicht

❌