-
Notifications
You must be signed in to change notification settings - Fork 225
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bolt should use a configuration inheritance model similar to the one used by 'git' #608
Comments
@trevor-vaughan I think Alex has already talked to you about this, but just for visibility: There are some other features we'd like to add around this before implementing it so that users aren't blindsided by having configuration applied that they aren't sure where it's coming from (like a global config). We'll leave this open since long term we plan to address it, but we don't have immediate plans or fixing. |
@lucywyman fwiw, I have the same request as @trevor-vaughan. I want to be able to commit a bolt.yaml to my e.g. control-repo in Puppet, to capture project-level configuration settings. However, I can't commit user-level configuration for ssh, winrm, and so forth to this file. I need configuration stacking in order to use Bolt on a team level rather than an individual level. |
👍 The winner-takes-all nature of As things stand, it doesn't make much sense to invest important settings in FWIW, there have recently been similar requests in the puppetcommunity Slack: |
This patch adds config files to specify default values for individual users (puppetlabs#608, puppetlabs#1438) and system-wide (puppetlabs#759, puppetlabs#1438).
This patch adds config files to specify default values for individual users (puppetlabs#608, puppetlabs#1438) and system-wide (puppetlabs#759, puppetlabs#1438).
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
This change adds support for two new configuration files. In order from highest precedence to lowest, the configuration files are: - Project configuration `<boltdir>/bolt.yaml` - User configuration `~/.puppetlabs/etc/bolt/bolt.yaml` - System-wide configuration *nix: `/etc/puppetlabs/bolt/bolt.yaml` Windows: `%PROGRAMDATA%\PuppetLabs\bolt\etc\bolt.yaml` When multiple configuration files are found, Bolt will employ the following merge strategy: - Shallow merge options that accept hashes - Overwrite options that do not accept hashes - Deep merge transport configuration options (e.g. `ssh`, `winrm`) - Shallow merge configuration for individual plugins configured under the `plugins` option.
(GH-608) Add support for multiple configuration files
When running
bolt
I expected the configuration options to be stacked in a method similar to those ofgit
since some options are repository specific and some are user specific and should not be in a shared repository.I did not expect the local configuration to override my global configuration completely (though it is documented at https://puppet.com/docs/bolt/0.x/configuring_bolt.html and I simply missed it).
Config inheritance order (from lowest to highest)
On non-Windows systems, the default config paths searched are:
/etc/puppetlabs/bolt/bolt.yaml
~/.puppetlabs/etc/bolt/bolt.yaml
<boltdir>/bolt.yaml
On Windows systems, the default config paths searched are:
C:\Program Files\Puppet Labs\Bolt\bolt.yaml
%USERPROFILE%/.puppetlabs/etc/bolt/bolt.yaml
<boltdir>/bolt.yaml
TODO:
https://gist.github.com/beechtom/f7b758893796d61a23c8ab868cf8b062
The text was updated successfully, but these errors were encountered: