|
- {%- from "salt/map.jinja" import master with context %}
- {%- if master.enabled %}
-
- include:
- - git.client
- - salt.master.service
-
- {%- if master.system is defined %}
-
- salt_env_{{ master.system.environment }}_dirs_obsolete:
- file.directory:
- - names:
- - /srv/salt/env/{{ master.system.environment }}/_modules
- - /srv/salt/env/{{ master.system.environment }}/_states
- - /srv/salt/env/{{ master.system.environment }}/_grains
- - /srv/salt/env/{{ master.system.environment }}
- - makedirs: True
-
- {%- for grain_name, grain in master.system.get('grain', {}).iteritems() %}
-
- {%- if grain.source == 'git' %}
-
- salt_master_{{ master.system.environment }}_{{ grain_name }}_grain_source:
- git.latest:
- - name: {{ grain.address }}
- - target: /srv/salt/env/{{ master.system.environment }}/_extra/grain_{{ grain_name }}
- - rev: {{ grain.revision }}
- - require:
- - file: salt_env_{{ master.system.environment }}_dirs
- - pkg: git_packages
-
- /srv/salt/env/{{ master.system.environment }}/_grains/{{ grain_name }}.py:
- file.symlink:
- - target: /srv/salt/env/{{ master.system.environment }}/_extra/grain_{{ grain_name }}/{{ grain_name }}.py
- - require:
- - git: salt_master_{{ master.system.environment }}_{{ grain_name }}_grain_source
-
- {%- endif %}
-
- {%- endfor %}
-
- {%- for state_name, state in master.system.get('state', {}).iteritems() %}
-
- {%- if state.source == 'git' %}
-
- salt_master_{{ master.system.environment }}_{{ state_name }}_state_source:
- git.latest:
- - name: {{ state.address }}
- - target: /srv/salt/env/{{ master.system.environment }}/_extra/state_{{ state_name }}
- - rev: {{ state.revision }}
- - require:
- - file: salt_env_{{ master.system.environment }}_dirs
- - pkg: git_packages
-
- /srv/salt/env/{{ master.system.environment }}/_modules/{{ state_name }}.py:
- file.symlink:
- - target: /srv/salt/env/{{ master.system.environment }}/_extra/state_{{ state_name }}/modules/{{ state_name }}.py
- - require:
- - git: salt_master_{{ master.system.environment }}_{{ state_name }}_state_source
-
- /srv/salt/env/{{ master.system.environment }}/_states/{{ state_name }}.py:
- file.symlink:
- - target: /srv/salt/env/{{ master.system.environment }}/_extra/state_{{ state_name }}/states/{{ state_name }}.py
- - require:
- - git: salt_master_{{ master.system.environment }}_{{ state_name }}_state_source
-
- {%- endif %}
-
- {%- endfor %}
-
- {%- for formula_name, formula in master.system.get('formula', {}).iteritems() %}
-
- {%- if formula.source == 'git' %}
-
- salt_master_{{ master.system.environment }}_{{ formula_name }}_formula_source:
- git.latest:
- - name: {{ formula.address }}
- - target: /srv/salt/env/{{ master.system.environment }}/{{ formula_name }}
- - rev: {{ formula.revision }}
- - require:
- - file: salt_env_{{ master.system.environment }}_dirs
- - pkg: git_packages
-
- {%- endif %}
-
- {%- endfor %}
-
- {%- if master.system.returners is defined %}
-
- salt_master_{{ master.system.environment }}_returners:
- git.latest:
- - name: {{ master.system.returners.address }}
- - target: /srv/salt/env/{{ master.system.environment }}/_returners
- - rev: {{ master.system.returners.revision }}
- - require:
- - file: salt_env_{{ master.system.environment }}_dirs
- - pkg: git_packages
-
- {%- endif %}
-
- {%- endif %}
-
- {# Start new #}
-
- {%- for environment_name, environment in master.get('environment', {}).iteritems() %}
-
- {%- if master.base_environment == environment_name %}
-
- salt_env_{{ environment_name }}_pre_dirs:
- file.directory:
- - names:
- - /usr/share/salt-formulas/env/_modules
- - /usr/share/salt-formulas/env/_states
- - /usr/share/salt-formulas/env/_grains
- - /usr/share/salt-formulas/env/_formulas
- - makedirs: True
-
- salt_env_{{ environment_name }}_dirs:
- file.symlink:
- - name: /srv/salt/env/{{ environment_name }}
- - target: /usr/share/salt-formulas/env
- - require:
- - file: salt_env_{{ environment_name }}_pre_dirs
-
- {%- else %}
-
- salt_env_{{ environment_name }}_dirs:
- file.directory:
- - names:
- - /srv/salt/env/{{ environment_name }}/_modules
- - /srv/salt/env/{{ environment_name }}/_states
- - /srv/salt/env/{{ environment_name }}/_grains
- - /srv/salt/env/{{ environment_name }}/_formulas
- - makedirs: True
-
- {%- endif %}
-
- {%- set _formula_pkgs = [] %}
- {%- set _formula_pkgs_with_version = [] %}
- {%- for formula_name, formula in environment.get('formula', {}).iteritems() %}
- {%- if formula.source == 'pkg' %}
- {%- if formula.version is defined %}
- {%- do _formula_pkgs_with_version.append(formula) %}
- {%- else %}
- {%- do _formula_pkgs.append(formula.name) %}
- {%- endif %}
- {%- endif %}
- {%- endfor %}
-
- {% if _formula_pkgs|length > 1 %}
- salt_master_{{ environment_name }}_pkg_formulas:
- pkg.latest:
- - pkgs:
- {%- for pkg in _formula_pkgs %}
- - {{ pkg }}
- {%- endfor %}
- - refresh: True
- - cache_valid_time: 300
- {% endif %}
-
- {% if _formula_pkgs_with_version|length > 1 %}
- {%- for formula in _formula_pkgs_with_version %}
- salt_master_{{ environment_name }}_pkg_formula_{{ formula.name }}:
- {%- if formula.version == 'latest' %}
- pkg.latest:
- - refresh: True
- - cache_valid_time: 300
- {%- elif formula.version == 'purged' %}
- pkg.purged:
- {%- elif formula.version == 'removed' %}
- pkg.removed:
- {%- else %}
- pkg.installed:
- - version: {{ formula.version }}
- - refresh: True
- - cache_valid_time: 300
- {% endif %}
- - name: {{ formula.name }}
- {%- endfor %}
-
- {% endif %}
-
- {%- for formula_name, formula in environment.get('formula', {}).iteritems() %}
-
- {%- if formula.source == 'git' %}
-
- {%- if master.base_environment == environment_name %}
-
- salt_master_{{ environment_name }}_{{ formula_name }}_formula:
- git.latest:
- - name: {{ formula.address }}
- - target: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}
- {% if formula.get("revision", "").split("/")[0] == "refs" %}
- - rev: {{ formula.branch|default("master") }}
- {%- if grains['saltversion'] >= "2015.8.0" %}
- - branch: {{ formula.branch|default("master") }}
- {%- endif %}
- {% else %}
- - rev: {{ formula.revision|default(formula.branch) }}
- {%- if grains['saltversion'] >= "2015.8.0" %}
- - branch: {{ formula.branch|default(formula.revision) }}
- {%- endif %}
- {% endif %}
- - force_reset: {{ formula.force_reset|default(False) }}
- - require:
- - file: salt_env_{{ environment_name }}_dirs
- - pkg: git_packages
-
- {%- if formula.get("revision", "").split("/")[0] == "refs" %}
-
- salt_master_{{ environment_name }}_{{ formula_name }}_formula_refs_workaround_fetch:
- module.run:
- - name: git.fetch
- - cwd: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}
- - opts: {{ formula.address }} {{ formula.revision }}
- - require:
- - git: salt_master_{{ environment_name }}_{{ formula_name }}_formula
-
- salt_master_{{ environment_name }}_{{ formula_name }}_formula_refs_workaround_reset:
- module.run:
- - name: git.reset
- - cwd: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}
- - opts: --hard FETCH_HEAD
- - require:
- - module: salt_master_{{ environment_name }}_{{ formula_name }}_formula_refs_workaround_fetch
-
- salt_master_{{ environment_name }}_{{ formula_name }}_formula_refs_workaround_rebase:
- module.run:
- - name: git.rebase
- - cwd: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}
- - rev: origin/{{ formula.branch|default("master") }}
- - require:
- - module: salt_master_{{ environment_name }}_{{ formula_name }}_formula_refs_workaround_reset
-
- {%- endif %}
-
- salt_env_{{ environment_name }}_{{ formula_name }}_link:
- file.symlink:
- - name: /usr/share/salt-formulas/env/{{ formula_name }}
- - target: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}/{{ formula_name }}
- - require:
- - file: salt_env_{{ environment_name }}_dirs
-
- {%- for grain_name, grain in formula.get('grain', {}).iteritems() %}
-
- salt_master_{{ environment_name }}_{{ grain_name }}_grain:
- file.symlink:
- - name: /usr/share/salt-formulas/env/_grains/{{ grain_name }}
- - target: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}/_grains/{{ grain_name }}
-
- {%- endfor %}
-
- {%- for module_name, module in formula.get('module', {}).iteritems() %}
-
- salt_master_{{ environment_name }}_{{ module_name }}_module:
- file.symlink:
- - name: /usr/share/salt-formulas/env/_modules/{{ module_name }}
- - target: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}/_modules/{{ module_name }}
-
- {%- endfor %}
-
- {%- for state_name, state in formula.get('state', {}).iteritems() %}
-
- salt_master_{{ environment_name }}_{{ state_name }}_state:
- file.symlink:
- - name: /usr/share/salt-formulas/env/_states/{{ state_name }}
- - target: /usr/share/salt-formulas/env/_formulas/{{ formula_name }}/_states/{{ state_name }}
-
- {%- endfor %}
-
- {%- else %}
-
- salt_master_{{ environment_name }}_{{ formula_name }}_formula:
- git.latest:
- - name: {{ formula.address }}
- - target: /srv/salt/env/{{ environment_name }}/_formulas/{{ formula_name }}
- - rev: {{ formula.revision }}
- - require:
- - file: salt_env_{{ environment_name }}_dirs
- - pkg: git_packages
-
- salt_env_{{ environment_name }}_{{ formula_name }}_link:
- file.symlink:
- - name: /srv/salt/env/{{ environment_name }}/{{ formula_name }}
- - target: /srv/salt/env/{{ environment_name }}/_formulas/{{ formula_name }}/{{ formula_name }}
- - require:
- - file: salt_env_{{ environment_name }}_dirs
-
- {%- for grain_name, grain in formula.get('grain', {}).iteritems() %}
-
- salt_master_{{ environment_name }}_{{ grain_name }}_grain:
- file.symlink:
- - name: /srv/salt/env/{{ environment_name }}/_grains/{{ grain_name }}
- - target: /srv/salt/env/{{ environment_name }}/_formulas/{{ formula_name }}/_grains/{{ grain_name }}
-
- {%- endfor %}
-
- {%- for module_name, module in formula.get('module', {}).iteritems() %}
-
- salt_master_{{ environment_name }}_{{ module_name }}_module:
- file.symlink:
- - name: /srv/salt/env/{{ environment_name }}/_grains/{{ module_name }}
- - target: /srv/salt/env/{{ environment_name }}/_formulas/{{ formula_name }}/_grains/{{ module_name }}
-
- {%- endfor %}
-
- {%- for state_name, state in formula.get('state', {}).iteritems() %}
-
- salt_master_{{ environment_name }}_{{ state_name }}_state:
- file.symlink:
- - name: /srv/salt/env/{{ environment_name }}/_grains/{{ state_name }}
- - target: /srv/salt/env/{{ environment_name }}/_formulas/{{ formula_name }}/_grains/{{ state_name }}
-
- {%- endfor %}
-
- {%- endif %}
-
- {%- endif %}
-
- {%- endfor %}
-
- {%- endfor %}
-
- {# end new #}
-
- {%- endif %}
|