Skip to content

Instantly share code, notes, and snippets.

@gtmanfred
Last active April 19, 2019 17:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gtmanfred/35ed8a802d37f5c89a1deaa340a07694 to your computer and use it in GitHub Desktop.
Save gtmanfred/35ed8a802d37f5c89a1deaa340a07694 to your computer and use it in GitHub Desktop.
example of using match.filter_by to assign different envs default variables
root@8470705f6b2a:/srv/salt# tail -c +0 /srv/salt/*.* /srv/salt/data/*.yml /etc/salt/grains
==> /srv/salt/data.jinja <==
{%- import_yaml 'data/default.yml' as defaults %}
{%- import_yaml 'data/prod.yml' as prod %}
{%- import_yaml 'data/test.yml' as test %}
{%- import_yaml 'data/dev.yml' as dev %}
{%- set data = salt.slsutil.update(salt.match.filter_by({
'release:dev': dev,
'release:test': test,
'release:prod': prod,
}, tgt_type='grain', merge=defaults, merge_lists=True), salt.config.get('data', {}), merge_lists=true) %}
==> /srv/salt/prod.yml <==
postgres:
user: prod
database: mydb
host: db.prod.gtmanfred.com
redis:
host: redis.prod.gtmanfred.com
domains:
- www.gtmanfred.com:
repo: git://github.com/gtmanfred/www.git
branch: master
- blog.gtmanfred.com:
repo: git://github.com/gtmanfred/blog.git
branch: master
==> /srv/salt/test.sls <==
{%- from 'data.jinja' import data %}
{%- do salt.log.error('\n%s'|format(data|yaml(false))) %}
==> /srv/salt/data/default.yml <==
postgres:
user: myuser
database: mydb
host: db.prod.gtmanfred.com
redis:
host: redis.prod.gtmanfred.com
domains:
- www.gtmanfred.com:
repo: git://github.com/gtmanfred/www.git
branch: master
- blog.gtmanfred.com:
repo: git://github.com/gtmanfred/blog.git
branch: master
==> /srv/salt/data/dev.yml <==
postgres:
host: db.dev.gtmanfred.com
redis:
host: redis.dev.gtmanfred.com
domains:
- www-dev.gtmanfred.com:
branch: dev
- blog-dev.gtmanfred.com:
branch: dev
==> /srv/salt/data/prod.yml <==
# This is a place holder file
==> /srv/salt/data/test.yml <==
postgres:
host: db.test.gtmanfred.com
redis:
host: redis.test.gtmanfred.com
domains:
- www-test.gtmanfred.com:
branch: test
- blog-test.gtmanfred.com:
branch: test
==> /etc/salt/grains <==
release: test
data:
redis:
host: nope
root@8470705f6b2a:/srv/salt# salt-call cp.get_template salt://test.sls /dev/null
[ERROR ]
domains:
- www.gtmanfred.com:
branch: master
repo: git://github.com/gtmanfred/www.git
- blog.gtmanfred.com:
branch: master
repo: git://github.com/gtmanfred/blog.git
- www-test.gtmanfred.com:
branch: test
- blog-test.gtmanfred.com:
branch: test
postgres:
database: mydb
host: db.test.gtmanfred.com
user: myuser
redis:
host: nope
local:
/dev/null
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment