chef-config 17.9.52 → 17.10.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +201 -201
- data/Rakefile +14 -14
- data/chef-config.gemspec +39 -39
- data/lib/chef-config/config.rb +1297 -1297
- data/lib/chef-config/exceptions.rb +27 -27
- data/lib/chef-config/fips.rb +53 -53
- data/lib/chef-config/logger.rb +53 -53
- data/lib/chef-config/mixin/credentials.rb +102 -102
- data/lib/chef-config/mixin/dot_d.rb +44 -44
- data/lib/chef-config/mixin/fuzzy_hostname_matcher.rb +49 -49
- data/lib/chef-config/mixin/train_transport.rb +143 -143
- data/lib/chef-config/path_helper.rb +350 -350
- data/lib/chef-config/version.rb +19 -19
- data/lib/chef-config/windows.rb +24 -24
- data/lib/chef-config/workstation_config_loader.rb +281 -281
- data/lib/chef-config.rb +20 -20
- data/spec/spec_helper.rb +75 -75
- data/spec/unit/config_spec.rb +1390 -1390
- data/spec/unit/fips_spec.rb +128 -128
- data/spec/unit/path_helper_spec.rb +372 -372
- data/spec/unit/workstation_config_loader_spec.rb +633 -633
- metadata +4 -4
@@ -1,27 +1,27 @@
|
|
1
|
-
#
|
2
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
require_relative "windows"
|
19
|
-
require_relative "logger"
|
20
|
-
|
21
|
-
module ChefConfig
|
22
|
-
|
23
|
-
class ConfigurationError < ArgumentError; end
|
24
|
-
class InvalidPath < StandardError; end
|
25
|
-
class UnparsableConfigOption < StandardError; end
|
26
|
-
|
27
|
-
end
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require_relative "windows"
|
19
|
+
require_relative "logger"
|
20
|
+
|
21
|
+
module ChefConfig
|
22
|
+
|
23
|
+
class ConfigurationError < ArgumentError; end
|
24
|
+
class InvalidPath < StandardError; end
|
25
|
+
class UnparsableConfigOption < StandardError; end
|
26
|
+
|
27
|
+
end
|
data/lib/chef-config/fips.rb
CHANGED
@@ -1,53 +1,53 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matt Wrock (<matt@mattwrock.com>)
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require "chef-utils" unless defined?(ChefUtils::CANARY)
|
20
|
-
|
21
|
-
module ChefConfig
|
22
|
-
|
23
|
-
def self.fips?
|
24
|
-
if ChefUtils.windows?
|
25
|
-
begin
|
26
|
-
require "win32/registry" unless defined?(Win32::Registry)
|
27
|
-
rescue LoadError
|
28
|
-
return false
|
29
|
-
end
|
30
|
-
|
31
|
-
# from http://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx
|
32
|
-
reg_type =
|
33
|
-
case ::RbConfig::CONFIG["target_cpu"]
|
34
|
-
when "i386"
|
35
|
-
Win32::Registry::KEY_READ | 0x100
|
36
|
-
when "x86_64"
|
37
|
-
Win32::Registry::KEY_READ | 0x200
|
38
|
-
else
|
39
|
-
Win32::Registry::KEY_READ
|
40
|
-
end
|
41
|
-
begin
|
42
|
-
Win32::Registry::HKEY_LOCAL_MACHINE.open("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy", reg_type) do |policy|
|
43
|
-
policy["Enabled"] != 0
|
44
|
-
end
|
45
|
-
rescue Win32::Registry::Error
|
46
|
-
false
|
47
|
-
end
|
48
|
-
else
|
49
|
-
fips_path = "/proc/sys/crypto/fips_enabled"
|
50
|
-
File.exist?(fips_path) && File.read(fips_path).chomp != "0"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Matt Wrock (<matt@mattwrock.com>)
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require "chef-utils" unless defined?(ChefUtils::CANARY)
|
20
|
+
|
21
|
+
module ChefConfig
|
22
|
+
|
23
|
+
def self.fips?
|
24
|
+
if ChefUtils.windows?
|
25
|
+
begin
|
26
|
+
require "win32/registry" unless defined?(Win32::Registry)
|
27
|
+
rescue LoadError
|
28
|
+
return false
|
29
|
+
end
|
30
|
+
|
31
|
+
# from http://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx
|
32
|
+
reg_type =
|
33
|
+
case ::RbConfig::CONFIG["target_cpu"]
|
34
|
+
when "i386"
|
35
|
+
Win32::Registry::KEY_READ | 0x100
|
36
|
+
when "x86_64"
|
37
|
+
Win32::Registry::KEY_READ | 0x200
|
38
|
+
else
|
39
|
+
Win32::Registry::KEY_READ
|
40
|
+
end
|
41
|
+
begin
|
42
|
+
Win32::Registry::HKEY_LOCAL_MACHINE.open("System\\CurrentControlSet\\Control\\Lsa\\FIPSAlgorithmPolicy", reg_type) do |policy|
|
43
|
+
policy["Enabled"] != 0
|
44
|
+
end
|
45
|
+
rescue Win32::Registry::Error
|
46
|
+
false
|
47
|
+
end
|
48
|
+
else
|
49
|
+
fips_path = "/proc/sys/crypto/fips_enabled"
|
50
|
+
File.exist?(fips_path) && File.read(fips_path).chomp != "0"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/chef-config/logger.rb
CHANGED
@@ -1,53 +1,53 @@
|
|
1
|
-
#
|
2
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
module ChefConfig
|
19
|
-
|
20
|
-
# Implements enough of Logger's API that we can use it in place of a real
|
21
|
-
# logger for `ChefConfig.logger`
|
22
|
-
class NullLogger
|
23
|
-
|
24
|
-
def <<(_msg); end
|
25
|
-
|
26
|
-
def add(_severity, _message = nil, _progname = nil); end
|
27
|
-
|
28
|
-
def trace(_progname = nil, &block); end
|
29
|
-
|
30
|
-
def debug(_progname = nil, &block); end
|
31
|
-
|
32
|
-
def info(_progname = nil, &block); end
|
33
|
-
|
34
|
-
def warn(_progname = nil, &block); end
|
35
|
-
|
36
|
-
def deprecation(_progname = nil, &block); end
|
37
|
-
|
38
|
-
def error(_progname = nil, &block); end
|
39
|
-
|
40
|
-
def fatal(_progname = nil, &block); end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
@logger = NullLogger.new
|
45
|
-
|
46
|
-
def self.logger=(new_logger)
|
47
|
-
@logger = new_logger
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.logger
|
51
|
-
@logger
|
52
|
-
end
|
53
|
-
end
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
module ChefConfig
|
19
|
+
|
20
|
+
# Implements enough of Logger's API that we can use it in place of a real
|
21
|
+
# logger for `ChefConfig.logger`
|
22
|
+
class NullLogger
|
23
|
+
|
24
|
+
def <<(_msg); end
|
25
|
+
|
26
|
+
def add(_severity, _message = nil, _progname = nil); end
|
27
|
+
|
28
|
+
def trace(_progname = nil, &block); end
|
29
|
+
|
30
|
+
def debug(_progname = nil, &block); end
|
31
|
+
|
32
|
+
def info(_progname = nil, &block); end
|
33
|
+
|
34
|
+
def warn(_progname = nil, &block); end
|
35
|
+
|
36
|
+
def deprecation(_progname = nil, &block); end
|
37
|
+
|
38
|
+
def error(_progname = nil, &block); end
|
39
|
+
|
40
|
+
def fatal(_progname = nil, &block); end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
@logger = NullLogger.new
|
45
|
+
|
46
|
+
def self.logger=(new_logger)
|
47
|
+
@logger = new_logger
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.logger
|
51
|
+
@logger
|
52
|
+
end
|
53
|
+
end
|
@@ -1,102 +1,102 @@
|
|
1
|
-
#
|
2
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
#
|
17
|
-
|
18
|
-
autoload :Tomlrb, "tomlrb"
|
19
|
-
require_relative "../path_helper"
|
20
|
-
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
21
|
-
|
22
|
-
module ChefConfig
|
23
|
-
module Mixin
|
24
|
-
# Helper methods for working with credentials files.
|
25
|
-
#
|
26
|
-
# @since 13.7
|
27
|
-
# @api internal
|
28
|
-
module Credentials
|
29
|
-
# Compute the active credentials profile name.
|
30
|
-
#
|
31
|
-
# The lookup order is argument (from --profile), environment variable
|
32
|
-
# ($CHEF_PROFILE), context file (~/.chef/context), and then "default" as
|
33
|
-
# a fallback.
|
34
|
-
#
|
35
|
-
# @since 14.4
|
36
|
-
# @param profile [String, nil] Optional override for the active profile,
|
37
|
-
# normally set via a command-line option.
|
38
|
-
# @return [String]
|
39
|
-
def credentials_profile(profile = nil)
|
40
|
-
context_file = PathHelper.home(ChefUtils::Dist::Infra::USER_CONF_DIR, "context").freeze
|
41
|
-
if !profile.nil?
|
42
|
-
profile
|
43
|
-
elsif ENV.include?("CHEF_PROFILE")
|
44
|
-
ENV["CHEF_PROFILE"]
|
45
|
-
elsif File.file?(context_file)
|
46
|
-
File.read(context_file).strip
|
47
|
-
else
|
48
|
-
"default"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
# Compute the path to the credentials file.
|
53
|
-
#
|
54
|
-
# @since 14.4
|
55
|
-
# @return [String]
|
56
|
-
def credentials_file_path
|
57
|
-
PathHelper.home(ChefUtils::Dist::Infra::USER_CONF_DIR, "credentials").freeze
|
58
|
-
end
|
59
|
-
|
60
|
-
# Load and parse the credentials file.
|
61
|
-
#
|
62
|
-
# Returns `nil` if the credentials file is unavailable.
|
63
|
-
#
|
64
|
-
# @since 14.4
|
65
|
-
# @return [String, nil]
|
66
|
-
def parse_credentials_file
|
67
|
-
credentials_file = credentials_file_path
|
68
|
-
return nil unless File.file?(credentials_file)
|
69
|
-
|
70
|
-
begin
|
71
|
-
Tomlrb.load_file(credentials_file)
|
72
|
-
rescue => e
|
73
|
-
# TOML's error messages are mostly rubbish, so we'll just give a generic one
|
74
|
-
message = "Unable to parse Credentials file: #{credentials_file}\n"
|
75
|
-
message << e.message
|
76
|
-
raise ChefConfig::ConfigurationError, message
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
# Load and process the active credentials.
|
81
|
-
#
|
82
|
-
# @see WorkstationConfigLoader#apply_credentials
|
83
|
-
# @param profile [String, nil] Optional override for the active profile,
|
84
|
-
# normally set via a command-line option.
|
85
|
-
# @return [void]
|
86
|
-
def load_credentials(profile = nil)
|
87
|
-
profile = credentials_profile(profile)
|
88
|
-
cred_config = parse_credentials_file
|
89
|
-
return if cred_config.nil? # No credentials, nothing to do here.
|
90
|
-
|
91
|
-
if cred_config[profile].nil?
|
92
|
-
# Unknown profile name. For "default" just silently ignore, otherwise
|
93
|
-
# raise an error.
|
94
|
-
return if profile == "default"
|
95
|
-
|
96
|
-
raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{credentials_file_path}."
|
97
|
-
end
|
98
|
-
apply_credentials(cred_config[profile], profile)
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
autoload :Tomlrb, "tomlrb"
|
19
|
+
require_relative "../path_helper"
|
20
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
21
|
+
|
22
|
+
module ChefConfig
|
23
|
+
module Mixin
|
24
|
+
# Helper methods for working with credentials files.
|
25
|
+
#
|
26
|
+
# @since 13.7
|
27
|
+
# @api internal
|
28
|
+
module Credentials
|
29
|
+
# Compute the active credentials profile name.
|
30
|
+
#
|
31
|
+
# The lookup order is argument (from --profile), environment variable
|
32
|
+
# ($CHEF_PROFILE), context file (~/.chef/context), and then "default" as
|
33
|
+
# a fallback.
|
34
|
+
#
|
35
|
+
# @since 14.4
|
36
|
+
# @param profile [String, nil] Optional override for the active profile,
|
37
|
+
# normally set via a command-line option.
|
38
|
+
# @return [String]
|
39
|
+
def credentials_profile(profile = nil)
|
40
|
+
context_file = PathHelper.home(ChefUtils::Dist::Infra::USER_CONF_DIR, "context").freeze
|
41
|
+
if !profile.nil?
|
42
|
+
profile
|
43
|
+
elsif ENV.include?("CHEF_PROFILE")
|
44
|
+
ENV["CHEF_PROFILE"]
|
45
|
+
elsif File.file?(context_file)
|
46
|
+
File.read(context_file).strip
|
47
|
+
else
|
48
|
+
"default"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Compute the path to the credentials file.
|
53
|
+
#
|
54
|
+
# @since 14.4
|
55
|
+
# @return [String]
|
56
|
+
def credentials_file_path
|
57
|
+
PathHelper.home(ChefUtils::Dist::Infra::USER_CONF_DIR, "credentials").freeze
|
58
|
+
end
|
59
|
+
|
60
|
+
# Load and parse the credentials file.
|
61
|
+
#
|
62
|
+
# Returns `nil` if the credentials file is unavailable.
|
63
|
+
#
|
64
|
+
# @since 14.4
|
65
|
+
# @return [String, nil]
|
66
|
+
def parse_credentials_file
|
67
|
+
credentials_file = credentials_file_path
|
68
|
+
return nil unless File.file?(credentials_file)
|
69
|
+
|
70
|
+
begin
|
71
|
+
Tomlrb.load_file(credentials_file)
|
72
|
+
rescue => e
|
73
|
+
# TOML's error messages are mostly rubbish, so we'll just give a generic one
|
74
|
+
message = "Unable to parse Credentials file: #{credentials_file}\n"
|
75
|
+
message << e.message
|
76
|
+
raise ChefConfig::ConfigurationError, message
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# Load and process the active credentials.
|
81
|
+
#
|
82
|
+
# @see WorkstationConfigLoader#apply_credentials
|
83
|
+
# @param profile [String, nil] Optional override for the active profile,
|
84
|
+
# normally set via a command-line option.
|
85
|
+
# @return [void]
|
86
|
+
def load_credentials(profile = nil)
|
87
|
+
profile = credentials_profile(profile)
|
88
|
+
cred_config = parse_credentials_file
|
89
|
+
return if cred_config.nil? # No credentials, nothing to do here.
|
90
|
+
|
91
|
+
if cred_config[profile].nil?
|
92
|
+
# Unknown profile name. For "default" just silently ignore, otherwise
|
93
|
+
# raise an error.
|
94
|
+
return if profile == "default"
|
95
|
+
|
96
|
+
raise ChefConfig::ConfigurationError, "Profile #{profile} doesn't exist. Please add it to #{credentials_file_path}."
|
97
|
+
end
|
98
|
+
apply_credentials(cred_config[profile], profile)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -1,44 +1,44 @@
|
|
1
|
-
#
|
2
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
require_relative "../path_helper"
|
18
|
-
|
19
|
-
module ChefConfig
|
20
|
-
module Mixin
|
21
|
-
module DotD
|
22
|
-
# Find available configuration files in a `.d/` style include directory.
|
23
|
-
# Make sure we exclude anything that's not a file so we avoid directories ending in .rb (just in case)
|
24
|
-
#
|
25
|
-
# @api internal
|
26
|
-
# @param path [String] Base .d/ path to load from.
|
27
|
-
# @return [Array<String>]
|
28
|
-
def find_dot_d(path)
|
29
|
-
Dir["#{PathHelper.escape_glob_dir(path)}/*.rb"].select { |entry| File.file?(entry) }.sort
|
30
|
-
end
|
31
|
-
|
32
|
-
# Load configuration from a `.d/` style include directory.
|
33
|
-
#
|
34
|
-
# @api internal
|
35
|
-
# @param path [String] Base .d/ path to load from.
|
36
|
-
# @return [void]
|
37
|
-
def load_dot_d(path)
|
38
|
-
find_dot_d(path).each do |conf|
|
39
|
-
apply_config(IO.read(conf), conf)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require_relative "../path_helper"
|
18
|
+
|
19
|
+
module ChefConfig
|
20
|
+
module Mixin
|
21
|
+
module DotD
|
22
|
+
# Find available configuration files in a `.d/` style include directory.
|
23
|
+
# Make sure we exclude anything that's not a file so we avoid directories ending in .rb (just in case)
|
24
|
+
#
|
25
|
+
# @api internal
|
26
|
+
# @param path [String] Base .d/ path to load from.
|
27
|
+
# @return [Array<String>]
|
28
|
+
def find_dot_d(path)
|
29
|
+
Dir["#{PathHelper.escape_glob_dir(path)}/*.rb"].select { |entry| File.file?(entry) }.sort
|
30
|
+
end
|
31
|
+
|
32
|
+
# Load configuration from a `.d/` style include directory.
|
33
|
+
#
|
34
|
+
# @api internal
|
35
|
+
# @param path [String] Base .d/ path to load from.
|
36
|
+
# @return [void]
|
37
|
+
def load_dot_d(path)
|
38
|
+
find_dot_d(path).each do |conf|
|
39
|
+
apply_config(IO.read(conf), conf)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -1,49 +1,49 @@
|
|
1
|
-
#
|
2
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
-
# License:: Apache License, Version 2.0
|
4
|
-
#
|
5
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
# you may not use this file except in compliance with the License.
|
7
|
-
# You may obtain a copy of the License at
|
8
|
-
#
|
9
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
#
|
11
|
-
# Unless required by applicable law or agreed to in writing, software
|
12
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
# See the License for the specific language governing permissions and
|
15
|
-
# limitations under the License.
|
16
|
-
|
17
|
-
require "fuzzyurl"
|
18
|
-
|
19
|
-
module ChefConfig
|
20
|
-
module Mixin
|
21
|
-
module FuzzyHostnameMatcher
|
22
|
-
|
23
|
-
#
|
24
|
-
# Check to see if a hostname matches a match string. Used to see if hosts fall under our no_proxy config
|
25
|
-
#
|
26
|
-
# @param [String] hostname the hostname to check
|
27
|
-
# @param [String] matches the pattern to match
|
28
|
-
#
|
29
|
-
# @return [Boolean]
|
30
|
-
#
|
31
|
-
def fuzzy_hostname_match_any?(hostname, matches)
|
32
|
-
if hostname && matches
|
33
|
-
return matches.to_s.split(/\s*,\s*/).compact.any? do |m|
|
34
|
-
fuzzy_hostname_match?(hostname, m)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
false
|
39
|
-
end
|
40
|
-
|
41
|
-
def fuzzy_hostname_match?(hostname, match)
|
42
|
-
# Do greedy matching by adding wildcard if it is not specified
|
43
|
-
match = "*" + match unless match.start_with?("*")
|
44
|
-
Fuzzyurl.matches?(Fuzzyurl.mask(hostname: match), hostname)
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require "fuzzyurl"
|
18
|
+
|
19
|
+
module ChefConfig
|
20
|
+
module Mixin
|
21
|
+
module FuzzyHostnameMatcher
|
22
|
+
|
23
|
+
#
|
24
|
+
# Check to see if a hostname matches a match string. Used to see if hosts fall under our no_proxy config
|
25
|
+
#
|
26
|
+
# @param [String] hostname the hostname to check
|
27
|
+
# @param [String] matches the pattern to match
|
28
|
+
#
|
29
|
+
# @return [Boolean]
|
30
|
+
#
|
31
|
+
def fuzzy_hostname_match_any?(hostname, matches)
|
32
|
+
if hostname && matches
|
33
|
+
return matches.to_s.split(/\s*,\s*/).compact.any? do |m|
|
34
|
+
fuzzy_hostname_match?(hostname, m)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
false
|
39
|
+
end
|
40
|
+
|
41
|
+
def fuzzy_hostname_match?(hostname, match)
|
42
|
+
# Do greedy matching by adding wildcard if it is not specified
|
43
|
+
match = "*" + match unless match.start_with?("*")
|
44
|
+
Fuzzyurl.matches?(Fuzzyurl.mask(hostname: match), hostname)
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|