Jinja ansible ixgbe Module abfragen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
pluto21
User
Beiträge: 1
Registriert: Donnerstag 10. November 2016, 13:51

Moin,

Ich würde gerne über die Ansible facts herausfinden, welche interface das Modul ixgbe haben.
Dafür möchte ich durch das Ansible array ansible_interfaces durchgehen um die Namen aller Interface herauszufinden. Anschließend soll das array ansible_interfacename durchgegangen werden in denen das Modul steht.

Ich habe bereits folgenden Code mir erarbeittet:
Hello all.



I want to find all interfaces which have the module ixgbe.

Therefor i want to use the ansible facts.

In the facts i have a list of all the interfaces as an array in the variable ansible_interfaces. Now i want to use the name of this interfaces with an "ansible_" before. Than they have to look in the module whre ixgbe is defined or not defined. So for the eth0 interface it should show me the output of ansible_eth["module"]. I already have the following code:


{% for i in ansible_interfaces %}

{% set x = 'ansible_%s' |format (i) |replace ("-", "_")%} Das replace wird gebraucht weil es unter ansible_interfaces variablen mit - gibt die später mit eniem _ verwendet werden.

{% if [x["module"]] is defined %}

{{x}}

{{[(x["module"])]}}

{{(ansible_eth0["module"])}}

{%endif%}

{% endfor %}



Daraus bekomme ich diesen Output:



ansible_br_config
[Undefined]
ixgbe
ansible_eth5
[Undefined]
ixgbe
ansible_eth4
[Undefined]
ixgbe
ansible_eth3
[Undefined]
ixgbe
ansible_eth2
[Undefined]
ixgbe
ansible_eth1
[Undefined]
ixgbe
ansible_eth0
[Undefined]
ixgbe

Ich hoffe ihr versteht was ich meine und könnt mir helfen. Vielen dank schon mal im vorraus.
BlackJack

@pluto21: Also ich habe nicht verstanden worum es geht. Aber ``{% if [x["module"]] is defined %}`` ist zum Beispiel definitiv nicht das was Du willst, denn diese Bedingung ist *immer* wahr, denn egal was Du in die Liste steckst die da nach dem ``if`` steht, die Liste selber ist natürlich ein definierter Wert:

Code: Alles auswählen

In [6]: t = jinja2.Template('{% if [parrot] is defined  %}Hello{% endif %}')

In [7]: t.render()
Out[7]: u'Hello'
`parrot` ist offensichtlich nicht definiert. Aber `parrot` wird von ``is defined`` auch gar nicht getestet, sondern die Liste in der der undefinierte Wert steckt.
Antworten