Ansible: získání IP adresy konkrétní síťovky z parametru

Ahoj,

porad nemuzu na to prijit. Mam definovany vars.yml pro konkretniho hosta, kde definuju u nektere sluzby, na jake sitovce ma bezet:

sluzba:
 ipv4: "interface"

Pokud bych tam definoval IP adresu, mam to vyresene. Ale ja bych tam rad definoval konkretni sitovku, nebot prepsani adresy na siti se tim projevi i prepsanim v konfiguraci sluzby (teoreticky). Jde to nejak? Bohuzel neco takeho ansible neumi:

{{ ansible_{{ sluzba['ipv4'] }}.ipv4.address }}

Porad se s googlem nemuzu trefit, abych dokazal tu {{ sluzba['ipv4'] }} pouzit. Zkousene ruzne set_facts, hostvars. Nevadila by mi ani iterace pres vsechny sitovky, kdyby to pak dokazalo zase z toho vzit ip adresu do nejake promenne.
Je mozne, ze na to jdu ne uplne vhodnym zpusobem, ale stale jsem s ansible na zacatku.

Diky.
« Poslední změna: 27. 03. 2019, 11:15:39 od Petr Krčmář »


Re:Ansible: získání IP adresy konkrétní síťovky z parametru
« Odpověď #1 kdy: 27. 03. 2019, 14:39:49 »
Umí, ale musíte použít použijte magické proměnné.

Všechny proměnné má Ansible uložené v dictionary hostvars a odtamtud je Jinja používá.

Zkuste něco na způsob:

Kód: [Vybrat]
{{ hostvars['ansible_' + sluzba['ipv4']]['ipv4']['address'] }}
Případně delší a čitelnější verze:

Kód: [Vybrat]
- setfact:
      my_interface:  '{{ hostvars['ansible_'+sluzba['ipv4'] }}'
- debug:
      var: my_interface


Re:Ansible: získání IP adresy konkrétní síťovky z parametru
« Odpověď #2 kdy: 28. 03. 2019, 11:00:19 »
Diky, takhle upresneny ten hostvars by mi mel jiz stacit na nalezeni vhodne formulace.

Re:Ansible: získání IP adresy konkrétní síťovky z parametru
« Odpověď #3 kdy: 28. 03. 2019, 17:22:17 »
Tak ne, jeste mi to nevychazi

Kód: [Vybrat]
ok: [FQDN] => {
    "sluzbaip": {
        "active": true,
        "device": "DEVICE",
        "ipv4": {
            "address": "X.X.X.X",
            "broadcast": "global",
            "netmask": "255.255.255.0",
            "network": "NETWORK"
        },
    }
}

TASK [debug] *******************************************************************************************************************************************************
ok: [fqdn] => {
    "X.X.X.X": "VARIABLE IS NOT DEFINED!"
}

Kód: [Vybrat]
  - set_fact:
     sluzbaip: "{{ hostvars[inventory_hostname]['ansible_' + sluzba['ipv4']] }}"
  - debug:
     var: sluzbaip

  - debug:
     var: "{{ sluzbaip.ipv4.address }}"

Pokud do set_fact pridam tu ['ipv4']['address'], tak to konci na undefined variable ...has no attribute 'ipv4'...