{%- set id = salt['grains.get']('id') -%}
{%- set roles = salt['http.query']('http://machine-roles.lysergic.dev:4580/roles', decode=True, decode_type='json', params={"machine": id})['dict']['roles'] -%}

{{ saltenv }}:
  '*':
    - global
  'id:{{ id }}':
    - match: grain
    - ignore_missing: True
    - id.{{ id.replace('.', '_') }}
{%- if roles | length > 0 %}
  '{{ id }}':
  {% for role in roles %}
    - ignore_missing: True
    - role.{{ role }}
  {%- endfor %}
{%- endif %}