r10k 2.6.9 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +9 -16
- data/CHANGELOG.mkd +23 -36
- data/Gemfile +2 -1
- data/MAINTAINERS +18 -0
- data/README.mkd +1 -5
- data/bin/r10k +2 -2
- data/doc/common-patterns.mkd +2 -2
- data/doc/dynamic-environments/configuration.mkd +1 -2
- data/doc/dynamic-environments/quickstart.mkd +3 -3
- data/doc/dynamic-environments/usage.mkd +0 -12
- data/doc/puppetfile.mkd +0 -18
- data/docker/Gemfile +13 -0
- data/docker/ci/build +72 -0
- data/docker/distelli-manifest.yml +4 -0
- data/docker/r10k/Dockerfile +41 -0
- data/docker/r10k/spec/dockerfile_spec.rb +16 -0
- data/integration/Gemfile +4 -2
- data/integration/Rakefile +3 -2
- data/integration/pre-suite/00_pe_install.rb +0 -1
- data/integration/pre-suite/30_test_utils.rb +17 -0
- data/integration/scripts/README.mkd +86 -0
- data/integration/scripts/setup_r10k_env_centos5.sh +23 -0
- data/integration/scripts/setup_r10k_env_centos6.sh +23 -0
- data/integration/scripts/setup_r10k_env_rhel7.sh +23 -0
- data/integration/scripts/setup_r10k_env_sles11.sh +23 -0
- data/integration/scripts/setup_r10k_env_sles12.sh +23 -0
- data/integration/scripts/setup_r10k_env_ubuntu1004.sh +23 -0
- data/integration/scripts/setup_r10k_env_ubuntu1204.sh +23 -0
- data/integration/scripts/setup_r10k_env_ubuntu1404.sh +23 -0
- data/integration/tests/basic_functionality/install_pe_only_module_with_puppetfile.rb +2 -2
- data/integration/tests/basic_functionality/negative/attempt_to_install_peonly_module_without_license.rb +71 -0
- data/integration/tests/basic_functionality/proxy_with_pe_only_module.rb +2 -2
- data/integration/tests/git_source/HTTP_proxy_and_git_source.rb +2 -2
- data/integration/tests/i18n/deploy_module_with_unicode_in_file_name.rb +64 -0
- data/integration/tests/purging/does_not_purge_files_on_white_list.rb +93 -0
- data/integration/tests/purging/invalid_whitelist_types.rb +63 -0
- data/integration/tests/user_scenario/basic_workflow/negative/neg_disk_full.rb +12 -2
- data/integration/tests/user_scenario/basic_workflow/negative/neg_duplicate_module_names.rb +1 -8
- data/integration/tests/user_scenario/basic_workflow/single_env_10000_files.rb +11 -2
- data/integration/tests/user_scenario/basic_workflow/single_env_large_files.rb +12 -2
- data/lib/r10k/action/deploy/environment.rb +2 -15
- data/lib/r10k/action/puppetfile/check.rb +1 -1
- data/lib/r10k/action/puppetfile/cri_runner.rb +1 -13
- data/lib/r10k/action/puppetfile/purge.rb +1 -1
- data/lib/r10k/cli/deploy.rb +0 -1
- data/lib/r10k/cli/puppetfile.rb +4 -0
- data/lib/r10k/environment/base.rb +7 -1
- data/lib/r10k/environment/svn.rb +1 -1
- data/lib/r10k/forge/module_release.rb +2 -2
- data/lib/r10k/git/rugged/base_repository.rb +6 -3
- data/lib/r10k/git/rugged/working_repository.rb +10 -1
- data/lib/r10k/git/shellgit/base_repository.rb +27 -8
- data/lib/r10k/git/shellgit/working_repository.rb +20 -6
- data/lib/r10k/git/stateful_repository.rb +0 -1
- data/lib/r10k/module/git.rb +0 -5
- data/lib/r10k/puppetfile.rb +22 -27
- data/lib/r10k/source/base.rb +6 -0
- data/lib/r10k/source/git.rb +2 -2
- data/lib/r10k/source/svn.rb +4 -2
- data/lib/r10k/util/purgeable.rb +4 -2
- data/lib/r10k/util/subprocess/runner/posix.rb +3 -3
- data/lib/r10k/version.rb +1 -4
- data/locales/r10k.pot +23 -19
- data/r10k.gemspec +4 -8
- data/r10k.yaml.example +6 -0
- data/spec/fixtures/unit/puppetfile/duplicate-module-error/Puppetfile +10 -0
- data/spec/fixtures/unit/puppetfile/name-error/Puppetfile +1 -0
- data/spec/shared-examples/git/working_repository.rb +46 -0
- data/spec/unit/action/deploy/environment_spec.rb +0 -63
- data/spec/unit/action/puppetfile/check_spec.rb +24 -9
- data/spec/unit/action/puppetfile/cri_runner_spec.rb +2 -20
- data/spec/unit/action/puppetfile/install_spec.rb +16 -16
- data/spec/unit/action/puppetfile/purge_spec.rb +29 -6
- data/spec/unit/forge/module_release_spec.rb +10 -6
- data/spec/unit/git/stateful_repository_spec.rb +1 -4
- data/spec/unit/puppetfile_spec.rb +43 -36
- metadata +33 -48
- data/.github/pull_request_template.md +0 -4
- data/.github/workflows/release.yml +0 -36
- data/CODEOWNERS +0 -1
- data/spec/fixtures/unit/puppetfile/default-branch-override/Puppetfile +0 -5
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'git_utils'
|
2
|
+
require 'r10k_utils'
|
3
|
+
require 'master_manipulator'
|
4
|
+
require 'beaker-qa-i18n'
|
5
|
+
|
6
|
+
test_name 'Deploy module with unicode file name'
|
7
|
+
|
8
|
+
#Init
|
9
|
+
master_certname = on(master, puppet('config', 'print', 'certname')).stdout.rstrip
|
10
|
+
git_environments_path = '/root/environments'
|
11
|
+
last_commit = git_last_commit(master, git_environments_path)
|
12
|
+
local_files_root_path = ENV['FILES'] || 'files'
|
13
|
+
helloworld_module_path = File.join(local_files_root_path, 'modules', 'helloworld')
|
14
|
+
r10k_fqp = get_r10k_fqp(master)
|
15
|
+
|
16
|
+
#Manifest
|
17
|
+
site_pp_path = File.join(git_environments_path, 'manifests', 'site.pp')
|
18
|
+
site_pp = create_site_pp(master_certname, ' include helloworld')
|
19
|
+
|
20
|
+
#Verification
|
21
|
+
notify_message_regex = /I am in the production environment/
|
22
|
+
|
23
|
+
#Teardown
|
24
|
+
teardown do
|
25
|
+
clean_up_r10k(master, last_commit, git_environments_path)
|
26
|
+
end
|
27
|
+
|
28
|
+
test_i18n_strings(10, [:syntax, :white_space]) do |test_string|
|
29
|
+
#Setup
|
30
|
+
test_file_path = File.join(git_environments_path, "site", 'helloworld', 'manifests', test_string)
|
31
|
+
|
32
|
+
step 'Checkout "production" Branch'
|
33
|
+
git_on(master, 'checkout production', git_environments_path)
|
34
|
+
|
35
|
+
step 'Copy "helloworld" Module to "production" Environment Git Repo'
|
36
|
+
scp_to(master, helloworld_module_path, File.join(git_environments_path, "site", 'helloworld'))
|
37
|
+
|
38
|
+
step 'Add unicode file to helloworld Module'
|
39
|
+
create_remote_file(master, test_file_path, 'test file contents')
|
40
|
+
|
41
|
+
step 'Inject New "site.pp" to the "production" Environment'
|
42
|
+
inject_site_pp(master, site_pp_path, site_pp)
|
43
|
+
|
44
|
+
step 'Push Changes'
|
45
|
+
git_add_commit_push(master, 'production', 'Update site.pp and add module.', git_environments_path)
|
46
|
+
|
47
|
+
#Tests
|
48
|
+
step 'Deploy "production" Environment via r10k'
|
49
|
+
on(master, "#{r10k_fqp} deploy environment -v")
|
50
|
+
|
51
|
+
step 'test deployment of Unicode file'
|
52
|
+
deployed_test_file_path = "/etc/puppetlabs/code/environments/production/site/helloworld/manifests/#{test_string}"
|
53
|
+
on(master, "test -f #{deployed_test_file_path}", :accept_all_exit_codes => true) do |result|
|
54
|
+
assert(result.exit_code == 0, "The unicode test file #{test_string} was not deployed by r10k")
|
55
|
+
end
|
56
|
+
|
57
|
+
agents.each do |agent|
|
58
|
+
step "Run Puppet Agent"
|
59
|
+
on(agent, puppet('agent', '--test', '--environment production'), :acceptable_exit_codes => 2) do |result|
|
60
|
+
assert_no_match(/Error:/, result.stderr, 'Unexpected error was detected!')
|
61
|
+
assert_match(notify_message_regex, result.stdout, 'Expected message not found!')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'git_utils'
|
2
|
+
require 'r10k_utils'
|
3
|
+
require 'master_manipulator'
|
4
|
+
test_name 'RK-257 - C98046 - r10k does not purge files on whitelist'
|
5
|
+
|
6
|
+
#Init
|
7
|
+
env_path = on(master, puppet('config print environmentpath')).stdout.rstrip
|
8
|
+
r10k_fqp = get_r10k_fqp(master)
|
9
|
+
git_environments_path = '/root/environments'
|
10
|
+
|
11
|
+
git_repo_path = '/git_repos'
|
12
|
+
git_repo_name = 'environments'
|
13
|
+
git_control_remote = File.join(git_repo_path, "#{git_repo_name}.git")
|
14
|
+
|
15
|
+
last_commit = git_last_commit(master, git_environments_path)
|
16
|
+
git_provider = ENV['GIT_PROVIDER']
|
17
|
+
|
18
|
+
r10k_config_path = get_r10k_config_file_path(master)
|
19
|
+
r10k_config_bak_path = "#{r10k_config_path}.bak"
|
20
|
+
|
21
|
+
teardown do
|
22
|
+
step 'Restore Original "r10k" Config'
|
23
|
+
on(master, "mv #{r10k_config_bak_path} #{r10k_config_path}")
|
24
|
+
|
25
|
+
clean_up_r10k(master, last_commit, git_environments_path)
|
26
|
+
end
|
27
|
+
|
28
|
+
# initalize file content
|
29
|
+
step 'Stub the forge'
|
30
|
+
stub_forge_on(master)
|
31
|
+
|
32
|
+
step 'Backup Current "r10k" Config'
|
33
|
+
on(master, "mv #{r10k_config_path} #{r10k_config_bak_path}")
|
34
|
+
|
35
|
+
r10k_conf = <<-CONF
|
36
|
+
cachedir: '/var/cache/r10k'
|
37
|
+
git:
|
38
|
+
provider: '#{git_provider}'
|
39
|
+
sources:
|
40
|
+
control:
|
41
|
+
basedir: "#{env_path}"
|
42
|
+
remote: "#{git_control_remote}"
|
43
|
+
deploy:
|
44
|
+
purge_levels: ['deployment', 'environment', 'puppetfile']
|
45
|
+
purge_whitelist: ['**/*.pp']
|
46
|
+
CONF
|
47
|
+
|
48
|
+
step 'Update the "r10k" Config'
|
49
|
+
create_remote_file(master, r10k_config_path, r10k_conf)
|
50
|
+
|
51
|
+
step 'Copy Puppetfile to "production" Environment Git Repo'
|
52
|
+
create_remote_file(master, "#{git_environments_path}/Puppetfile", "mod 'puppetlabs-stdlib' \n mod 'puppetlabs-motd'")
|
53
|
+
|
54
|
+
step 'Push Changes'
|
55
|
+
git_add_commit_push(master, 'production', 'add Puppetfile', git_environments_path)
|
56
|
+
|
57
|
+
step 'Deploy production'
|
58
|
+
on(master, "#{r10k_fqp} deploy environment -p")
|
59
|
+
|
60
|
+
step 'commit a new Puppetfile to production'
|
61
|
+
create_remote_file(master, "#{git_environments_path}/Puppetfile", 'mod "puppetlabs-motd"')
|
62
|
+
|
63
|
+
step 'Push Changes'
|
64
|
+
git_add_commit_push(master, 'production', 'add Puppetfile', git_environments_path)
|
65
|
+
|
66
|
+
step 'create test pp files'
|
67
|
+
do_not_purge = [
|
68
|
+
"/etc/puppetlabs/code/environments/production/environment_level.pp",
|
69
|
+
"/etc/puppetlabs/code/environments/production/site/environment_level.pp"
|
70
|
+
].each do |file|
|
71
|
+
create_remote_file(master, file, 'this is a test')
|
72
|
+
end
|
73
|
+
|
74
|
+
purge = [
|
75
|
+
"/etc/puppetlabs/code/environments/production/environment_level.zz",
|
76
|
+
"/etc/puppetlabs/code/environments/production/site/environment_level.zz"
|
77
|
+
].each do |file|
|
78
|
+
create_remote_file(master, file, 'this is a test')
|
79
|
+
end
|
80
|
+
|
81
|
+
#TEST
|
82
|
+
step 'Deploy again and check files'
|
83
|
+
on(master, "#{r10k_fqp} deploy environment -p")
|
84
|
+
|
85
|
+
purge.each do |file|
|
86
|
+
assert_message = "The file #{file}\n was not purged, it was expected to be"
|
87
|
+
assert(on(master, "test -f #{file}", :accept_all_exit_codes => true).exit_code == 1, assert_message)
|
88
|
+
end
|
89
|
+
|
90
|
+
do_not_purge.each do |file|
|
91
|
+
assert_message = "The file #{file}\n was purged, it was not expected to be"
|
92
|
+
assert(on(master, "test -f #{file}", :accept_all_exit_codes => true).exit_code == 0, assert_message)
|
93
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'git_utils'
|
2
|
+
require 'r10k_utils'
|
3
|
+
require 'master_manipulator'
|
4
|
+
test_name 'RK-257 - C98043 - verify default whitelist only accepts strings or array of strings'
|
5
|
+
|
6
|
+
#Init
|
7
|
+
env_path = on(master, puppet('config print environmentpath')).stdout.rstrip
|
8
|
+
r10k_fqp = get_r10k_fqp(master)
|
9
|
+
git_environments_path = '/root/environments'
|
10
|
+
|
11
|
+
git_repo_path = '/git_repos'
|
12
|
+
git_repo_name = 'environments'
|
13
|
+
git_control_remote = File.join(git_repo_path, "#{git_repo_name}.git")
|
14
|
+
|
15
|
+
last_commit = git_last_commit(master, git_environments_path)
|
16
|
+
git_provider = ENV['GIT_PROVIDER']
|
17
|
+
|
18
|
+
r10k_config_path = get_r10k_config_file_path(master)
|
19
|
+
r10k_config_bak_path = "#{r10k_config_path}.bak"
|
20
|
+
|
21
|
+
#invalid content to test
|
22
|
+
hash_whitelist = '{:cats => \'cats.txt\'}'
|
23
|
+
invalid_array_content_whitelist = '[\'cats.txt\', [:broken]]'
|
24
|
+
|
25
|
+
teardown do
|
26
|
+
step 'Restore Original "r10k" Config'
|
27
|
+
on(master, "mv #{r10k_config_bak_path} #{r10k_config_path}")
|
28
|
+
|
29
|
+
clean_up_r10k(master, last_commit, git_environments_path)
|
30
|
+
end
|
31
|
+
|
32
|
+
# initalize file content
|
33
|
+
step 'Stub the forge'
|
34
|
+
stub_forge_on(master)
|
35
|
+
|
36
|
+
step 'Backup Current "r10k" Config'
|
37
|
+
on(master, "mv #{r10k_config_path} #{r10k_config_bak_path}")
|
38
|
+
|
39
|
+
[hash_whitelist, invalid_array_content_whitelist].each do |whitelist_content|
|
40
|
+
r10k_conf = <<-CONF
|
41
|
+
cachedir: '/var/cache/r10k'
|
42
|
+
git:
|
43
|
+
provider: '#{git_provider}'
|
44
|
+
sources:
|
45
|
+
control:
|
46
|
+
basedir: "#{env_path}"
|
47
|
+
remote: "#{git_control_remote}"
|
48
|
+
deploy:
|
49
|
+
purge_whitelist: #{whitelist_content}
|
50
|
+
CONF
|
51
|
+
|
52
|
+
step 'Update the "r10k" Config'
|
53
|
+
create_remote_file(master, r10k_config_path, r10k_conf)
|
54
|
+
|
55
|
+
step 'Deploy r10k, and verify that invalid whitelist content causes error'
|
56
|
+
on(master, "#{r10k_fqp} deploy environment -p", :accept_all_exit_codes => true) do |result|
|
57
|
+
error = /did not find expected node content while parsing a flow node/
|
58
|
+
error_message = 'whitelist content did not generate expected error'
|
59
|
+
expect_failure('RK-263') do
|
60
|
+
assert_no_match(result.stdout, error, error_message)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -20,6 +20,17 @@ 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
|
+
|
23
34
|
test_files_path = File.join(git_environments_path, 'test_files')
|
24
35
|
|
25
36
|
#In-line files
|
@@ -62,8 +73,7 @@ on(master, "mount -osize=10m tmpfs #{tmpfs_path} -t tmpfs")
|
|
62
73
|
step 'Create Large Binary File'
|
63
74
|
create_remote_file(master, File.join(git_environments_path, '.gitattributes'), '*.file binary')
|
64
75
|
on(master, "mkdir -p #{test_files_path}")
|
65
|
-
#
|
66
|
-
on(master, "dd if=/dev/urandom of=#{test_files_path}.test.file bs=1048576 count=11")
|
76
|
+
on(master, "#{file_bucket_command} -s 11 -f #{test_files_path}/test.file -d #{pattern_file_path}")
|
67
77
|
|
68
78
|
step 'Push Changes'
|
69
79
|
git_add_commit_push(master, 'production', 'Add large file.', git_environments_path)
|
@@ -40,12 +40,5 @@ git_add_commit_push(master, 'production', 'Add modules.', git_environments_path)
|
|
40
40
|
#Tests
|
41
41
|
step 'Attempt to Deploy via r10k'
|
42
42
|
on(master, "#{r10k_fqp} deploy environment -v -p", :acceptable_exit_codes => [0, 1]) do |result|
|
43
|
-
|
44
|
-
assert_equal(1, result.exit_code, "Expected command to indicate error with exit code")
|
45
|
-
end
|
46
|
-
|
47
|
-
expect_failure('Expected module to be deployed twice due to RK-101') do
|
48
|
-
matches = result.stderr.scan(deploy_str)
|
49
|
-
assert_equal(1, matches.size, "Expected motd module to be deployed once, but deployed #{matches.size}) times")
|
50
|
-
end
|
43
|
+
assert_equal(1, result.exit_code, "Expected command to indicate error with exit code")
|
51
44
|
end
|
@@ -21,6 +21,16 @@ 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
|
+
|
24
34
|
#Manifest
|
25
35
|
site_pp_path = File.join(git_environments_path, 'manifests', 'site.pp')
|
26
36
|
site_pp = create_site_pp(master_certname, ' include helloworld')
|
@@ -50,8 +60,7 @@ inject_site_pp(master, site_pp_path, site_pp)
|
|
50
60
|
step 'Create 10,000 Files'
|
51
61
|
create_remote_file(master, File.join(git_environments_path, '.gitattributes'), '*.file binary')
|
52
62
|
on(master, "mkdir -p #{test_files_path}")
|
53
|
-
#
|
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")
|
63
|
+
on(master, "#{file_bucket_command} -k -c 10000 -p #{test_files_path}/test -u .file")
|
55
64
|
|
56
65
|
step 'Create MD5 Checksum of Files'
|
57
66
|
on(master, "cd #{test_files_path};md5sum *.file > #{checksum_file_name}")
|
@@ -21,6 +21,17 @@ 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
|
+
|
24
35
|
#Manifest
|
25
36
|
site_pp_path = File.join(git_environments_path, 'manifests', 'site.pp')
|
26
37
|
site_pp = create_site_pp(master_certname, ' include helloworld')
|
@@ -50,8 +61,7 @@ inject_site_pp(master, site_pp_path, site_pp)
|
|
50
61
|
step 'Create Large Binary Files'
|
51
62
|
create_remote_file(master, File.join(git_environments_path, '.gitattributes'), '*.file binary')
|
52
63
|
on(master, "mkdir -p #{test_files_path}")
|
53
|
-
#
|
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")
|
64
|
+
on(master, "#{file_bucket_command} -c 10 -s 25 -p #{test_files_path}/test -u .file -d #{pattern_file_path}")
|
55
65
|
|
56
66
|
step 'Create MD5 Checksum of Files'
|
57
67
|
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
|
113
113
|
|
114
114
|
yield
|
115
115
|
|
@@ -125,24 +125,11 @@ 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
|
-
|
140
128
|
File.open("#{environment.path}/.r10k-deploy.json", 'w') do |f|
|
141
129
|
deploy_info = environment.info.merge({
|
142
130
|
:started_at => started_at,
|
143
131
|
:finished_at => Time.new,
|
144
132
|
:deploy_success => success,
|
145
|
-
:module_deploys => module_deploys,
|
146
133
|
})
|
147
134
|
|
148
135
|
f.puts(JSON.pretty_generate(deploy_info))
|
@@ -159,7 +146,7 @@ module R10K
|
|
159
146
|
end
|
160
147
|
|
161
148
|
def allowed_initialize_opts
|
162
|
-
super.merge(puppetfile: :self, cachedir: :self, :'no-force' => :self
|
149
|
+
super.merge(puppetfile: :self, cachedir: :self, :'no-force' => :self)
|
163
150
|
end
|
164
151
|
end
|
165
152
|
end
|
@@ -3,32 +3,20 @@ require 'r10k/action/cri_runner'
|
|
3
3
|
module R10K
|
4
4
|
module Action
|
5
5
|
module Puppetfile
|
6
|
-
# Extend the default Cri Runner
|
7
|
-
# variables.
|
6
|
+
# Extend the default Cri Runner with Puppetfile specific opts
|
8
7
|
#
|
9
8
|
# @api private
|
10
|
-
# @deprecated The use of these environment variables is deprecated and
|
11
|
-
# will be removed in 3.0.0.
|
12
9
|
class CriRunner < R10K::Action::CriRunner
|
13
10
|
|
14
11
|
include R10K::Logging
|
15
12
|
|
16
13
|
def handle_opts(opts)
|
17
14
|
opts[:root] ||= wd
|
18
|
-
if env['PUPPETFILE_DIR'] || env['PUPPETFILE']
|
19
|
-
logger.warn _("The use of the PUPPETFILE and PUPPETFILE_DIR environment variables is deprecated.")
|
20
|
-
end
|
21
|
-
opts[:moduledir] ||= env['PUPPETFILE_DIR']
|
22
|
-
opts[:puppetfile] ||= env['PUPPETFILE']
|
23
15
|
super(opts)
|
24
16
|
end
|
25
17
|
|
26
18
|
private
|
27
19
|
|
28
|
-
def env
|
29
|
-
ENV
|
30
|
-
end
|
31
|
-
|
32
20
|
def wd
|
33
21
|
Dir.getwd
|
34
22
|
end
|
data/lib/r10k/cli/deploy.rb
CHANGED
@@ -53,7 +53,6 @@ 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'
|
57
56
|
|
58
57
|
runner R10K::Action::CriRunner.wrap(R10K::Action::Deploy::Environment)
|
59
58
|
end
|
data/lib/r10k/cli/puppetfile.rb
CHANGED
@@ -44,6 +44,8 @@ Puppetfile (http://bombasticmonkey.com/librarian-puppet/).
|
|
44
44
|
name 'check'
|
45
45
|
usage 'check'
|
46
46
|
summary 'Try and load the Puppetfile to verify the syntax is correct.'
|
47
|
+
|
48
|
+
required nil, :puppetfile, 'Path to Puppetfile'
|
47
49
|
runner R10K::Action::Puppetfile::CriRunner.wrap(R10K::Action::Puppetfile::Check)
|
48
50
|
end
|
49
51
|
end
|
@@ -56,6 +58,8 @@ Puppetfile (http://bombasticmonkey.com/librarian-puppet/).
|
|
56
58
|
usage 'purge'
|
57
59
|
summary 'Purge unmanaged modules from a Puppetfile managed directory'
|
58
60
|
|
61
|
+
required nil, :moduledir, 'Path to install modules to'
|
62
|
+
required nil, :puppetfile, 'Path to Puppetfile'
|
59
63
|
runner R10K::Action::Puppetfile::CriRunner.wrap(R10K::Action::Puppetfile::Purge)
|
60
64
|
end
|
61
65
|
end
|
@@ -24,6 +24,11 @@ class R10K::Environment::Base
|
|
24
24
|
# @return [R10K::Puppetfile] The puppetfile instance associated with this environment
|
25
25
|
attr_reader :puppetfile
|
26
26
|
|
27
|
+
# @!attribute [r] puppetfile_name
|
28
|
+
# @api public
|
29
|
+
# @return [String] The puppetfile name (relative)
|
30
|
+
attr_reader :puppetfile_name
|
31
|
+
|
27
32
|
# Initialize the given environment.
|
28
33
|
#
|
29
34
|
# @param name [String] The unique name describing this environment.
|
@@ -36,11 +41,12 @@ class R10K::Environment::Base
|
|
36
41
|
@basedir = basedir
|
37
42
|
@dirname = dirname
|
38
43
|
@options = options
|
44
|
+
@puppetfile_name = options[:puppetfile_name]
|
39
45
|
|
40
46
|
@full_path = File.join(@basedir, @dirname)
|
41
47
|
@path = Pathname.new(File.join(@basedir, @dirname))
|
42
48
|
|
43
|
-
@puppetfile = R10K::Puppetfile.new(@full_path)
|
49
|
+
@puppetfile = R10K::Puppetfile.new(@full_path, nil, nil, @puppetfile_name)
|
44
50
|
@puppetfile.environment = self
|
45
51
|
end
|
46
52
|
|