kitchen-dsc 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7648a4ce929eaf9c6ae05202aea0eafd81ea4f0e
4
+ data.tar.gz: 1f1b628411d96a2f6ab322510895fc0485d2b509
5
+ SHA512:
6
+ metadata.gz: c4a102df223ea3d82587ea183b9d5dcd4db457ebed2bb8943a3179709533c9cbf644de3f8f7472ce60e8690a99f80870b1bea63c4f8811d0628bd3e34956698b
7
+ data.tar.gz: 4885e2f4d9785d442887fcd871823f707320b226d3bf2fde27052bed4ce4804629d3f0a9d6cba0ea676358e648fcfaaf3cf3e5bf3a7aa1d88813e52039f4bdb0
data/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # kitchen-dsc
2
+ A Test Kitchen Provisioner for PowerShell DSC
3
+
4
+
5
+ ## Requirements
6
+ You'll need a driver box with WMF4 or greater (ONLY WINDOWS SYSTEMS)
7
+
8
+ ## Installation & Setup
9
+ You'll need the test-kitchen & kitchen-dsc gems installed in your system, along with kitchen-vagrant or some ther suitable driver for test-kitchen.
10
+
11
+ ## Example Configuration
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
4
+ require 'kitchen-dsc/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'kitchen-dsc'
8
+ s.version = Kitchen::Dsc::VERSION
9
+ s.authors = ['Steven Murawski']
10
+ s.email = ['steven.murawski@gmail.com']
11
+ s.homepage = 'https://github.com/smurawski/kitchen-dsc'
12
+ s.summary = 'PowerShell DSC provisioner for test-kitchen'
13
+ candidates = Dir.glob('lib/**/*') + ['README.md', 'kitchen-dsc.gemspec']
14
+ s.files = candidates.sort
15
+ s.platform = Gem::Platform::RUBY
16
+ s.require_paths = ['lib']
17
+ s.rubyforge_project = '[none]'
18
+ s.license = 'MIT'
19
+ s.description = <<-EOF
20
+ == DESCRIPTION:
21
+
22
+ DSC Provisioner for Test Kitchen
23
+
24
+ == FEATURES:
25
+
26
+ TBD
27
+
28
+ EOF
29
+
30
+ end
@@ -0,0 +1,95 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Steven Murawski (<steven.murawski@gmail.com>)
4
+ #
5
+ # Copyright (C) 2014 Steven Murawski
6
+ #
7
+ # Licensed under the MIT License.
8
+ # See LICENSE for more details
9
+
10
+ require 'fileutils'
11
+ require 'pathname'
12
+ require 'kitchen/provisioner/base'
13
+ require 'kitchen/util'
14
+
15
+ module Kitchen
16
+
17
+ module Provisioner
18
+ class Dsc < Base
19
+
20
+ kitchen_provisioner_api_version 2
21
+
22
+ attr_accessor :tmp_dir
23
+
24
+ default_config :modules_path, 'modules'
25
+ default_config :configuration_script, 'dsc_configuration.ps1'
26
+
27
+
28
+ default_config :dsc_local_configuration_manager, {
29
+ :wmf4 => {
30
+ :reboot_if_needed => false
31
+ },
32
+ :wmf5 => {
33
+ :reboot_if_needed => false,
34
+ :debug_mode => false
35
+ }
36
+ }
37
+
38
+ def install_command
39
+ end
40
+
41
+ def init_command
42
+ end
43
+
44
+ def create_sandbox
45
+ super
46
+ FileUtils.mkdir_p(sandbox_path)
47
+
48
+ info('Staging DSC Resource Modules for copy to the SUT')
49
+ FileUtils.cp_r(File.join(config[:kitchen_root], config[:modules_path]), File.join(sandbox_path, 'modules'))
50
+ FileUtils.cp(File.join(config[:kitchen_root], config[:configuration_script]), File.join(sandbox_path, 'dsc_configuration.ps1'))
51
+ end
52
+
53
+ def prepare_command
54
+ info('Moving DSC Resources onto PSModulePath')
55
+ info("Generating the MOF script for the configuration #{current_configuration}")
56
+
57
+ stage_resources_and_generate_mof_script = <<-EOH
58
+
59
+ dir ( join-path #{config[:root_path]} 'modules/*') -directory |
60
+ copy-item -destination $env:programfiles/windowspowershell/modules/ -recurse -force
61
+
62
+ mkdir 'c:/configurations' | out-null
63
+ . #{remote_path_join( config[:root_path], config[:configuration_script])}
64
+ #{current_configuration} -outputpath c:/configurations | out-null
65
+
66
+ EOH
67
+
68
+ wrap_shell_code(stage_resources_and_generate_mof_script)
69
+ end
70
+
71
+ def run_command
72
+ info("Running the configuration #{current_configuration}")
73
+ run_configuration_script = <<-EOH
74
+
75
+ $job = start-dscconfiguration -Path c:/configurations/
76
+ $job | wait-job
77
+ $job.childjobs[0].verbose
78
+
79
+ EOH
80
+ wrap_shell_code(run_configuration_script)
81
+ end
82
+
83
+ private
84
+
85
+ def current_configuration
86
+ config.keys.include?(:run_list) ? config[:run_list][0] : @instance.suite.name
87
+ end
88
+
89
+ def is_resource_module?
90
+ #TODO
91
+ end
92
+
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,7 @@
1
+ # encoding: utf-8
2
+
3
+ module Kitchen
4
+ module Dsc
5
+ VERSION = '0.1.0'
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,57 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kitchen-dsc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Steven Murawski
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: |+
14
+ == DESCRIPTION:
15
+
16
+ DSC Provisioner for Test Kitchen
17
+
18
+ == FEATURES:
19
+
20
+ TBD
21
+
22
+ email:
23
+ - steven.murawski@gmail.com
24
+ executables: []
25
+ extensions: []
26
+ extra_rdoc_files: []
27
+ files:
28
+ - README.md
29
+ - kitchen-dsc.gemspec
30
+ - lib/kitchen-dsc/version.rb
31
+ - lib/kitchen/provisioner/dsc.rb
32
+ homepage: https://github.com/smurawski/kitchen-dsc
33
+ licenses:
34
+ - MIT
35
+ metadata: {}
36
+ post_install_message:
37
+ rdoc_options: []
38
+ require_paths:
39
+ - lib
40
+ required_ruby_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ requirements: []
51
+ rubyforge_project: '[none]'
52
+ rubygems_version: 2.4.4
53
+ signing_key:
54
+ specification_version: 4
55
+ summary: PowerShell DSC provisioner for test-kitchen
56
+ test_files: []
57
+ has_rdoc: