puppet-magnum 3.1.5 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile.lock +7 -1
  5. data/LICENSE +1 -1
  6. data/README.md +19 -11
  7. data/Rakefile +0 -7
  8. data/VERSION +1 -1
  9. data/bin/puppet-magnum +0 -1
  10. data/generator_files/CHANGELOG.md.erb +1 -0
  11. data/generator_files/git/gitignore.erb +5 -7
  12. data/generator_files/puppet/common.yaml.erb +2 -0
  13. data/generator_files/puppet/hiera.yaml.erb +8 -0
  14. data/generator_files/puppet/init.pp.erb +1 -22
  15. data/generator_files/puppet/metadata.json.erb +2 -3
  16. data/generator_files/spec/acceptance/docker/ubuntu-server-1404-x64.yml.erb +14 -0
  17. data/generator_files/spec/acceptance/docker/ubuntu-server-1604-x64.yml.erb +14 -0
  18. data/generator_files/spec/acceptance/init_spec.rb.erb +16 -0
  19. data/generator_files/spec/acceptance/spec_helper_acceptance.rb.erb +33 -0
  20. data/generator_files/spec/acceptance/ubuntu-server-1404-x64.yml.erb +11 -0
  21. data/generator_files/spec/acceptance/ubuntu-server-1604-x64.yml.erb +11 -0
  22. data/generator_files/util/Gemfile.erb +5 -0
  23. data/generator_files/util/Rakefile.erb +43 -20
  24. data/generator_files/{puppet-magnum.init.erb → util/puppet-magnum.init.erb} +0 -0
  25. data/lib/puppet-magnum/generators/create_generator.rb +27 -81
  26. data/puppet-magnum.gemspec +2 -1
  27. metadata +27 -14
  28. data/generator_files/puppet/params.pp.erb +0 -16
  29. data/generator_files/spec/fixtures.yml.erb +0 -9
  30. data/generator_files/spec/rspec/init_spec.rb.erb +0 -6
  31. data/generator_files/spec/rspec/spec_helper.rb.erb +0 -10
  32. data/generator_files/spec/serverspec/init_spec.rb.erb +0 -5
  33. data/generator_files/vagrant/Vagrantfile.erb +0 -38
  34. data/generator_files/vagrant/environment/environment.conf.erb +0 -18
  35. data/generator_files/vagrant/environment/manifests/init.pp.erb +0 -1
  36. data/generator_files/vagrant/init.sh.erb +0 -38
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 003a8c71b4d188c9e3768fc6758478ecad5046ed
4
- data.tar.gz: 147017e94585043df5819052fe620ae4f8727522
3
+ metadata.gz: 748039c14ee38cd19f95edd8b2ed8a64881ff3c8
4
+ data.tar.gz: 1c2ecade7ad694e133d7b3217c85f5e049ce7414
5
5
  SHA512:
