Issues merging salt pillars

10 views
Skip to first unread message

hut7no

unread,
Apr 15, 2021, 2:38:13 AM4/15/21
to qubes...@googlegroups.com
Hi guys!
I am having some trouble merging some salt pillars, and was wondering if anyone here has experience with this.
I have some default settings in a yaml file, and am trying to overwrite values based on vm types.
I get the wanted behaviour from running something like "qubesctl --show-output --targets dom0 defaults.merge '{a: {b: 1.1, c: 2.1}}' '{a: {b: 1.2}}'" from the terminal:
--------------------------------------------------
a:
b:
- 1.2
c:
- 2.1
--------------------------------------------------
(b is overwritten, but c remains untouched)
When using slsutil.renderer on the map.jinja, the whole list is replaced instead, leaving only completely untouched lists and new values:
--------------------------------------------------
dvm:
vcpus:
- 2
disp:
vcpus:
- 2
template:
source:
- d10m
include_in_backups:
- True
--------------------------------------------------
default_prefs.yaml:
--------------------------------------------------
template:
- source: d10m
- include_in_backups: True
dvm:
- netvm: none
- provides_network: False
- klass: AppVM
- template_for_dispvms: True
- default_dispvm: none
- default_user: user
- vcpus: 1
- memory: 300
- maxmem: 4096
- kernel: 5.4.107-1.fc25
- kernelopts: nopat apparmor=1 security=apparmor
- virt_mode: pvh
- label: gray
- include_in_backups: True
disp:
- netvm: none
- klass: DispVM
- default_dispvm: none
- default_user: user
- vcpus: 1
- memory: 300
- maxmem: 4096
- kernel: 5.4.107-1.fc25
- kernelopts: nopat apparmor=1 security=apparmor
- virt_mode: pvh
- label: black
- include_in_backups: True
--------------------------------------------------
map.jinja:
--------------------------------------------------
{% import_yaml '/srv/salt/user_pillar/base/vm_prefs/templates/default_prefs.yaml' as default_settings %}

{#{% if grains['id'].endswith('med') %}#}
# what makes the type different from default
{%- load_yaml as type_diff %}
dvm:
- vcpus: 2
disp:
- vcpus: 2
{% endload %}
{#{% endif %}#}
{% set merged = salt['defaults.merge'](default_settings,type_diff) %}
{{ merged }}
--------------------------------------------------
I noticed that some functions(defaults.update) and arguments(merge_lists,in_place) are not available for the installed salt version, do I need those ?
Reply all
Reply to author
Forward
0 new messages