r10k 2.6.4 → 2.6.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/pull_request_template.md +4 -0
- data/.github/workflows/release.yml +36 -0
- data/.gitignore +0 -1
- data/.travis.yml +16 -9
- data/CHANGELOG.mkd +51 -1
- data/CODEOWNERS +1 -0
- data/doc/dynamic-environments/usage.mkd +12 -0
- data/integration/Gemfile +2 -2
- data/integration/Rakefile +2 -3
- data/integration/pre-suite/00_pe_install.rb +2 -0
- data/integration/tests/basic_functionality/install_pe_only_module_with_puppetfile.rb +2 -2
- data/integration/tests/basic_functionality/proxy_with_pe_only_module.rb +2 -2
- data/integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb +2 -12
- data/integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb +2 -11
- data/integration/tests/user_scenario/basic_workflow/single_env_large_files.rb +2 -12
- data/lib/r10k/action/deploy/environment.rb +15 -2
- data/lib/r10k/cli/deploy.rb +1 -0
- data/lib/r10k/module/git.rb +5 -0
- data/lib/r10k/puppetfile.rb +17 -6
- data/lib/r10k/util/subprocess/runner/posix.rb +3 -3
- data/lib/r10k/version.rb +4 -1
- data/locales/r10k.pot +486 -0
- data/r10k.gemspec +7 -3
- data/spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile +5 -0
- data/spec/unit/action/deploy/environment_spec.rb +63 -0
- data/spec/unit/puppetfile_spec.rb +39 -0
- metadata +48 -22
- data/MAINTAINERS +0 -18
- data/integration/pre-suite/30_test_utils.rb +0 -17
- data/integration/scripts/README.mkd +0 -86
- data/integration/scripts/setup_r10k_env_centos5.sh +0 -23
- data/integration/scripts/setup_r10k_env_centos6.sh +0 -23
- data/integration/scripts/setup_r10k_env_rhel7.sh +0 -23
- data/integration/scripts/setup_r10k_env_sles11.sh +0 -23
- data/integration/scripts/setup_r10k_env_sles12.sh +0 -23
- data/integration/scripts/setup_r10k_env_ubuntu1004.sh +0 -23
- data/integration/scripts/setup_r10k_env_ubuntu1204.sh +0 -23
- data/integration/scripts/setup_r10k_env_ubuntu1404.sh +0 -23
- data/integration/tests/basic_functionality/negative/attempt_to_install_peonly_module_without_license.rb +0 -71
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 58f78e7f2b417c01a90fda95cecea6f68038be0f6ce34647874b1f3710955a78
|
4
|
+
data.tar.gz: 61f99c6c4e43c855680abf8dae75a2b6077750d59ecb121f0e343207bb9efc37
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c10471595015b12c3f5af303ea35e81baf43fa4d3ad483a3f47b5efa495a427d70a7706ba3c7ea5ec526d6a086138234017e6bc6a03cbb9aeb98c7beaad27a2
|
7
|
+
data.tar.gz: b4f5f724e5bd480d0ba52fc32d0c5d5584ea6e2724c616de1d3a60fd3c639ddbae2643990b9694999f3d497ce3197c5db241e9105c0dd9d843f696f4fcb5af83
|
@@ -0,0 +1,36 @@
|
|
1
|
+
name: Tag and release
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- master
|
7
|
+
paths:
|
8
|
+
- 'lib/r10k/version.rb'
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
release:
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v2
|
15
|
+
with:
|
16
|
+
fetch-depth: '0'
|
17
|
+
- name: Bump version and push tag
|
18
|
+
uses: anothrNick/github-tag-action@1.17.2
|
19
|
+
env:
|
20
|
+
GITHUB_TOKEN: ${{ secrets.PUPPET_RELEASE_GH_TOKEN }}
|
21
|
+
DEFAULT_BUMP: patch
|
22
|
+
WITH_V: false
|
23
|
+
# Uncomment this if the tag and version file become out-of-sync and
|
24
|
+
# you need to tag at a specific version.
|
25
|
+
# CUSTOM_TAG:
|
26
|
+
- name: Build gem
|
27
|
+
uses: scarhand/actions-ruby@master
|
28
|
+
with:
|
29
|
+
args: build *.gemspec
|
30
|
+
- name: Publish gem
|
31
|
+
uses: scarhand/actions-ruby@master
|
32
|
+
env:
|
33
|
+
RUBYGEMS_AUTH_TOKEN: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
|
34
|
+
with:
|
35
|
+
args: push *.gem
|
36
|
+
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -5,13 +5,20 @@ script: "bundle exec rspec --color --format documentation spec/unit"
|
|
5
5
|
notifications:
|
6
6
|
email: false
|
7
7
|
sudo: false
|
8
|
-
before_install: gem update bundler
|
9
|
-
rvm:
|
10
|
-
- "2.3.0"
|
11
|
-
- "2.2.0"
|
12
|
-
- "2.1.0"
|
13
|
-
- "2.0.0"
|
14
|
-
- "1.9.3"
|
15
|
-
- "jruby-19mode"
|
16
8
|
jdk:
|
17
|
-
|
9
|
+
- openjdk8
|
10
|
+
before_install: gem install bundler -v '< 2' --no-document
|
11
|
+
matrix:
|
12
|
+
include:
|
13
|
+
- stage: r10k tests
|
14
|
+
rvm: 2.3.0
|
15
|
+
- stage: r10k tests
|
16
|
+
rvm: 2.2.0
|
17
|
+
- stage: r10k tests
|
18
|
+
rvm: 2.1.0
|
19
|
+
- stage: r10k tests
|
20
|
+
rvm: 2.0.0
|
21
|
+
- stage: r10k tests
|
22
|
+
rvm: 1.9.3
|
23
|
+
- stage: r10k tests
|
24
|
+
rvm: jruby-19mode
|
data/CHANGELOG.mkd
CHANGED
@@ -1,13 +1,63 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
=========
|
3
|
+
|
4
|
+
Unreleased
|
5
|
+
----------
|
6
|
+
|
7
|
+
2.6.9
|
8
|
+
----
|
9
|
+
|
10
|
+
- Don't purge root when using `puppetfile install`. [#1084](https://github.com/puppetlabs/r10k/issues/1084)
|
11
|
+
|
12
|
+
2.6.8
|
13
|
+
----
|
14
|
+
|
15
|
+
### Changes
|
16
|
+
|
17
|
+
(RK-357) Restrict gettext and fast_gettext versions for compatibility with Ruby 2.4.
|
18
|
+
(RK-358) Update puppet_forge to ~> 2.3.0.
|
19
|
+
|
20
|
+
2.6.7
|
21
|
+
----
|
22
|
+
|
23
|
+
### Changes
|
24
|
+
|
25
|
+
(CDPE-1813) Add module deploy info to .r10k-deploy.json.
|
26
|
+
(RK-351) Update minitar to ~> 0.9.0.
|
27
|
+
|
28
|
+
2.6.6
|
29
|
+
----
|
30
|
+
|
31
|
+
### Changes
|
32
|
+
|
33
|
+
- Flag for overriding default branch configuration in Puppetfile
|
34
|
+
- Plumbing for internationalization
|
35
|
+
- Numerous test fixes and legacy docker work
|
36
|
+
|
37
|
+
2.6.5
|
38
|
+
----
|
39
|
+
|
40
|
+
### Bug Fix
|
41
|
+
|
42
|
+
(RK-324) Fix Ruby pipe bug affecting Ubuntu
|
43
|
+
|
44
|
+
2.6.4
|
45
|
+
----
|
46
|
+
|
47
|
+
### Changes
|
48
|
+
|
49
|
+
Numerous test fixes.
|
50
|
+
|
3
51
|
2.6.3
|
4
52
|
----
|
5
|
-
|
53
|
+
|
54
|
+
### Changes
|
6
55
|
|
7
56
|
Update specs with new error string.
|
8
57
|
|
9
58
|
2.6.2
|
10
59
|
-----
|
60
|
+
|
11
61
|
### Changes
|
12
62
|
|
13
63
|
(RK-311) Yard dependency updated for security fix.
|
data/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @puppetlabs/puppetserver-maintainers @adrienthebo @dhollinger
|
@@ -60,6 +60,18 @@ Update a single environment and force an update of modules:
|
|
60
60
|
This will update the given environment and update all contained modules. This is
|
61
61
|
useful if you want to make sure that a given environment is fully up to date.
|
62
62
|
|
63
|
+
- - -
|
64
|
+
|
65
|
+
Update a single environment and specify a default branch override:
|
66
|
+
|
67
|
+
r10k deploy environment my_working_environment --puppetfile --default-branch-override default_branch_override
|
68
|
+
|
69
|
+
This will update the given environment and update all contained modules, overrideing
|
70
|
+
the :default_branch entry in the Puppetfile of each module. This is used primarily to allow
|
71
|
+
automated r10k solutions using the control_branch pattern with a temporary branch deployment to
|
72
|
+
ensure the deployment is pushed to the correct module repository branch. Note that the :default_branch
|
73
|
+
is only ever utilized if the desired ref cannot be located.
|
74
|
+
|
63
75
|
### Deploying modules
|
64
76
|
|
65
77
|
Update a single module across all environments:
|
data/integration/Gemfile
CHANGED
@@ -10,8 +10,8 @@ def location_for(place, fake_version = nil)
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '~>
|
14
|
-
gem 'beaker-pe', '~>
|
13
|
+
gem 'beaker', *location_for(ENV['BEAKER_VERSION'] || '~> 4.5')
|
14
|
+
gem 'beaker-pe', '~> 2.0'
|
15
15
|
gem 'beaker-hostgenerator', *location_for(ENV['BEAKER_HOSTGENERATOR_VERSION'] || '~> 1.1')
|
16
16
|
gem 'beaker-abs', *location_for(ENV['BEAKER_ABS_VERSION'] || '~> 0.4')
|
17
17
|
gem 'rototiller', '= 0.1.0'
|
data/integration/Rakefile
CHANGED
@@ -24,7 +24,6 @@ pre-suite/00_pe_install.rb,
|
|
24
24
|
component/pre-suite/05_install_dev_r10k.rb,
|
25
25
|
pre-suite/10_git_config.rb,
|
26
26
|
pre-suite/20_pe_r10k.rb,
|
27
|
-
pre-suite/30_test_utils.rb,
|
28
27
|
EOS
|
29
28
|
common_setup.gsub!("\n", '')
|
30
29
|
|
@@ -45,8 +44,8 @@ EOS
|
|
45
44
|
|
46
45
|
t.add_env do |env|
|
47
46
|
env.name = 'pe_dist_dir'
|
48
|
-
env.message = 'The location to download PE from example "
|
49
|
-
ENV['pe_dist_dir'] ||= "
|
47
|
+
env.message = 'The location to download PE from, for example "https://artifactory.delivery.puppetlabs.net/artifactory/generic_enterprise__local/20XX.X/ci-ready"'
|
48
|
+
ENV['pe_dist_dir'] ||= "https://artifactory.delivery.puppetlabs.net/artifactory/generic_enterprise__local/#{ENV['PE_FAMILY']}/ci-ready"
|
50
49
|
end
|
51
50
|
|
52
51
|
t.add_env do |env|
|
@@ -58,8 +58,8 @@ on(master, "mv #{r10k_config_path} #{r10k_config_bak_path}")
|
|
58
58
|
step 'Update the "r10k" Config'
|
59
59
|
create_remote_file(master, r10k_config_path, r10k_conf)
|
60
60
|
|
61
|
-
step 'Download license file from
|
62
|
-
curl_on(master, '
|
61
|
+
step 'Download license file from artifactory'
|
62
|
+
curl_on(master, 'https://artifactory.delivery.puppetlabs.net/artifactory/generic/r10k_test_license.key -o /etc/puppetlabs/license.key')
|
63
63
|
|
64
64
|
step 'Inject New "site.pp" to the "production" Environment'
|
65
65
|
inject_site_pp(master, site_pp_path, site_pp)
|
@@ -86,8 +86,8 @@ on(master, "mv #{r10k_config_path} #{r10k_config_bak_path}")
|
|
86
86
|
step 'Update the "r10k" Config'
|
87
87
|
create_remote_file(master, r10k_config_path, r10k_conf)
|
88
88
|
|
89
|
-
step 'Download license file from
|
90
|
-
curl_on(master, '
|
89
|
+
step 'Download license file from artifactory'
|
90
|
+
curl_on(master, 'https://artifactory.delivery.puppetlabs.net/artifactory/generic/r10k_test_license.key -o /etc/puppetlabs/license.key')
|
91
91
|
|
92
92
|
step 'Checkout "production" Branch'
|
93
93
|
git_on(master, 'checkout production', git_environments_path)
|
@@ -20,17 +20,6 @@ r10k_config_bak_path = "#{r10k_config_path}.bak"
|
|
20
20
|
|
21
21
|
tmpfs_path = '/mnt/tmpfs'
|
22
22
|
|
23
|
-
if on(master, 'which python', :acceptable_exit_codes => [0, 1]).exit_code == 1
|
24
|
-
python_bin = 'python3'
|
25
|
-
else
|
26
|
-
python_bin = 'python'
|
27
|
-
end
|
28
|
-
|
29
|
-
file_bucket_path = '/opt/filebucket'
|
30
|
-
file_bucket_command_path = File.join(file_bucket_path, 'filebucketapp.py')
|
31
|
-
file_bucket_command = "#{python_bin} #{file_bucket_command_path}"
|
32
|
-
pattern_file_path = File.join(file_bucket_path, 'psuedo_random_128k.pat')
|
33
|
-
|
34
23
|
test_files_path = File.join(git_environments_path, 'test_files')
|
35
24
|
|
36
25
|
#In-line files
|
@@ -73,7 +62,8 @@ on(master, "mount -osize=10m tmpfs #{tmpfs_path} -t tmpfs")
|
|
73
62
|
step 'Create Large Binary File'
|
74
63
|
create_remote_file(master, File.join(git_environments_path, '.gitattributes'), '*.file binary')
|
75
64
|
on(master, "mkdir -p #{test_files_path}")
|
76
|
-
|
65
|
+
# create a 11 mb file to fill the mount
|
66
|
+
on(master, "dd if=/dev/urandom of=#{test_files_path}.test.file bs=1048576 count=11")
|
77
67
|
|
78
68
|
step 'Push Changes'
|
79
69
|
git_add_commit_push(master, 'production', 'Add large file.', git_environments_path)
|
@@ -21,16 +21,6 @@ helloworld_module_path = File.join(local_files_root_path, 'modules', 'helloworld
|
|
21
21
|
test_files = 'test_files'
|
22
22
|
test_files_path = File.join(git_environments_path, test_files)
|
23
23
|
|
24
|
-
if on(master, 'which python', :acceptable_exit_codes => [0, 1]).exit_code == 1
|
25
|
-
python_bin = 'python3'
|
26
|
-
else
|
27
|
-
python_bin = 'python'
|
28
|
-
end
|
29
|
-
|
30
|
-
file_bucket_path = '/opt/filebucket'
|
31
|
-
file_bucket_command_path = File.join(file_bucket_path, 'filebucketapp.py')
|
32
|
-
file_bucket_command = "#{python_bin} #{file_bucket_command_path}"
|
33
|
-
|
34
24
|
#Manifest
|
35
25
|
site_pp_path = File.join(git_environments_path, 'manifests', 'site.pp')
|
36
26
|
site_pp = create_site_pp(master_certname, ' include helloworld')
|
@@ -60,7 +50,8 @@ inject_site_pp(master, site_pp_path, site_pp)
|
|
60
50
|
step 'Create 10,000 Files'
|
61
51
|
create_remote_file(master, File.join(git_environments_path, '.gitattributes'), '*.file binary')
|
62
52
|
on(master, "mkdir -p #{test_files_path}")
|
63
|
-
|
53
|
+
# create 10000 1k files with random text
|
54
|
+
on(master, "for n in {1..10000}; do dd if=/dev/urandom of=#{test_files_path}/test$( printf %03d \"$n\" ).file bs=1024 count=1; done")
|
64
55
|
|
65
56
|
step 'Create MD5 Checksum of Files'
|
66
57
|
on(master, "cd #{test_files_path};md5sum *.file > #{checksum_file_name}")
|
@@ -21,17 +21,6 @@ helloworld_module_path = File.join(local_files_root_path, 'modules', 'helloworld
|
|
21
21
|
test_files = 'test_files'
|
22
22
|
test_files_path = File.join(git_environments_path, 'test_files')
|
23
23
|
|
24
|
-
if on(master, 'which python', :acceptable_exit_codes => [0, 1]).exit_code == 1
|
25
|
-
python_bin = 'python3'
|
26
|
-
else
|
27
|
-
python_bin = 'python'
|
28
|
-
end
|
29
|
-
|
30
|
-
file_bucket_path = '/opt/filebucket'
|
31
|
-
file_bucket_command_path = File.join(file_bucket_path, 'filebucketapp.py')
|
32
|
-
pattern_file_path = File.join(file_bucket_path, 'psuedo_random_128k.pat')
|
33
|
-
file_bucket_command = "#{python_bin} #{file_bucket_command_path}"
|
34
|
-
|
35
24
|
#Manifest
|
36
25
|
site_pp_path = File.join(git_environments_path, 'manifests', 'site.pp')
|
37
26
|
site_pp = create_site_pp(master_certname, ' include helloworld')
|
@@ -61,7 +50,8 @@ inject_site_pp(master, site_pp_path, site_pp)
|
|
61
50
|
step 'Create Large Binary Files'
|
62
51
|
create_remote_file(master, File.join(git_environments_path, '.gitattributes'), '*.file binary')
|
63
52
|
on(master, "mkdir -p #{test_files_path}")
|
64
|
-
|
53
|
+
# create 10 25 MB files with random characters
|
54
|
+
on(master, "for n in {1..10}; do dd if=/dev/urandom of=#{test_files_path}/test$( printf %03d \"$n\" ).file bs=1048576 count=25; done")
|
65
55
|
|
66
56
|
step 'Create MD5 Checksum of Files'
|
67
57
|
on(master, "cd #{test_files_path};md5sum *.file > #{checksum_file_name}")
|
@@ -109,7 +109,7 @@ module R10K
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def visit_puppetfile(puppetfile)
|
112
|
-
puppetfile.load
|
112
|
+
puppetfile.load(@opts[:'default-branch-override'])
|
113
113
|
|
114
114
|
yield
|
115
115
|
|
@@ -125,11 +125,24 @@ module R10K
|
|
125
125
|
end
|
126
126
|
|
127
127
|
def write_environment_info!(environment, started_at, success)
|
128
|
+
module_deploys = []
|
129
|
+
begin
|
130
|
+
environment.puppetfile.modules.each do |mod|
|
131
|
+
name = mod.name
|
132
|
+
version = mod.version
|
133
|
+
sha = mod.repo.head rescue nil
|
134
|
+
module_deploys.push({:name => name, :version => version, :sha => sha})
|
135
|
+
end
|
136
|
+
rescue
|
137
|
+
logger.debug("Unable to get environment module deploy data for .r10k-deploy.json at #{environment.path}")
|
138
|
+
end
|
139
|
+
|
128
140
|
File.open("#{environment.path}/.r10k-deploy.json", 'w') do |f|
|
129
141
|
deploy_info = environment.info.merge({
|
130
142
|
:started_at => started_at,
|
131
143
|
:finished_at => Time.new,
|
132
144
|
:deploy_success => success,
|
145
|
+
:module_deploys => module_deploys,
|
133
146
|
})
|
134
147
|
|
135
148
|
f.puts(JSON.pretty_generate(deploy_info))
|
@@ -146,7 +159,7 @@ module R10K
|
|
146
159
|
end
|
147
160
|
|
148
161
|
def allowed_initialize_opts
|
149
|
-
super.merge(puppetfile: :self, cachedir: :self, :'no-force' => :self)
|
162
|
+
super.merge(puppetfile: :self, cachedir: :self, :'no-force' => :self, :'default-branch-override' => :self)
|
150
163
|
end
|
151
164
|
end
|
152
165
|
end
|
data/lib/r10k/cli/deploy.rb
CHANGED
@@ -53,6 +53,7 @@ scheduled. On subsequent deployments, Puppetfile deployment will default to off.
|
|
53
53
|
DESCRIPTION
|
54
54
|
|
55
55
|
flag :p, :puppetfile, 'Deploy modules from a puppetfile'
|
56
|
+
required nil, :'default-branch-override', 'Specify a branchname to override the default branch in the puppetfile'
|
56
57
|
|
57
58
|
runner R10K::Action::CriRunner.wrap(R10K::Action::Deploy::Environment)
|
58
59
|
end
|
data/lib/r10k/module/git.rb
CHANGED
@@ -23,6 +23,11 @@ class R10K::Module::Git < R10K::Module::Base
|
|
23
23
|
# @return [String]
|
24
24
|
attr_reader :desired_ref
|
25
25
|
|
26
|
+
# @!attribute [r] default_ref
|
27
|
+
# @api private
|
28
|
+
# @return [String]
|
29
|
+
attr_reader :default_ref
|
30
|
+
|
26
31
|
def initialize(title, dirname, args, environment=nil)
|
27
32
|
super
|
28
33
|
|
data/lib/r10k/puppetfile.rb
CHANGED
@@ -55,17 +55,20 @@ class Puppetfile
|
|
55
55
|
@loaded = false
|
56
56
|
end
|
57
57
|
|
58
|
-
def load
|
58
|
+
def load(default_branch_override = nil)
|
59
59
|
if File.readable? @puppetfile_path
|
60
|
-
self.load!
|
60
|
+
self.load!(default_branch_override)
|
61
61
|
else
|
62
62
|
logger.debug _("Puppetfile %{path} missing or unreadable") % {path: @puppetfile_path.inspect}
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def load!
|
66
|
+
def load!(default_branch_override = nil)
|
67
|
+
@default_branch_override = default_branch_override
|
68
|
+
|
67
69
|
dsl = R10K::Puppetfile::DSL.new(self)
|
68
70
|
dsl.instance_eval(puppetfile_contents, @puppetfile_path)
|
71
|
+
|
69
72
|
validate_no_duplicate_names(@modules)
|
70
73
|
@loaded = true
|
71
74
|
rescue SyntaxError, LoadError, ArgumentError => e
|
@@ -107,6 +110,10 @@ class Puppetfile
|
|
107
110
|
install_path = @moduledir
|
108
111
|
end
|
109
112
|
|
113
|
+
if args.is_a?(Hash) && @default_branch_override != nil
|
114
|
+
args[:default_branch] = @default_branch_override
|
115
|
+
end
|
116
|
+
|
110
117
|
# Keep track of all the content this Puppetfile is managing to enable purging.
|
111
118
|
@managed_content[install_path] = Array.new unless @managed_content.has_key?(install_path)
|
112
119
|
|
@@ -121,7 +128,9 @@ class Puppetfile
|
|
121
128
|
def managed_directories
|
122
129
|
self.load unless @loaded
|
123
130
|
|
124
|
-
@managed_content.keys
|
131
|
+
dirs = @managed_content.keys
|
132
|
+
dirs.delete(real_basedir)
|
133
|
+
dirs
|
125
134
|
end
|
126
135
|
|
127
136
|
# Returns an array of the full paths to all the content being managed.
|
@@ -173,8 +182,6 @@ class Puppetfile
|
|
173
182
|
end
|
174
183
|
|
175
184
|
def validate_install_path(path, modname)
|
176
|
-
real_basedir = Pathname.new(basedir).cleanpath.to_s
|
177
|
-
|
178
185
|
unless /^#{Regexp.escape(real_basedir)}.*/ =~ path
|
179
186
|
raise R10K::Error.new("Puppetfile cannot manage content '#{modname}' outside of containing environment: #{path} is not within #{real_basedir}")
|
180
187
|
end
|
@@ -182,6 +189,10 @@ class Puppetfile
|
|
182
189
|
true
|
183
190
|
end
|
184
191
|
|
192
|
+
def real_basedir
|
193
|
+
Pathname.new(basedir).cleanpath.to_s
|
194
|
+
end
|
195
|
+
|
185
196
|
class DSL
|
186
197
|
# A barebones implementation of the Puppetfile DSL
|
187
198
|
#
|