vagrant-dsc 1.0.3 → 1.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 32a6233f447ba5f18cc19f0f7e55e4856ae2bf67
4
- data.tar.gz: 8aa7f0c18bc920583e62bebe13beb33a9e818133
3
+ metadata.gz: 407c2cc8f7c8786fe7628c4894ed967be86d05aa
4
+ data.tar.gz: 4f093c1e28adb46cdbc804ad8cc4a329d03f9008
5
5
  SHA512:
6
- metadata.gz: fa1bbe12cd6c2916092d25b834bf3fb87319774b9b53eb7e3676be67d8a98f3b9183c6c7e0b855c35dccfed057bffa7e569369216e3ed3fbd895b79f9c7f66f0
7
- data.tar.gz: a6188461eaa121535bd8e62129257f127c9be8c258f192695807ebf7064406fb553e09a2b266903b693e60f7584125054bfcedbcbc1685519e2ba9966897e209
6
+ metadata.gz: 568a9dfdb800956ad3724a3a2582a3a7785310142ac139273577cc3643475fbf02d478c13ca7056b9aabffc746a54d04253e33f580327892b50830d4298cd482
7
+ data.tar.gz: 7f063bd5ce7baa8b876296306d67da778a9b9597be5a3ccae045a2f4152b6e463e19d9d379b83686dd845daff76118055afc9c4d0c933b90e7293e8bf49f1dbe
@@ -2,8 +2,11 @@
2
2
  # vi: set ft=ruby :
3
3
 
4
4
  $shell_script = <<SCRIPT
5
- (iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')))>$null 2>&1
6
- choco install seek-dsc
5
+ #(iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')))>$null 2>&1
6
+ #choco install seek-dsc
7
+ (New-Object System.Net.WebClient).DownloadFile('https://gallery.technet.microsoft.com/scriptcenter/xWebAdministration-Module-3c8bb6be/file/131367/3/xWebAdministration_1.3.2.zip','c:\\xwebadmin.zip')
8
+ choco install 7zip
9
+ 7za.exe x -y C:\\xwebadmin.zip -o'C:\\Program Files\\WindowsPowerShell\\Modules'
7
10
  Get-DSCResource
8
11
  SCRIPT
9
12
 
@@ -16,17 +19,18 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
16
19
  # please see the online documentation at vagrantup.com.
17
20
 
18
21
  # Every Vagrant virtual environment requires a box to build off of.
19
- #config.vm.box = "kensykora/windows_2012_r2_standard"
20
- config.vm.box = "seek-base-v3"
22
+ # config.vm.box = "mfellows/windows2012r2"
23
+ # config.vm.box_version = "1.0.1"
24
+ config.vm.box = "windows2012r2"
21
25
 
22
26
  config.vm.guest = :windows
23
27
  config.vm.communicator = "winrm"
24
28
 
25
29
  config.vm.network :forwarded_port, guest: 5985, host: 5985, id: "winrm", auto_correct: true
26
30
  config.vm.network :forwarded_port, guest: 80, host: 8000, id: "web" # Port forward for IIS
27
- # config.vm.network :forwarded_port, guest: 443, host: 8443, id: "ssl" # Port forward for SSL IIS
31
+ config.vm.network :forwarded_port, guest: 443, host: 8443, id: "ssl" # Port forward for SSL IIS
28
32
  config.vm.network :forwarded_port, guest: 22, host: 9222, id: "ssh" # Port forward for SSL IIS
29
- config.winrm.guest_port = 5985
33
+
30
34
  config.vm.provider "virtualbox" do |v|
31
35
  v.gui = true
32
36
  end
@@ -46,24 +50,22 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
46
50
  # environment to enable local modules to be addressed.
47
51
  #
48
52
  # @return [Array] Set of relative module paths.
49
- # dsc.module_path = ["manifests", "modules"]
50
53
  dsc.module_path = ["modules"]
51
54
 
52
55
  # The path relative to `dsc.manifests_path` pointing to the Configuration file
53
56
  dsc.configuration_file = "MyWebsite.ps1"
54
57
 
58
+ # The path relative to Vagrantfile pointing to the Configuration Data file
59
+ dsc.configuration_data_file = "manifests/MyConfig.psd1"
60
+
55
61
  # The Configuration Command to run. Assumed to be the same as the `dsc.configuration_file`
56
62
  # (sans extension) if not provided.
57
63
  dsc.configuration_name = "MyWebsite"
58
64
 
59
- # Commandline arguments to the Configuration run
60
- # Set of Parameters to pass to the DSC Configuration.
61
- dsc.configuration_params = {"-MachineName" => "localhost"}
62
-
63
65
  # Relative path to a pre-generated MOF file.
64
66
  #
65
67
  # Path is relative to the folder containing the Vagrantfile.
66
- #dsc.mof_path = "mof"
68
+ # dsc.mof_path = "mof"
67
69
 
68
70
  # Relative path to the folder containing the root Configuration manifest file.
69
71
  # Defaults to 'manifests'.
@@ -71,12 +73,17 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
71
73
  # Path is relative to the folder containing the Vagrantfile.
72
74
  dsc.manifests_path = "manifests"
73
75
 
76
+ # Commandline arguments to the Configuration run
77
+ #
78
+ # Set of Parameters to pass to the DSC Configuration.
79
+ dsc.configuration_params = {"-MachineName" => "localhost"}
80
+
74
81
  # The type of synced folders to use when sharing the data
75
82
  # required for the provisioner to work properly.
76
83
  #
77
84
  # By default this will use the default synced folder type.
78
85
  # For example, you can set this to "nfs" to use NFS synced folders.
79
- #dsc.synced_folder_type = ""
86
+ # dsc.synced_folder_type = ""
80
87
 
81
88
  # Temporary working directory on the guest machine.
82
89
  # dsc.temp_dir = "c:/tmp/vagrant-dsc"
@@ -0,0 +1,10 @@
1
+ @{
2
+ AllNodes =
3
+ @(
4
+ @{
5
+ NodeName = "localhost";
6
+ PSDscAllowPlainTextPassword = $true;
7
+ RebootIfNeeded = $True;
8
+ }
9
+ )
10
+ }
@@ -2,8 +2,8 @@ Configuration MyWebsite
2
2
  {
3
3
  param ($MachineName)
4
4
 
5
- Import-DscResource -Module cWebAdministration
6
5
  Import-DscResource -Module MyWebapp
6
+ Import-DscResource -Module cNetworking
7
7
 
8
8
  Node $MachineName
9
9
  {
@@ -12,15 +12,23 @@ Configuration MyWebsite
12
12
  Ensure = "Present"
13
13
  Name = "Web-Server"
14
14
  }
15
- cWebsite DefaultWebsite
15
+
16
+ WindowsFeature IISManagerFeature
17
+ {
18
+ Ensure = "Present"
19
+ Name = "Web-Mgmt-Tools"
20
+ }
21
+
22
+ cFirewallRule webFirewall
16
23
  {
17
- Name = "Default Web Site"
18
- ApplicationPool = "DefaultAppPool"
19
- PhysicalPath = "$env:SystemDrive\inetpub\wwwroot"
20
- Ensure = "Absent"
21
- DependsOn = '[WindowsFeature]IIS'
24
+ Name = "WebFirewallOpen"
25
+ Direction = "Inbound"
26
+ LocalPort = "80"
27
+ Protocol = "TCP"
28
+ Action = "Allow"
29
+ Ensure = "Present"
22
30
  }
23
-
31
+
24
32
  SimpleWebsite sWebsite
25
33
  {
26
34
  WebAppPath = "c:\my-new-webapp"
@@ -7,25 +7,41 @@
7
7
  [HashTable]$AuthenticationInfo = @{Anonymous = "true"; Basic = "false"; Digest = "false"; Windows = "false"}
8
8
  )
9
9
 
10
- Import-DscResource -Module cWebAdministration
10
+ # Import-DscResource -Module cWebAdministration
11
+ Import-DscResource -Module xWebAdministration
11
12
 
12
- # Create the new Website
13
- cWebsite Basic
14
- {
15
- Ensure = 'Present'
16
- Name = $WebAppName
17
- PhysicalPath = $WebAppPath
18
- ApplicationPool = "DefaultAppPool"
19
- AuthenticationInfo = SEEK_cWebAuthenticationInformation
20
- {
21
- Anonymous = $AuthenticationInfo.Anonymous
22
- Basic = $AuthenticationInfo.Basic
23
- Digest = $AuthenticationInfo.Digest
24
- Windows = $AuthenticationInfo.Windows
25
- }
26
- DependsOn = '[File]website'
13
+ # Stop the default website
14
+ xWebsite DefaultSite
15
+ {
16
+ Ensure = "Present"
17
+ Name = "Default Web Site"
18
+ State = "Stopped"
19
+ PhysicalPath = "C:\inetpub\wwwroot"
20
+ DependsOn = "[File]websiteIndex"
27
21
  }
28
22
 
23
+ # Create a Web Application Pool
24
+ xWebAppPool NewWebAppPool
25
+ {
26
+ Name = "${WebAppName}AppPool"
27
+ Ensure = "Present"
28
+ State = "Started"
29
+ }
30
+
31
+ #Create a New Website with Port
32
+ xWebSite NewWebSite
33
+ {
34
+ Name = $WebAppName
35
+ Ensure = "Present"
36
+ BindingInfo = MSFT_xWebBindingInformation
37
+ {
38
+ Port = 80
39
+ }
40
+ PhysicalPath = $WebAppPath
41
+ State = "Started"
42
+ DependsOn = @("[xWebAppPool]NewWebAppPool")
43
+ }
44
+
29
45
  File websiteIndex
30
46
  {
31
47
  Ensure = "Present"
@@ -24,6 +24,13 @@ module VagrantPlugins
24
24
  # Path is relative to the folder containing the Vagrantfile.
25
25
  attr_accessor :configuration_file
26
26
 
27
+ # Relative path to the DSC Configuration Data file.
28
+ #
29
+ # Configuration data is used to parameterise the configuration_file.
30
+ #
31
+ # Path is relative to the folder containing the Vagrantfile.
32
+ attr_accessor :configuration_data_file
33
+
27
34
  # Relative path to the folder containing the root Configuration manifest file.
28
35
  # Defaults to 'manifests'.
29
36
  #
@@ -59,17 +66,23 @@ module VagrantPlugins
59
66
  # Do not override this.
60
67
  attr_accessor :expanded_configuration_file
61
68
 
69
+ # Fully qualified path to the configuration data file.
70
+ #
71
+ # Do not override this.
72
+ attr_accessor :expanded_configuration_data_file
73
+
62
74
  def initialize
63
75
  super
64
76
 
65
- @configuration_file = UNSET_VALUE
66
- @manifests_path = UNSET_VALUE
67
- @configuration_name = UNSET_VALUE
68
- @mof_path = UNSET_VALUE
69
- @module_path = UNSET_VALUE
70
- @configuration_params = {}
71
- @synced_folder_type = UNSET_VALUE
72
- @temp_dir = UNSET_VALUE
77
+ @configuration_file = UNSET_VALUE
78
+ @configuration_data_file = UNSET_VALUE
79
+ @manifests_path = UNSET_VALUE
80
+ @configuration_name = UNSET_VALUE
81
+ @mof_path = UNSET_VALUE
82
+ @module_path = UNSET_VALUE
83
+ @configuration_params = {}
84
+ @synced_folder_type = UNSET_VALUE
85
+ @temp_dir = UNSET_VALUE
73
86
  @logger = Log4r::Logger.new("vagrant::vagrant_dsc")
74
87
  end
75
88
 
@@ -81,13 +94,14 @@ module VagrantPlugins
81
94
  super
82
95
 
83
96
  # Null checks
84
- @configuration_file = "default.ps1" if @configuration_file == UNSET_VALUE
85
- @module_path = nil if @module_path == UNSET_VALUE
86
- @synced_folder_type = nil if @synced_folder_type == UNSET_VALUE
87
- @temp_dir = nil if @temp_dir == UNSET_VALUE
88
- @mof_path = nil if @mof_path == UNSET_VALUE
89
- @configuration_name = File.basename(@configuration_file, File.extname(@configuration_file)) if @configuration_name == UNSET_VALUE
90
- @manifests_path = File.dirname(@configuration_file) if @manifests_path == UNSET_VALUE
97
+ @configuration_file = "default.ps1" if @configuration_file == UNSET_VALUE
98
+ @configuration_data_file = nil if @configuration_data_file == UNSET_VALUE
99
+ @module_path = nil if @module_path == UNSET_VALUE
100
+ @synced_folder_type = nil if @synced_folder_type == UNSET_VALUE
101
+ @temp_dir = nil if @temp_dir == UNSET_VALUE
102
+ @mof_path = nil if @mof_path == UNSET_VALUE
103
+ @configuration_name = File.basename(@configuration_file, File.extname(@configuration_file)) if @configuration_name == UNSET_VALUE
104
+ @manifests_path = File.dirname(@configuration_file) if @manifests_path == UNSET_VALUE
91
105
 
92
106
  # Can't supply them both!
93
107
  if (@configuration_file != nil && @mof_path != nil)
@@ -127,29 +141,49 @@ module VagrantPlugins
127
141
  # @param [Machine] The current {Machine}
128
142
  # @return [Hash] Any errors or {} if no errors found
129
143
  def validate(machine)
130
- @logger.info("==> Configurin' DSC man!")
144
+ @logger.info("==> Configuring DSC")
131
145
  errors = _detected_errors
132
146
 
133
147
  # Calculate the manifests and module paths based on env
134
- this_expanded_module_paths = expanded_module_paths(machine.env.root_path)
148
+ local_expanded_module_paths = expanded_module_paths(machine.env.root_path)
135
149
 
136
150
  # Manifest file validation
137
- this_expanded_module_paths.each do |path|
151
+ local_expanded_module_paths.each do |path|
138
152
  errors << I18n.t("vagrant_dsc.errors.module_path_missing", path: path) if !Pathname.new(path).expand_path(machine.env.root_path).directory?
139
153
  end
140
154
 
141
- expanded_path = Pathname.new(manifests_path).
142
- expand_path(machine.env.root_path)
155
+ host_manifest_path = Pathname.new(manifests_path).expand_path(machine.env.root_path)
143
156
 
144
- if !expanded_path.directory?
157
+ if !host_manifest_path.directory?
145
158
  errors << I18n.t("vagrant_dsc.errors.manifests_path_missing",
146
- path: expanded_path.to_s)
159
+ path: host_manifest_path.to_s)
147
160
  end
148
161
 
149
- @expanded_configuration_file = expanded_path.join(File.basename(configuration_file))
150
- if !expanded_configuration_file.file? && !expanded_configuration_file.directory?
162
+ # Path to manifest file on the host machine must exist
163
+ host_expanded_configuration_file = host_manifest_path.join(File.basename(configuration_file))
164
+ if !host_expanded_configuration_file.file? && !host_expanded_configuration_file.directory?
151
165
  errors << I18n.t("vagrant_dsc.errors.manifest_missing",
152
- manifest: expanded_configuration_file.to_s)
166
+ manifest: host_expanded_configuration_file.to_s)
167
+ end
168
+
169
+ # Set absolute path to manifest file on the guest
170
+ @expanded_configuration_file = Pathname.new(File.dirname(configuration_file)).expand_path(temp_dir).join(File.basename(configuration_file))
171
+
172
+ # Check path of the configuration data file on host
173
+ if configuration_data_file != nil
174
+
175
+ host_expanded_path = Pathname.new(File.dirname(configuration_data_file)).expand_path(machine.env.root_path)
176
+ expanded_host_configuration_data_file = host_expanded_path.join(File.basename(configuration_data_file))
177
+
178
+ if !expanded_host_configuration_data_file.file? && !expanded_host_configuration_data_file.directory?
179
+ errors << I18n.t("vagrant_dsc.errors.configuration_data_missing",
180
+ path: expanded_host_configuration_data_file.to_s)
181
+ end
182
+
183
+ @expanded_configuration_data_file = Pathname.new(File.dirname(configuration_data_file)).expand_path(temp_dir).join(File.basename(configuration_data_file))
184
+
185
+ # Add -ConfigurationData flag to parameters
186
+ configuration_params["-ConfigurationData"] = expanded_configuration_data_file if @expanded_configuration_data_file != nil
153
187
  end
154
188
 
155
189
  { "dsc provisioner" => errors }
@@ -30,6 +30,8 @@ en:
30
30
  "Path to DSC Manifest folder does not exist: %{path}"
31
31
  manifest_missing: |-
32
32
  "Path to DSC Manifest does not exist: %{manifest}"
33
+ configuration_data_missing: |-
34
+ "Path to DSC Configuration Data file does not exist: %{path}"
33
35
  manifest_and_mof_provided: |-
34
36
  "Cannot provide configuration_file and mof_path at the same time. Please provide only one of the two."
35
37
  unsupported_operation: |-
@@ -160,6 +160,7 @@ module VagrantPlugins
160
160
  module_paths: @module_paths.map { |k,v| v }.join(";"),
161
161
  mof_path: @config.mof_path,
162
162
  configuration_file: @config.configuration_file,
163
+ configuration_data_file: @config.expanded_configuration_data_file,
163
164
  configuration_file_path: "#{@config.manifests_path}/#{File.basename @config.configuration_file}",
164
165
  configuration_name: @config.configuration_name,
165
166
  manifests_path: @config.manifests_path,
@@ -33,4 +33,5 @@ $StagingPath = "<%= options[:mof_path] %>"
33
33
 
34
34
  # Start a DSC Configuration run
35
35
  $response += Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath 4>&1 5>&1 | Out-String
36
+ del $StagingPath\*.mof
36
37
  $response
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Dsc
3
- VERSION = "1.0.3"
3
+ VERSION = "1.0.4"
4
4
  end
5
5
  end
@@ -29,16 +29,17 @@ describe VagrantPlugins::DSC::Config do
29
29
 
30
30
  before { subject.finalize! }
31
31
 
32
- its("configuration_file") { expect = "default.ps1" }
33
- its("manifests_path") { expect = "." }
34
- its("configuration_name") { expect = "default" }
35
- its("mof_path") { expect be_nil }
36
- its("module_path") { expect be_nil }
37
- its("options") { expect = [] }
38
- its("configuration_params") { expect = {} }
39
- its("synced_folder_type") { expect be_nil }
40
- its("temp_dir") { expect match /^\/tmp\/vagrant-dsc-*/ }
41
- its("working_directory") { expect be_nil }
32
+ its("configuration_file") { expect = "default.ps1" }
33
+ its("configuration_data_file") { expect be_nil }
34
+ its("manifests_path") { expect = "." }
35
+ its("configuration_name") { expect = "default" }
36
+ its("mof_path") { expect be_nil }
37
+ its("module_path") { expect be_nil }
38
+ its("options") { expect = [] }
39
+ its("configuration_params") { expect = {} }
40
+ its("synced_folder_type") { expect be_nil }
41
+ its("temp_dir") { expect match /^\/tmp\/vagrant-dsc-*/ }
42
+ its("working_directory") { expect be_nil }
42
43
  end
43
44
 
44
45
  describe "derived settings" do
@@ -72,8 +73,7 @@ describe VagrantPlugins::DSC::Config do
72
73
  subject.finalize!
73
74
  subject.validate(machine)
74
75
 
75
- basePath = File.absolute_path(File.join(File.dirname(__FILE__), '../../'))
76
- expect(subject.expanded_configuration_file.to_s).to eq("#{basePath}/manifests/MyWebsite.ps1")
76
+ expect(subject.expanded_configuration_file.to_s).to eq("#{subject.temp_dir}/manifests/MyWebsite.ps1")
77
77
  end
78
78
  end
79
79
 
@@ -119,9 +119,30 @@ describe VagrantPlugins::DSC::Config do
119
119
 
120
120
  it "should be invalid if 'configuration_file' is not a real file" do
121
121
  subject.manifests_path = "/"
122
- subject.configuration_file = "notexist.pp"
122
+ subject.configuration_file = "notexist.ps1"
123
123
  assert_invalid
124
- assert_error("\"Path to DSC Manifest does not exist: /notexist.pp\"")
124
+ assert_error("\"Path to DSC Manifest does not exist: /notexist.ps1\"")
125
+ end
126
+
127
+ it "should be invalid if 'configuration_data_file' is not a real file" do
128
+ subject.manifests_path = "/"
129
+ subject.configuration_data_file = "/oeu/aoeu/notexist.psd1"
130
+ assert_invalid
131
+ assert_error("\"Path to DSC Configuration Data file does not exist: /oeu/aoeu/notexist.psd1\"")
132
+ end
133
+
134
+ it "should detect the fully qualified path to the configuration data file automatically" do
135
+ env = double("environment", root_path: "")
136
+ config = double("config")
137
+ machine.stub(config: config, env: env)
138
+ allow(machine).to receive(:root_path).and_return(".")
139
+
140
+ subject.configuration_data_file = "manifests/foo.psd1"
141
+
142
+ subject.finalize!
143
+ subject.validate(machine)
144
+
145
+ expect(subject.expanded_configuration_data_file.to_s).to eq("#{subject.temp_dir}/manifests/foo.psd1")
125
146
  end
126
147
 
127
148
  it "should be invalid if 'module_path' is not a real directory" do
@@ -6,17 +6,18 @@ require 'rspec/its'
6
6
  describe VagrantPlugins::DSC::Provisioner do
7
7
  include_context "unit"
8
8
 
9
- let(:root_path) { (Pathname.new(Dir.mktmpdir)).to_s }
10
- let(:ui) { Vagrant::UI::Silent.new }
11
- let(:machine) { double("machine", ui: ui) }
12
- let(:env) { double("environment", root_path: root_path, ui: ui) }
13
- let(:vm) { double ("vm") }
14
- let(:communicator) { double ("communicator") }
15
- let(:guest) { double ("guest") }
16
- let(:configuration_file) { "manifests/MyWebsite.ps1" }
17
- let(:module_path) { ["foo/modules", "foo/modules2"] }
18
- let(:root_config) { VagrantPlugins::DSC::Config.new }
19
- subject { described_class.new machine, root_config }
9
+ let(:root_path) { (Pathname.new(Dir.mktmpdir)).to_s }
10
+ let(:ui) { Vagrant::UI::Silent.new }
11
+ let(:machine) { double("machine", ui: ui) }
12
+ let(:env) { double("environment", root_path: root_path, ui: ui) }
13
+ let(:vm) { double ("vm") }
14
+ let(:communicator) { double ("communicator") }
15
+ let(:guest) { double ("guest") }
16
+ let(:configuration_file) { "manifests/MyWebsite.ps1" }
17
+ let(:configuration_data_file) { "manifests/MyConfig.psd1" }
18
+ let(:module_path) { ["foo/modules", "foo/modules2"] }
19
+ let(:root_config) { VagrantPlugins::DSC::Config.new }
20
+ subject { described_class.new machine, root_config }
20
21
 
21
22
  describe "configure" do
22
23
  before do
@@ -223,7 +224,7 @@ describe VagrantPlugins::DSC::Provisioner do
223
224
 
224
225
  it "should raise an error if Powershell version is invalid" do
225
226
 
226
- end
227
+ end
227
228
  end
228
229
 
229
230
  describe "DSC runner script" do
@@ -244,7 +245,7 @@ describe VagrantPlugins::DSC::Provisioner do
244
245
 
245
246
  end
246
247
 
247
- context "with default parameters" do
248
+ context "with default parameters" do
248
249
  it "should generate a valid powershell command" do
249
250
  script = subject.generate_dsc_runner_script
250
251
  expect_script = "#
@@ -276,6 +277,7 @@ $response = MyWebsite -OutputPath $StagingPath 4>&1 5>&1 | Out-String
276
277
 
277
278
  # Start a DSC Configuration run
278
279
  $response += Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath 4>&1 5>&1 | Out-String
280
+ del $StagingPath\\*.mof
279
281
  $response"
280
282
 
281
283
  expect(script).to eq(expect_script)
@@ -317,6 +319,7 @@ $response = MyWebsite -OutputPath $StagingPath 4>&1 5>&1 | Out-String
317
319
 
318
320
  # Start a DSC Configuration run
319
321
  $response += Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath 4>&1 5>&1 | Out-String
322
+ del $StagingPath\\*.mof
320
323
  $response"
321
324
 
322
325
  expect(script).to eq(expect_script)
@@ -357,6 +360,7 @@ $response = MyWebsite -OutputPath $StagingPath -Foo \"bar\" -ComputerName \"catz
357
360
 
358
361
  # Start a DSC Configuration run
359
362
  $response += Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath 4>&1 5>&1 | Out-String
363
+ del $StagingPath\\*.mof
360
364
  $response"
361
365
 
362
366
  expect(script).to eq(expect_script)
@@ -395,6 +399,7 @@ $response = MyWebsite -OutputPath $StagingPath -FooFlag -BarFlag -FooParam \"Foo
395
399
 
396
400
  # Start a DSC Configuration run
397
401
  $response += Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath 4>&1 5>&1 | Out-String
402
+ del $StagingPath\\*.mof
398
403
  $response"
399
404
 
400
405
  expect(script).to eq(expect_script)
@@ -431,11 +436,70 @@ $StagingPath = \"staging\"
431
436
 
432
437
  # Start a DSC Configuration run
433
438
  $response += Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath 4>&1 5>&1 | Out-String
439
+ del $StagingPath\\*.mof
440
+ $response"
441
+
442
+ expect(script).to eq(expect_script)
443
+ end
444
+ end
445
+
446
+ context "with -ConfigurationData" do
447
+ before do
448
+ # Prevent counters messing with output in tests
449
+ Vagrant::Util::Counter.class_eval do
450
+ def get_and_update_counter(name=nil) 1 end
451
+ end
452
+
453
+ allow(machine).to receive(:root_config).and_return(root_config)
454
+ root_config.configuration_file = configuration_file
455
+ root_config.configuration_data_file = configuration_data_file
456
+ machine.stub(config: root_config, env: env)
457
+ root_config.module_path = module_path
458
+ root_config.configuration_file = configuration_file
459
+ root_config.finalize!
460
+ root_config.validate(machine)
461
+ subject.configure(root_config)
462
+
463
+ end
464
+
465
+ it "should pass in the location of" do
466
+ script = subject.generate_dsc_runner_script
467
+ expect_script = "#
468
+ # DSC Runner.
469
+ #
470
+ # Bootstraps the DSC environment, sets up configuration data
471
+ # and runs the DSC Configuration.
472
+ #
473
+ #
474
+
475
+ # Set the local PowerShell Module environment path
476
+ $absoluteModulePaths = [string]::Join(\";\", (\"/tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1\".Split(\";\") | ForEach-Object { $_ | Resolve-Path }))
477
+
478
+ echo \"Adding to path: $absoluteModulePaths\"
479
+ $env:PSModulePath=\"$absoluteModulePaths;${env:PSModulePath}\"
480
+ (\"/tmp/vagrant-dsc-1/modules-0;/tmp/vagrant-dsc-1/modules-1\".Split(\";\") | ForEach-Object { gci -Recurse $_ | ForEach-Object { Unblock-File $_.FullName} })
481
+
482
+ $script = $(Join-Path \"/tmp/vagrant-dsc-1\" \"manifests/MyWebsite.ps1\" -Resolve)
483
+ echo \"PSModulePath Configured: ${env:PSModulePath}\"
484
+ echo \"Running Configuration file: ${script}\"
485
+
486
+ # Generate the MOF file, only if a MOF path not already provided.
487
+ # Import the Manifest
488
+ . $script
489
+
490
+ cd \"/tmp/vagrant-dsc-1\"
491
+ $StagingPath = $(Join-Path \"/tmp/vagrant-dsc-1\" \"staging\")
492
+ $response = MyWebsite -OutputPath $StagingPath -ConfigurationData \"/tmp/vagrant-dsc-1/manifests/MyConfig.psd1\" 4>&1 5>&1 | Out-String
493
+
494
+ # Start a DSC Configuration run
495
+ $response += Start-DscConfiguration -Force -Wait -Verbose -Path $StagingPath 4>&1 5>&1 | Out-String
496
+ del $StagingPath\\*.mof
434
497
  $response"
435
498
 
436
499
  expect(script).to eq(expect_script)
437
500
  end
438
501
  end
502
+
439
503
  end
440
504
 
441
505
  describe "write DSC Runner script" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-dsc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Fellows
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -165,6 +165,7 @@ files:
165
165
  - README.md
166
166
  - Rakefile
167
167
  - development/Vagrantfile
168
+ - development/manifests/MyConfig.psd1
168
169
  - development/manifests/MyWebsite.ps1
169
170
  - development/modules/MyWebapp/DSCResources/SimpleWebsite/SimpleWebsite.psd1
170
171
  - development/modules/MyWebapp/DSCResources/SimpleWebsite/SimpleWebsite.schema.psm1