mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Merge pull request #38718 from terminalmage/zd909
Fix for dynamic git_pillar when pillarenv is used
This commit is contained in:
commit
8c1222e7db
3 changed files with 30 additions and 9 deletions
|
@ -124,14 +124,14 @@ def items(*args, **kwargs):
|
|||
|
||||
.. versionadded:: 2015.5.0
|
||||
|
||||
saltenv
|
||||
pillarenv
|
||||
Pass a specific pillar environment from which to compile pillar data.
|
||||
If unspecified, the minion's :conf_minion:`environment` option is used,
|
||||
and if that also is not specified then all configured pillar
|
||||
If not specified, then the minion's :conf_minion:`pillarenv` option is
|
||||
not used, and if that also is not specified then all configured pillar
|
||||
environments will be merged into a single pillar dictionary and
|
||||
returned.
|
||||
|
||||
.. versionadded:: Nitrogen
|
||||
.. versionadded:: 2016.11.2
|
||||
|
||||
CLI Example:
|
||||
|
||||
|
@ -147,8 +147,8 @@ def items(*args, **kwargs):
|
|||
__opts__,
|
||||
__grains__,
|
||||
__opts__['id'],
|
||||
kwargs.get('saltenv') or __opts__['environment'],
|
||||
pillar=kwargs.get('pillar'))
|
||||
pillar=kwargs.get('pillar'),
|
||||
pillarenv=kwargs.get('pillarenv') or __opts__['pillarenv'])
|
||||
|
||||
return pillar.compile_pillar()
|
||||
|
||||
|
|
|
@ -222,8 +222,23 @@ per-remote parameter:
|
|||
- production https://gitserver/git-pillar.git:
|
||||
- env: prod
|
||||
|
||||
If ``__env__`` is specified as the branch name, then git_pillar will use the
|
||||
branch specified by :conf_master:`git_pillar_base`:
|
||||
If ``__env__`` is specified as the branch name, then git_pillar will decide
|
||||
which branch to use based on the following criteria:
|
||||
|
||||
- If the minion has a :conf_minion:`pillarenv` configured, it will use that
|
||||
pillar environment. (2016.11.2 and later)
|
||||
- Otherwise, if the minion has an ``environment`` configured, it will use that
|
||||
environment.
|
||||
- Otherwise, the master's :conf_master:`git_pillar_base` will be used.
|
||||
|
||||
.. note::
|
||||
The use of :conf_minion:`environment` to choose the pillar environment
|
||||
dates from a time before the :conf_minion:`pillarenv` parameter was added.
|
||||
In a future release, it will be ignored and either the minion's
|
||||
:conf_minion:`pillarenv` or the master's :conf_master:`git_pillar_base`
|
||||
will be used.
|
||||
|
||||
Here's an example of using ``__env__`` as the git_pillar environment:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
|
@ -388,6 +403,10 @@ def ext_pillar(minion_id, repo, pillar_dirs):
|
|||
# the pillar top.sls is sourced from the correct location.
|
||||
pillar_roots = [pillar_dir]
|
||||
pillar_roots.extend([x for x in all_dirs if x != pillar_dir])
|
||||
if env == '__env__':
|
||||
env = opts.get('pillarenv') \
|
||||
or opts.get('environment') \
|
||||
or opts.get('git_pillar_base')
|
||||
opts['pillar_roots'] = {env: pillar_roots}
|
||||
|
||||
local_pillar = Pillar(opts, __grains__, minion_id, env)
|
||||
|
|
|
@ -666,7 +666,9 @@ class GitProvider(object):
|
|||
Resolve dynamically-set branch
|
||||
'''
|
||||
if self.branch == '__env__':
|
||||
target = self.opts.get('environment') or 'base'
|
||||
target = self.opts.get('pillarenv') \
|
||||
or self.opts.get('environment') \
|
||||
or 'base'
|
||||
return self.opts['{0}_base'.format(self.role)] \
|
||||
if target == 'base' \
|
||||
else target
|
||||
|
|
Loading…
Add table
Reference in a new issue