Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    mit i-doit daten ansible dynamic inventory erstellen

    Scheduled Pinned Locked Moved Allgemein
    3 Posts 3 Posters 1.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • E Offline
      emrehayta
      last edited by

      Hallo,

      ich möchte alle Hosts im i-doit als Dynamic Inventory im AWX Ansible verwenden. Möchte dazu die API verwenden. Hat das jemand schon umgesetzt? Leider findet man im Netz nicht viel dazu..

      Danke schonmal,

      LG
      Emre

      ? 1 Reply Last reply Reply Quote 0
      • ? Offline
        A Former User @emrehayta
        last edited by

        @emrehayta
        Hallo,

        wir haben das bei uns im Einsatz, allerdings funktioniert das seit einem Update nicht mehr 🙂 -> https://community.i-doit.com/topic/3819/api-abfrage-der-reports-nicht-mehr-möglich

        Sollte die API Abfrage für "cmdb.reports.read" noch für Euch funktionieren, würde ich das als Lösungsweg anbieten.
        Zwar können auch die Objekte direkt abgefragt werden, allerdings ist das dann zu langsam. Die Report Abfrage ist wesentlich schneller.

        Die Umsetzung als Python Code habe ich mal als Gist hier abgelegt: https://gist.github.com/steschuser/617afba17127d325eb303617f3bd2f0a

        Grüße

        1 Reply Last reply Reply Quote 0
        • L Offline
          lewando
          last edited by

          @emrehayta
          Ich würde dir empfehlen dies nicht über die API sondern über einen dynamic Report zu machen. Die dynamischen Reports generieren dir unter anderem einem XML Report mit den Feldern, welche bei der Erstellung des Reports angegeben wurden. Basierend auf diesem XML Report musst du dann nur die Daten, die du wirklich benötigst in JSON Notation speichern und kannst diese anschließend direkt als Inventory in AWX nutzen.

          Ein Vorteil bei der Nutzung von dynamischen Reports ist, dass du diese via http/s beziehen kannst, es ist also kein API Aufruf über I-Doit notwendig, sondern es reicht aus die ID des Reports zu kennen. Wie @RandomUser jedoch bereits richtig angedeutet hat, ist ein Zwischenschritt notwendig um die Reports für Ansible aufzubereiten. (Hier spielt es jedoch keine Rolle ob du das via python, php, shell etc. machst)

          Die Einbindung der Reports in AWX kann dann über ein custom inventory Skript, direkt in AWX realisiert werden.

          Beispiel wie das aussehen könnte:

          {
              "_meta": {
                  "hostvars": {
                      "HOSTNAME": {
                          "ansible_host": "IP",
                          "idoit": {
                              "id": "ObjectID",
                              "ignore": false,
                              "network": {
                                  "hostname": "HOSTNAME",
                                  "ipaddr": "IP"
                              },
                              "title": "HOSTNAME"
                          }
                      },
          
                      [...]
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post