[Salt-fr] Interprétation dictionnaire variable grains

Simon RECHER simon at recher.fr
Jeu 4 Juil 09:59:31 CEST 2019


Bonjour à tous,


Depuis l'upgrade de salt en version 2019.2.0, je remarque que les 
variables récupérées dans les grains sont interprétées.

Exemple :



dans les grains du minion :

interfaces:
   eth1:
     ip: 192.168.1.1
     netmask: 255.255.255.0
     mac_address: xx:xx:xx:xx:xx:xx
   eth2:
     ip: 192.168.2.1
     netmask: 255.255.255.0
     mac_address: yy:yy:yy:yy:yy:yy



dans mon sls

/etc/udev/rules.d/70-persistent-net.rules:
   file.managed:
     - user : root
     - group: root
     - mode: '0644'
     - source: salt://files/udev/70-persistent-net.rules
     - backup: minion
     - template: jinja
     - defaults:
       ifaces: {{ grains.get('interfaces') }}

et dans le template

{%- for iface in ifaces %}
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="{{ 
ifaces[net]['mac_address'].lower() }}", ATTR{type}=="1", KERNEL=="eth*", 
NAME="{{ iface }}"
{%- endfor %}



Depuis la migration le SLS une fois compilé par le minion il ressemble à

/etc/udev/rules.d/70-persistent-net.rules:
   file.managed:
     - user : root
     - group: root
     - mode: '0644'
     - source: salt://files/udev/70-persistent-net.rules
     - backup: minion
     - template: jinja
     - defaults:
       ifaces: [(u'eth1',  { u'ip' : u'192.168.1.1' , u'netmask' : 
u'255.255.255.0' , u'mac_address' : u'xx:xx:xx:xx:xx:xx' }), ( u'eth2' 
:  { u'ip' : u'192.168.2.1', u'netmask' : u'255.255.255.0', 
u'mac_address' : u'yy:yy:yy:yy:yy:y' })]


et du coup il aime pas la valeur de iface car il y a un ":"


il ne semble donc plus possible de passer un dictionnaire a un template.

Connaissez-vous un moyen pour passer un dictionnaire en provenance d'une 
grains a un template ?
Aller chercher la valeur du grains dans le template directement ? est-ce 
possible ?

Saltement

--

Simon




Plus d'informations sur la liste de diffusion Salt-fr