Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hey,

ich stehe gerade vor einem Problem in Ansible (bin absoluter Neuling darin).
Ich möchte die IP Adresse des targets zurückbekommen, diese in eine Variable packen und die Variable dann später in eine Datei einfügen.
Jedoch bekomme ich immer nur Fehlermedlungen oder mehr als nur die IP zurück.
 

Das aktuelle Script sieht so aus:

--
- hosts: target
  become: true
  gather_facts: true
  tasks:
    - name: getIP
      debug: var=ansible_eth0.ipv4.address
      register: result

    - name: print
      lineinfile:
        destfile: /home/test/test.txt
        line: "{{ result }}"

 

Ich habe bereits versucht die Variable result zu splitten, in etwa so (Erst mal versucht die grundlegend zu splitten um danach zu schauen welche Parameter ich angeben muss, damit nur die IP genommen wird):

 

- name: print
      lineinfile:
        destfile: /home/test/test.txt
        line: "{{ result.split() }}"

 

Doch hierbei kommt dann plötzlich die Fehlermeldung, dass die Variable result  nicht existiert....
Finde nirgendswo eine Lösung, habt ihr vielleicht eine Idee?

Bist du sicher, dass das "eth0"-Interface  vom remote Host verwendet wird?

Ansonsten: Einen Schritt nach dem anderen ;) Versuch erstmal, die remote IP überhaupt separat auszulesen, bevor du sie in eine Variable packst bzw. in eine Text-Datei schreiben willst.

Hier zB sind unterschiedliche Methoden aufgeführt: https://www.middlewareinventory.com/blog/ansible-get-ip-address/

Eine Interface-spezifische (die du auch verwendest):
 

- hosts: all
  gather_facts: yes
  tasks:
    # Getting the IP address of enp0s3 interface
    - debug: var=ansible_enp0s3.ipv4.address
    # Getting the IP address of eth0 interface
    - debug: var=ansible_eth0.ipv4.address

-> für 2 spezifische remote Interfaces als Beispiel

und dann noch unspezifisch, ausgelesen aus den sog. Ansible facts:

- hosts: all
  tasks:
    - debug: var=hostvars[inventory_hostname]['ansible_default_ipv4']['address']
    - debug: var=hostvars[inventory_hostname]['ansible_default_ipv6']['address']

Das "debug" dient dazu, einfach nur statements auszugeben, wenn sie ausgeführt werden.

Versuch das vielleicht erstmal mit einem normalen Ansible run, ohne Variablen etc. - was das jew. ausgeben sollte, ist auf der Seite oben ebenfalls mit angegeben (nämlich eben nur die IP-Adresse).
Wenn das funktioniert, dann kann man weiter überlegen, wie man das in eine Variable schmeißt + in eine Textdatei schreibt.

Danke für die Antwort!

Nur die IP per debug auszugeben hatte ich bereits geschafft, mit dem setup Modul.
Damit konnte ich es jedoch nicht in eine Variable speichern.
Daraufhin bin ich auf dei Seite gestoßen die auch du verlinkt hast, allerdings wird bei mir damit nicht NUR die IP adresse ausgegeben, bzw in der Variable gespeichert, sondern der ganze Rest der davor steht ebenfalls... 😕

Und ja, bin mir sicher, dass es sich um eth0 handelt :)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.