6
- metadata.gz: 3574bc027fba825698bafbfcc0caab9603cc05830d44d0d4c2c5c19ceaf18cc27956e125066a20f4c8b9fb639443fd526c2bb9c621804577e03d3ef3355d5b4c
7
- data.tar.gz: 93fa579d8aa99ee6606be9389fcc74e1fb0590bb0cde7495f9f5ba16d9e5b2038f9289f72d35f11c76818dd221eb82dedfbb112669236046fab1a174c443ed22
6
+ metadata.gz: '03933ffd363ec826f4f7bf636fd8467f98ce01aedc54b2935f07a11f34aeb65a6afa903c3ad92c319402e7f552eceb51fabf5343bdec6289e6f69180d74729eb'
7
+ data.tar.gz: d07bef53339d343b3363a464707363cd2435284db5b35fd7fbaeefc7713ca31538a2ebddceb4ab36f108503e092b4a8d1ce9c77647e918a0560bb1206dc57ed3
@@ -1 +1 @@
1
- 2.3.3
1
+ 2.4.1
@@ -1,3 +1,12 @@
1
+ ## [4.0.0]
2
+
3
+ ### IMPROVEMENTS:
4
+
5
+ * Upgrading to use Ruby `2.4.x` by default.
6
+ * Switching over to [Beaker](https://github.com/puppetlabs/beaker) for acceptance/integration testing. All tests are now through Beaker.
7
+ * Adding `hiera` v5 support; more [details](https://docs.puppet.com/puppet/4.10/hiera_migrate_modules.html).
8
+ * `puppet-magnum` 4.x is NOT backwards compatible with `puppet-magnum` 3.x managed repos.
9
+
1
10
  ## [3.1.5]
2
11
 
3
12
  ### IMPROVEMENTS:
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- puppet-magnum (3.1.5)
4
+ puppet-magnum (4.0.0)
5
+ beaker-hostgenerator (~> 0.8.4)
5
6
  bundler (>= 1.14.6)
6
7
  puppet (~> 4.10.0)
7
8
  puppet-lint (~> 2.2.1)
@@ -14,6 +15,10 @@ PATH
14
15
  GEM
15
16
  remote: https://rubygems.org/
16
17
  specs:
18
+ beaker-hostgenerator (0.8.4)
19
+ deep_merge (~> 1.0)
20
+ stringify-hash (~> 0.0.0)
21
+ deep_merge (1.1.1)
17
22
  diff-lcs (1.3)
18
23
  facter (2.4.6)
19
24
  fast_gettext (1.1.0)
@@ -61,6 +66,7 @@ GEM
61
66
  rspec
62
67
  rspec-support (3.5.0)
63
68
  sem_ver (0.1.1)
69
+ stringify-hash (0.0.2)
64
70
  text (1.3.1)
65
71
  thor (0.19.4)
66
72
  version (1.1.1)
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2013-2016 Tehmasp Chaudhri <tehmasp@chaudhri.me>
1
+ Copyright 2013-2017 Tehmasp Chaudhri <tehmasp@chaudhri.me>
2
2
 
3
3
  Licensed under the Apache License, Version 2.0 (the "License");
4
4
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  [![Build Status](https://travis-ci.org/tehmaspc/puppet-magnum.svg?branch=master)](https://travis-ci.org/tehmaspc/puppet-magnum)
4
4
 
5
+ **NOTE: `puppet-magnum` 4.x is NOT backwards compatible with `puppet-magnum` 3.x managed repos.**
6
+
5
7
  `puppet-magnum` is a tool for rapid, consistent, and best practice Puppet (4+) module development.
6
8
 
7
9
  `puppet-magnum` helps the Puppet module developer create or maintain a Puppet module and test the module with tools like the following:
@@ -15,10 +17,10 @@
15
17
 
16
18
  ### Requirements
17
19
 
18
- * Install Ruby 2.3.x.
20
+ * Install Ruby 2.4.x.
19
21
  * Install [Vagrant](https://www.vagrantup.com).
20
- * Install [vagrant-serverspec](https://github.com/jvoorhis/vagrant-serverspec).
21
- * Install [vagrant-cachier](https://github.com/fgrehm/vagrant-cachier) (optional).
22
+ * Install [VirtualBox](https://www.virtualbox.org/wiki/VirtualBox).
23
+ * Install [Docker](https://www.docker.com) (optional).
22
24
 
23
25
  ### Install `puppet-magnum`
24
26
 
@@ -32,23 +34,29 @@
32
34
  puppet-magnum module # Module related tasks. Type 'puppet-magnum module' for more help.
33
35
  puppet-magnum version # Display version and copyright information
34
36
 
35
- ## Example: Creating An `nginx` Puppet Module
37
+ ## Example: Creating an `nginx` Puppet Module
36
38
 
37
39
  The following shows how one can get started quickly creating an 'nginx' Puppet module:
38
40
 
39
41
  % puppet-magnum module create nginx
40
42
  create nginx/manifests
43
+ create nginx/data
41
44
  create nginx/templates
42
45
  create nginx/files
43
46
  create nginx/spec
44
- create nginx/serverspec
47
+ create nginx/spec/acceptance
48
+ create nginx/spec/acceptance/nodesets
45
49
  ...
46
- create nginx/Vagrantfile
47
- create nginx/.vagrant_puppet/init.sh
48
- create nginx/.vagrant_puppet/environments/vagrant/environment.conf
49
- create nginx/.vagrant_puppet/environments/vagrant/manifests/init.pp
50
- remove nginx/.puppet-magnum.init
51
50
  create nginx/.puppet-magnum.init
51
+ create nginx/metadata.json
52
+ create nginx/manifests/init.pp
53
+ create nginx/hiera.yaml
54
+ create nginx/data/common.yaml
55
+ create nginx/.rspec
56
+ create nginx/spec/acceptance/nginx_spec.rb
57
+ create nginx/spec/spec_helper_acceptance.rb
58
+ create nginx/spec/acceptance/nodesets/ubuntu-server-1404-x64.yml
59
+ create nginx/spec/acceptance/nodesets/ubuntu-server-1604-x64.yml
52
60
  remove nginx/.gitignore
53
61
  create nginx/.gitignore
54
62
  run git init from "./nginx"
@@ -78,7 +86,7 @@ Thanks to the following projects and folks!:
78
86
 
79
87
  ## Authors and License
80
88
 
81
- Copyright 2013-2016 Tehmasp Chaudhri <tehmasp@chaudhri.me>
89
+ Copyright 2013-2017 Tehmasp Chaudhri <tehmasp@chaudhri.me>
82
90
 
83
91
  Licensed under the Apache License, Version 2.0 (the "License");
84
92
  you may not use this file except in compliance with the License.
data/Rakefile CHANGED
@@ -10,11 +10,4 @@ RSpec::Core::RakeTask.new(:spec) do |t|
10
10
  t.rspec_opts = ['--color --format progress']
11
11
  end
12
12
 
13
- desc 'Display the list of available rake tasks'
14
- task :help do
15
- system 'rake -T'
16
- end
17
-
18
- task :unit => 'spec'
19
- task :test => 'spec'
20
13
  task :default => 'spec'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.5
1
+ 4.0.0
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.push File.expand_path('../../lib', __FILE__)
3
- require 'rubygems' # ruby1.9 doesn't 'require' it though
4
3
  require 'puppet-magnum'
5
4
 
6
5
  PuppetMagnum::Cli.start
@@ -0,0 +1 @@
1
+ ## [1.0.0]
@@ -15,6 +15,8 @@
15
15
  *.log
16
16
  *.sql
17
17
  *.sqlite
18
+ *.swp
19
+ *.vdi
18
20
  .DS_Store*
19
21
  ._*
20
22
  *~
@@ -30,11 +32,7 @@ Thumbs.db
30
32
  Gemfile.lock
31
33
  bin/*
32
34
  .bundle/*
35
+ .vagrant/*
33
36
  pkg
34
-
35
- .vagrant
36
- .vagrant_puppet/environments/vagrant/modules
37
-
38
- # ignore all fixtures modules, except this module.
39
- spec/fixtures/modules/*
40
- !spec/fixtures/modules/<%= module_name %>
37
+ junit
38
+ log
@@ -0,0 +1,2 @@
1
+ ---
2
+ <%= module_name %>::test_message: "foobar"
@@ -0,0 +1,8 @@
1
+ ---
2
+ version: 5
3
+ defaults:
4
+ datadir: data
5
+ data_hash: yaml_data
6
+ hierarchy:
7
+ - name: "common"
8
+ path: "common.yaml"
@@ -1,29 +1,8 @@
1
1
  # Class: <%= module_name %>
2
- # ===========================
2
+ # =========================
3
3
  #
4
4
  # Full description of class <%= module_name %> here.
5
5
  #
6
- # Parameters
7
- # ----------
8
- #
9
- # Document parameters here.
10
- #
11
- # * `sample parameter`
12
- # Explanation of what this parameter affects and what it defaults to.
13
- # e.g. "Specify one or more upstream ntp servers as an array."
14
- #
15
- # Variables
16
- # ---------
17
- #
18
- # Here you should define a list of variables that this module would require.
19
- #
20
- # * `sample variable`
21
- # Explanation of how this variable affects the function of this class and if
22
- # it has a default. e.g. "The parameter enc_ntp_servers must be set by the
23
- # External Node Classifier as a comma separated list of hostnames." (Note,
24
- # global variables should be avoided in favor of class parameters as
25
- # of Puppet 2.6.)
26
- #
27
6
  # Examples
28
7
  # --------
29
8
  #
@@ -7,20 +7,19 @@
7
7
  "dependencies": [
8
8
  {
9
9
  "name": "puppetlabs/stdlib",
10
- "version_requirement": ">= 3.2.0"
10
+ "version_requirement": ">= 4.16.0"
11
11
  }
12
12
  ],
13
13
  "operatingsystem_support": [
14
14
  {
15
15
  "operatingsystem": "Ubuntu",
16
16
  "operatingsystemrelease": [
17
- "14.04"
17
+ "16.04"
18
18
  ]
19
19
  }
20
20
  ],
21
21
  "source": "https://example.com",
22
22
  "project_page": "https://example.com",
23
23
  "issues_url": "https://example.com",
24
- "data_provider": null,
25
24
  "version": "1.0.0"
26
25
  }
@@ -0,0 +1,14 @@
1
+ ---
2
+ HOSTS:
3
+ ubuntu-1404-x64:
4
+ roles:
5
+ - agent
6
+ platform: ubuntu-14.04-amd64
7
+ hypervisor: docker
8
+ image: ubuntu:14.04
9
+ docker_preserve_image: true
10
+ CONFIG:
11
+ trace_limit: 200
12
+ masterless: true
13
+ log_level: verbose
14
+ type: aio
@@ -0,0 +1,14 @@
1
+ ---
2
+ HOSTS:
3
+ ubuntu-1604-x64:
4
+ roles:
5
+ - agent
6
+ platform: ubuntu-16.04-amd64
7
+ hypervisor: docker
8
+ image: ubuntu:16.04
9
+ docker_preserve_image: true
10
+ CONFIG:
11
+ trace_limit: 200
12
+ masterless: true
13
+ log_level: verbose
14
+ type: aio
@@ -0,0 +1,16 @@
1
+ require_relative '../spec_helper_acceptance'
2
+
3
+ describe '<%= module_name %>' do
4
+ let(:manifest) {
5
+ <<-EOS
6
+ include <%= module_name %>
7
+ EOS
8
+ }
9
+
10
+ it_behaves_like "an idempotent resource"
11
+
12
+ describe "something" do
13
+ it "does something"
14
+ end
15
+
16
+ end
@@ -0,0 +1,33 @@
1
+ require 'beaker-rspec'
2
+ require 'beaker/puppet_install_helper'
3
+
4
+ default_modules = [
5
+ "puppetlabs-stdlib",
6
+ ]
7
+
8
+ run_puppet_install_helper
9
+
10
+ RSpec.configure do |c|
11
+ proj_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
12
+
13
+ c.before :suite do
14
+ hosts.each do |host|
15
+
16
+ default_modules.each do |default_module|
17
+ on host, puppet("module install #{default_module}"), {:acceptable_exit_codes => [0]}
18
+ end
19
+
20
+ copy_module_to(host, :source => proj_root, :module_name => '<%= module_name %>')
21
+ end
22
+ end
23
+ end
24
+
25
+ shared_examples "an idempotent resource" do
26
+ it 'should apply without errors' do
27
+ apply_manifest(manifest, :catch_failures => true)
28
+ end
29
+
30
+ it 'should apply a second time without changes' do
31
+ apply_manifest(manifest, :catch_changes => true)
32
+ end
33
+ end
@@ -0,0 +1,11 @@
1
+ ---
2
+ HOSTS:
3
+ ubuntu-server-1404-x64:
4
+ roles:
5
+ - master
6
+ platform: ubuntu-14.04-amd64
7
+ box: puppetlabs/ubuntu-14.04-64-nocm
8
+ hypervisor: vagrant
9
+ CONFIG:
10
+ log_level: verbose
11
+ type: foss
@@ -0,0 +1,11 @@
1
+ ---
2
+ HOSTS:
3
+ ubuntu-server-1604-x64:
4
+ roles:
5
+ - master
6
+ platform: ubuntu-16.04-amd64
7
+ box: puppetlabs/ubuntu-16.04-64-nocm
8
+ hypervisor: vagrant
9
+ CONFIG:
10
+ log_level: verbose
11
+ type: foss
@@ -7,3 +7,8 @@ gem 'rspec', '~> 3.5.0'
7
7
  gem 'puppet-lint', '~> 2.2.1'
8
8
  gem 'rspec-puppet', '~> 2.5.0'
9
9
  gem 'puppetlabs_spec_helper', '~> 2.1.2'
10
+
11
+ # testing
12
+ gem 'beaker', '~> 3.13.0'
13
+ gem 'beaker-rspec', '~> 6.1.0'
14
+ gem 'beaker-puppet_install_helper', '~> 0.7.1'
@@ -3,28 +3,11 @@ require 'rspec/core/rake_task'
3
3
  require 'puppet-lint/tasks/puppet-lint'
4
4
  require 'puppetlabs_spec_helper/rake_tasks'
5
5
 
6
- desc 'Run unit tests'
7
- task :unit do
8
- Rake::Task[:spec_prep].invoke
9
- Rake::Task[:spec_standalone].invoke
10
- end
11
- task :spec => []; Rake::Task[:spec].clear
12
- task :spec => :unit
13
-
14
- desc 'Run integration tests'
15
- task :integ do
16
- Rake::Task[:spec_prep].invoke
17
-
18
- puts 'Launching Vagrant to run integration tests...'
19
- sh 'vagrant up --provision'
20
- end
21
-
22
- desc 'Run syntax, lint and unit tests'
6
+ desc 'Run syntax, lint and acceptance tests'
23
7
  task :test do
24
8
  Rake::Task[:syntax].invoke
25
9
  Rake::Task[:lint].invoke
26
- Rake::Task[:unit].invoke
27
- Rake::Task[:integ].invoke
10
+ Rake::Task[:acceptance].invoke
28
11
  end
29
12
 
30
13
  # puppet-lint options
@@ -32,10 +15,50 @@ Rake::Task[:lint].clear
32
15
  PuppetLint::RakeTask.new :lint do |config|
33
16
  config.ignore_paths = ['spec/**/*.pp']
34
17
  config.log_format = '%{path}:%{line}:%{check}:%{KIND}:%{message}'
35
- config.disable_checks = [ "class_inherits_from_params_class", "80chars" ]
18
+ config.disable_checks = [ 'class_inherits_from_params_class', '80chars' ]
36
19
  config.fail_on_warnings = false
37
20
  end
38
21
 
22
+ desc 'Run acceptance tests (VirtualBox)'
23
+ task :acceptance, [:all] do |t, args|
24
+
25
+ # beaker default options
26
+ ENV['PUPPET_INSTALL_TYPE'] = 'agent'
27
+ ENV['BEAKER_destroy'] = 'onpass'
28
+
29
+ all = args[:all]
30
+
31
+ unless all.nil?
32
+ Rake::Task['beaker:ubuntu-server-1404-x64'].invoke
33
+ end
34
+
35
+ Rake::Task['beaker:ubuntu-server-1604-x64'].invoke
36
+ end
37
+
38
+ desc 'Run acceptance tests (Docker/Ubuntu 1404)'
39
+ task :acceptance_docker1404 do
40
+
41
+ # beaker default options
42
+ ENV['PUPPET_INSTALL_TYPE'] = 'agent'
43
+ ENV['BEAKER_destroy'] = 'onpass'
44
+
45
+ ENV['BEAKER_set'] = 'docker/ubuntu-server-1404-x64'
46
+
47
+ Rake::Task['beaker'].invoke
48
+ end
49
+
50
+ desc 'Run acceptance tests (Docker/Ubuntu 1604)'
51
+ task :acceptance_docker1604 do
52
+
53
+ # beaker default options
54
+ ENV['PUPPET_INSTALL_TYPE'] = 'agent'
55
+ ENV['BEAKER_destroy'] = 'onpass'
56
+
57
+ ENV['BEAKER_set'] = 'docker/ubuntu-server-1604-x64'
58
+
59
+ Rake::Task['beaker'].invoke
60
+ end
61
+
39
62
  # remove undesired rake tasks
40
63
  task :build => []; Rake::Task[:build].clear
41
64
  task :clean => []; Rake::Task[:clean].clear
@@ -20,90 +20,51 @@ module PuppetMagnum
20
20
  class_option :copyright_holder,
21
21
  type: :string
22
22
 
23
- def write_emptydirs
24
- empty_directory target.join('manifests')
25
- empty_directory target.join('templates')
26
- empty_directory target.join('files')
27
- empty_directory target.join('spec')
28
- empty_directory target.join('serverspec')
29
- empty_directory target.join('.vagrant_puppet')
30
- end
23
+ def write_dirs
24
+ dirs = ['manifests', 'data', 'templates', 'files',
25
+ 'spec', 'spec/acceptance', 'spec/acceptance/nodesets', 'spec/acceptance/nodesets/docker',
26
+ ]
31
27
 
32
- def write_readme
33
- template 'README.md.erb', target.join('README.md')
28
+ dirs.each do |dir|
29
+ empty_directory target.join("#{dir}")
30
+ end
34
31
  end
35
32
 
36
- def write_changelog
33
+ def write_base_files
34
+ template license_file, target.join('LICENSE')
35
+ template 'README.md.erb', target.join('README.md')
37
36
  template 'CHANGELOG.md.erb', target.join('CHANGELOG.md')
38
37
  end
39
38
 
40
- def write_license
41
- template license_file, target.join('LICENSE')
42
- end
43
-
44
- def write_metadata_json
39
+ def write_puppet_files
45
40
  template 'puppet/metadata.json.erb', target.join('metadata.json')
46
- end
47
-
48
- def write_manifests_templates_files
49
- template 'puppet/init.pp.erb', target.join('manifests/init.pp')
50
- template 'puppet/params.pp.erb', target.join('manifests/params.pp')
41
+ template 'puppet/init.pp.erb', target.join('manifests/init.pp')
42
+ template 'puppet/hiera.yaml.erb', target.join('hiera.yaml')
43
+ template 'puppet/common.yaml.erb', target.join('data/common.yaml')
51
44
  end
52
45
 
53
46
  def write_spec_setup
54
- spec_dirs = [ 'classes', 'defines', 'functions', 'hosts', 'unit' ]
55
- spec_dirs.each do |dir|
56
- empty_directory target.join("spec/#{dir}")
57
- end
58
-
59
- empty_directory target.join('spec/fixtures/manifests')
60
- create_file target.join('spec/fixtures/manifests/site.pp')
61
-
62
- empty_directory target.join("spec/fixtures/modules/#{module_name}")
63
- spec_dirs = ['manifests', 'templates', 'files']
64
- spec_dirs.each { |spec_dir|
65
- remove_file target.join("spec/fixtures/modules/#{module_name}/#{spec_dir}")
66
- create_link target.join("spec/fixtures/modules/#{module_name}/#{spec_dir}"), "../../../../#{spec_dir}"
67
- }
68
-
69
- template 'spec/rspec/spec_helper.rb.erb', target.join('spec/spec_helper.rb')
70
- template 'spec/rspec/init_spec.rb.erb', target.join("spec/classes/#{module_name}_spec.rb")
71
-
72
47
  template 'spec/rspec.erb', target.join('.rspec')
73
- end
48
+ template 'spec/acceptance/init_spec.rb.erb', target.join("spec/acceptance/#{module_name}_spec.rb")
74
49
 
75
- def write_serverspec_setup
76
- template 'spec/serverspec/init_spec.rb.erb', target.join("serverspec/#{module_name}_spec.rb")
77
- end
50
+ # beaker test files
51
+ template 'spec/acceptance/spec_helper_acceptance.rb.erb', target.join('spec/spec_helper_acceptance.rb')
78
52
 
79
- def write_fixtures
80
- template 'spec/fixtures.yml.erb', target.join('.fixtures.yml')
81
- end
53
+ template 'spec/acceptance/ubuntu-server-1404-x64.yml.erb', target.join('spec/acceptance/nodesets/ubuntu-server-1404-x64.yml')
54
+ template 'spec/acceptance/ubuntu-server-1604-x64.yml.erb', target.join('spec/acceptance/nodesets/ubuntu-server-1604-x64.yml')
82
55
 
83
- def write_gemfile
84
- remove_file target.join('Gemfile')
85
- template 'util/Gemfile.erb', target.join('Gemfile')
56
+ template 'spec/acceptance/docker/ubuntu-server-1404-x64.yml.erb', target.join('spec/acceptance/nodesets/docker/ubuntu-server-1404-x64.yml')
57
+ template 'spec/acceptance/docker/ubuntu-server-1604-x64.yml.erb', target.join('spec/acceptance/nodesets/docker/ubuntu-server-1604-x64.yml')
86
58
  end
87
59
 
88
- def write_rakefile
60
+ def write_util_files
61
+ remove_file target.join('Gemfile')
89
62
  remove_file target.join('Rakefile')
90
- template 'util/Rakefile.erb', target.join('Rakefile')
91
- end
92
-
93
- def write_vagrantfile
94
- template 'vagrant/Vagrantfile.erb', target.join('Vagrantfile')
95
- template 'vagrant/init.sh.erb', target.join('.vagrant_puppet/init.sh')
96
-
97
- # create default puppet environment
98
- template 'vagrant/environment/environment.conf.erb',
99
- target.join('.vagrant_puppet/environments/vagrant/environment.conf')
100
- template 'vagrant/environment/manifests/init.pp.erb',
101
- target.join('.vagrant_puppet/environments/vagrant/manifests/init.pp')
102
- end
103
-
104
- def write_puppet_magnum_init
105
63
  remove_file target.join('.puppet-magnum.init')
106
- template 'puppet-magnum.init.erb', target.join('.puppet-magnum.init')
64
+
65
+ template 'util/Gemfile.erb', target.join('Gemfile')
66
+ template 'util/Rakefile.erb', target.join('Rakefile')
67
+ template 'util/puppet-magnum.init.erb', target.join('.puppet-magnum.init')
107
68
  end
108
69
 
109
70
  # due to the 'git add' operation, this function should be called last
@@ -121,10 +82,6 @@ module PuppetMagnum
121
82
 
122
83
  private
123
84
 
124
- def commented(content)
125
- content.split("\n").collect { |s| "# #{s}" }.join("\n")
126
- end
127
-
128
85
  def license_name
129
86
  case options[:license]
130
87
  when 'apachev2'; 'Apache 2.0'
@@ -149,17 +106,6 @@ module PuppetMagnum
149
106
  end
150
107
  end
151
108
 
152
- def which(cmd)
153
- exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
154
- ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
155
- exts.each { |ext|
156
- exe = File.join(path, "#{cmd}#{ext}")
157
- return exe if File.executable? exe
158
- }
159
- end
160
- return nil
161
- end
162
-
163
109
  def maintainer
164
110
  options[:maintainer]
165
111
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.required_ruby_version = '>= 2.3.0'
23
+ spec.required_ruby_version = '>= 2.4.0'
24
24
 
25
25
  spec.add_development_dependency 'sem_ver', '>= 0.1.1'
26
26
  spec.add_development_dependency 'rake', '>= 12.0.0'
@@ -34,5 +34,6 @@ Gem::Specification.new do |spec|
34
34
  spec.add_runtime_dependency 'puppet-lint', '~> 2.2.1'
35
35
  spec.add_runtime_dependency 'rspec-puppet', '~> 2.5.0'
36
36
  spec.add_runtime_dependency 'puppetlabs_spec_helper', '~> 2.1.2'
37
+ spec.add_runtime_dependency 'beaker-hostgenerator', '~> 0.8.4'
37
38
 
38
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-magnum
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.5
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tehmasp Chaudhri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-25 00:00:00.000000000 Z
11
+ date: 2017-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sem_ver
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: 2.1.2
153
+ - !ruby/object:Gem::Dependency
154
+ name: beaker-hostgenerator
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 0.8.4
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.8.4
153
167
  description: puppet-magnum - a tool for rapid, consistent, and best practice Puppet
154
168
  module development.
155
169
  email:
@@ -177,21 +191,20 @@ files:
177
191
  - generator_files/licenses/apachev2.erb
178
192
  - generator_files/licenses/mit.erb
179
193
  - generator_files/licenses/reserved.erb
180
- - generator_files/puppet-magnum.init.erb
194
+ - generator_files/puppet/common.yaml.erb
195
+ - generator_files/puppet/hiera.yaml.erb
181
196
  - generator_files/puppet/init.pp.erb
182
197
  - generator_files/puppet/metadata.json.erb
183
- - generator_files/puppet/params.pp.erb
184
- - generator_files/spec/fixtures.yml.erb
198
+ - generator_files/spec/acceptance/docker/ubuntu-server-1404-x64.yml.erb
199
+ - generator_files/spec/acceptance/docker/ubuntu-server-1604-x64.yml.erb
200
+ - generator_files/spec/acceptance/init_spec.rb.erb
201
+ - generator_files/spec/acceptance/spec_helper_acceptance.rb.erb
202
+ - generator_files/spec/acceptance/ubuntu-server-1404-x64.yml.erb
203
+ - generator_files/spec/acceptance/ubuntu-server-1604-x64.yml.erb
185
204
  - generator_files/spec/rspec.erb
186
- - generator_files/spec/rspec/init_spec.rb.erb
187
- - generator_files/spec/rspec/spec_helper.rb.erb
188
- - generator_files/spec/serverspec/init_spec.rb.erb
189
205
  - generator_files/util/Gemfile.erb
190
206
  - generator_files/util/Rakefile.erb
191
- - generator_files/vagrant/Vagrantfile.erb
192
- - generator_files/vagrant/environment/environment.conf.erb
193
- - generator_files/vagrant/environment/manifests/init.pp.erb
194
- - generator_files/vagrant/init.sh.erb
207
+ - generator_files/util/puppet-magnum.init.erb
195
208
  - lib/puppet-magnum.rb
196
209
  - lib/puppet-magnum/cli.rb
197
210
  - lib/puppet-magnum/cli/module.rb
@@ -216,7 +229,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
216
229
  requirements:
217
230
  - - ">="
218
231
  - !ruby/object:Gem::Version
219
- version: 2.3.0
232
+ version: 2.4.0
220
233
  required_rubygems_version: !ruby/object:Gem::Requirement
221
234
  requirements:
222
235
  - - ">="
@@ -224,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
237
  version: '0'
225
238
  requirements: []
226
239
  rubyforge_project:
227
- rubygems_version: 2.5.2
240
+ rubygems_version: 2.6.11
228
241
  signing_key:
229
242
  specification_version: 4
230
243
  summary: puppet-magnum - a tool for rapid, consistent, and best practice Puppet module
@@ -1,16 +0,0 @@
1
- # Class: <%= module_name %>::params
2
- # ===========================
3
- #
4
- # Authors
5
- # -------
6
- #
7
- # Author Name: <%= maintainer_email %>
8
- #
9
- # Copyright
10
- # ---------
11
- #
12
- # Copyright (C) <%= copyright_year %> <%= copyright_holder %>
13
- #
14
- class <%= module_name %>::params {
15
-
16
- }
@@ -1,9 +0,0 @@
1
- # For puppetlabs_spec_helper documentation - see https://github.com/puppetlabs/puppetlabs_spec_helper
2
-
3
- fixtures:
4
- repositories:
5
- stdlib: 'git://github.com/puppetlabs/puppetlabs-stdlib'
6
- symlinks:
7
- <%= module_name %>/files: '../../../../files'
8
- <%= module_name %>/manifests: '../../../../manifests'
9
- <%= module_name %>/templates: '../../../../templates'
@@ -1,6 +0,0 @@
1
- # for rspec-puppet documentation - see http://rspec-puppet.com/tutorial/
2
- require_relative '../spec_helper'
3
-
4
- describe '<%= module_name %>' do
5
- it 'should do something'
6
- end
@@ -1,10 +0,0 @@
1
- require 'rspec-puppet'
2
- require 'puppetlabs_spec_helper/module_spec_helper'
3
- require 'puppetlabs_spec_helper/puppetlabs_spec_helper'
4
-
5
- fixture_path = File.expand_path(File.join(__FILE__, '..', 'fixtures'))
6
-
7
- RSpec.configure do |c|
8
- c.module_path = File.join(fixture_path, 'modules')
9
- c.manifest_dir = File.join(fixture_path, 'manifests')
10
- end
@@ -1,5 +0,0 @@
1
- # For serverspec documentation - see http://serverspec.org/tutorial.html
2
-
3
- describe '<%= module_name %>' do
4
- it 'should do something'
5
- end
@@ -1,38 +0,0 @@
1
- # -*- mode: ruby -*-
2
- # vi: set ft=ruby :
3
-
4
- VAGRANTFILE_API_VERSION = '2'
5
-
6
- Vagrant.require_version '>= 1.8.0'
7
- Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
8
-
9
- # Using Puppet Labs official Vagrant boxes, from: https://atlas.hashicorp.com/puppetlabs
10
- config.vm.box = 'puppetlabs/ubuntu-14.04-64-puppet'
11
-
12
- config.vm.provider 'virtualbox' do |vbox|
13
- vbox.memory = 1024
14
- # vbox.cpus = 2
15
- end
16
-
17
- if Vagrant.has_plugin?('vagrant-cachier')
18
- config.cache.scope = :box
19
- end
20
-
21
- config.vm.provision :shell, :path => '.vagrant_puppet/init.sh'
22
-
23
- config.vm.provision :puppet do |puppet|
24
- puppet.environment_path = '.vagrant_puppet/environments'
25
- puppet.environment = 'vagrant'
26
- puppet.options = '--verbose'
27
- end
28
-
29
- config.vm.provision :serverspec do |spec|
30
- spec.pattern = 'serverspec/*_spec.rb'
31
- end
32
-
33
- end
34
-
35
- unless Vagrant.has_plugin?('vagrant-serverspec')
36
- raise "\n\n'vagrant-serverspec' is NOT installed." +
37
- "\nTo install, run: 'vagrant plugin install vagrant-serverspec'."
38
- end
@@ -1,18 +0,0 @@
1
- # Each environment can have an environment.conf file. Its settings will only
2
- # affect its own environment. See docs for more info:
3
- # https://docs.puppetlabs.com/puppet/latest/reference/config_file_environment.html
4
-
5
- # Any unspecified settings use default values; some of those defaults are based
6
- # on puppet.conf settings.
7
-
8
- # If these settings include relative file paths, they'll be resolved relative to
9
- # this environment's directory.
10
-
11
- # Allowed settings and default values:
12
-
13
- # modulepath = ./modules:$basemodulepath
14
- # manifest = (default_manifest from puppet.conf, which defaults to ./manifests)
15
- # config_version = (no script; Puppet will use the time the catalog was compiled)
16
- # environment_timeout = (environment_timeout from puppet.conf, which defaults to 0)
17
- # Note: unless you have a specific reason, we recommend only setting
18
- # environment_timeout in puppet.conf.
@@ -1 +0,0 @@
1
- include <%= module_name %>
@@ -1,38 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e
4
-
5
- STAGE='/tmp/magnum-vagrant-stage'
6
- KEYFILE='/tmp/puppetlabs-gpg'
7
-
8
- FIXTURES_DIR='/vagrant/spec/fixtures/modules'
9
- PUPPET_MODULES_DIR='/etc/puppetlabs/code/modules'
10
- VAGRANT_PUPPET_ENV_DIR='/tmp/vagrant-puppet/environments/vagrant'
11
-
12
- if [ ! -e $STAGE ]; then
13
-
14
- echo "Initial provision, running the magnum-vagrant shell provisioner script..."
15
-
16
- wget -q -O $KEYFILE https://apt.puppetlabs.com/pubkey.gpg &>/dev/null
17
- apt-key add $KEYFILE
18
-
19
- echo "Updating system packages..."
20
- apt-get update &>/dev/null
21
-
22
- echo "Updating Puppet packages..."
23
- DEBIAN_FRONTEND=noninteractive apt-get install -y puppet-agent &>/dev/null
24
-
25
- echo "Creating test environment..."
26
- mkdir -p $VAGRANT_PUPPET_ENV_DIR
27
- ln -sfn $FIXTURES_DIR $VAGRANT_PUPPET_ENV_DIR/modules
28
-
29
- rm -rf $PUPPET_MODULES_DIR
30
- ln -sfn $VAGRANT_PUPPET_ENV_DIR/modules $PUPPET_MODULES_DIR
31
-
32
- touch $STAGE
33
-
34
- else
35
- echo "Not initial provision, skipping the magnum-vagrant shell provisioner script..."
36
- fi
37
-
38
- exit 0