Size: a a a

2020 March 29

L

LightVik in Saltstack
Roman
обычно нет смысла "рисовать" списки и прочие структуры с помощью Jinja если у вас список или надо передать словарь как переменную в context то  надженее использовать tojson, это кстати кастомный фильтр Солтовый, в Jinja есть аналогичный json
я просто сделал pillars в таком виде
hosts:
 present:
   '127.0.0.1':
     - 'localhost'
     - 'localhost.localdomain'
     - 'localhost4'
     - 'localhost4.localdomain4'
 absent:
   '::1':
     - 'localhost6'
     - 'localhost6.localdomain6'
или неправильно?
источник

L

LightVik in Saltstack
state.show_sls отвечает также -
   - The 'names' argument in state 'sls/config/centos/8/hosts-::1-absent' in SLS 'sls/config/centos/8/hosts' needs to be formed as a list
источник

R

Roman in Saltstack
     {% for hostname in salt['pillar.get']('hosts:present:'~ip)|tojson %}
     - "{{hostname}}
     {% endfor %}

я разве такой пример дал??
конечно оно не работает, потому что вы сделал совершенно не то, что я предлагал.
источник

L

LightVik in Saltstack
{% for ip in salt['pillar.keys']('hosts:absent') %}
{{sls}}-{{ip}}-absent:
 host.absent:
   - ip: '{{ip}}'
   - names: {{salt['pillar.get']('hosts:present:'~ip)|tojson}}
{% endfor %}
так?
источник

R

Roman in Saltstack
если без переменной дополнительной, то да
источник

L

LightVik in Saltstack
та же история
источник

L

LightVik in Saltstack
думаю проблема тут ~ip
источник

R

Roman in Saltstack
попробуйте
{{ pillar.hosts.present[ip]|tojson }}
источник

L

LightVik in Saltstack
- names: {{ pillar.hosts.present[ip])|tojson }} ?
источник

L

LightVik in Saltstack
failed: Jinja syntax error: unexpected ')'; line 1
источник

L

LightVik in Saltstack
failed: Jinja syntax error: unexpected ')'; line 16
источник

L

LightVik in Saltstack
а да там скобка
источник

L

LightVik in Saltstack
Jinja error: Object of type 'StrictUndefined' is not JSON serializable
без tojson
'dict object' has no attribute '::1'
источник

R

Roman in Saltstack
LightVik
а да там скобка
точно забыл скобку удалить
источник

R

Roman in Saltstack
LightVik
Jinja error: Object of type 'StrictUndefined' is not JSON serializable
без tojson
'dict object' has no attribute '::1'
ну тут уже возникает вопрос к структуре данных
источник

L

LightVik in Saltstack
hosts:
 present:
   '127.0.0.1':
     - 'localhost'
     - 'localhost.localdomain'
     - 'localhost4'
     - 'localhost4.localdomain4'
 absent:
   '::1':
     - 'localhost6'
     - 'localhost6.localdomain6'
источник

L

LightVik in Saltstack
что-то не то или не так?
источник

L

LightVik in Saltstack
просто мысль была сделать 2 стейта и для каждого ip свой лист хостов
источник

L

LightVik in Saltstack
огромное спасибо за помощь, это таки заработало так:
{% for ip in salt['pillar.keys']('hosts:absent') %}
"{{sls}}-{{ip}}-absent":
 host.absent:
   - ip: "{{ip}}"
   - names: {{ pillar.hosts.absent[ip] }}
{% endfor %}
источник

R

Roman in Saltstack
LightVik
огромное спасибо за помощь, это таки заработало так:
{% for ip in salt['pillar.keys']('hosts:absent') %}
"{{sls}}-{{ip}}-absent":
 host.absent:
   - ip: "{{ip}}"
   - names: {{ pillar.hosts.absent[ip] }}
{% endfor %}
какая версия солта?
источник