There are currently 5 dunder dictionaries. They are available at runtime and generally not stored statically.
__opts__ - Master or Minion configuration options; stored in configuration files of master and minion, collected at startup
__salt__ - Execution module functions (i.e. __salt__['test.echo']('foo')); from built-in and custom execution modules ...
Well, that's pretty broad, mostly this can boils down to two options:
Policy based management
In the first one you're describing the actions you want to be done to achieve the desired state, assuming previous state of the system or testing against it specifically, in the second you're describing what you expect as resulting state of the ...
Mostly because getting from an unknown state to a desired state is not a build step, at build you start from a known state, which is nil or blank, and create something.
But what you're missing, I think, is that with configuration as code you build the desired state once and deploy the resulting artifact multiple times.
For a Chef Cookbook as example, you ...
Running your config.yml through yamllint, produced the following:
1:1 warning missing document start "---" (document-start)
13:3 error duplication of key "build" in mapping (key-duplicates)
25:19 error syntax error: mapping values are not allowed here
When I add colons to the entry on lines 25 and 28:
You simply have an incorrect yaml syntax in your workflows jobs list.
From what I could very quickly understand on circleCI's documentation, jobs names are accepted as a shorthand if you don't define any parameters. If you have parameters, the list element is a hashmap with top element being the job name. In your specific case, this should give (note the ...
The closest thing to an official source for best practice configuration management is ITIL, but it is important to remember (most don't) that ITIL is a toolbox of ideas and techniques, it is supposed to be adapted to the unique requirements of each site, not applied verbatim.
I recommend that you use the printenv command for list system Variable:
and also An easy way to obtain the Jenkins environment variables list from your local installation is to append env-vars.html to the server's URL. the URL would be
I'm not an expert in GitLab but I would assume it to be similar to other solutions like it (bitbucket, github).
A simple way to achieve this would be to clone the repo in another private repo instead of doing a separate branch. In effect this would work similar to having your local repo and the gitlab repo. Merging a branch and merging with another repo ...
In your deployment project configuration for each environment you could add a task prior to the actual deployment which would take care of setting up the right configuration file.
It could be a script simply copying/replacing the configuration file just as you currently do manually. The script could be invoked with some pre-configured argument to identify ...