windows_chef_zero 1.0.0 → 2.0.0
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 +4 -4
- data/lib/kitchen/provisioner/windows_chef_zero.rb +54 -2
- data/windows_chef_zero.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8852b072697c45ec2929629cb4a7f3adc124f08b
|
4
|
+
data.tar.gz: e567b02c0754c5cba762946252f9099f7e973946
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adbd7e1609fe6dc6a673d19062bf3c665a5ba8c5d93b77c0969be0e3f48cc532786539ee4e89cd5f1807a81191e3702905a4e93918a683c63000d3fee0713eac
|
7
|
+
data.tar.gz: 65280e4fd8619bdc914b47763390ad21614e11276b3f21d4b697da868ce59b030187eb6a5e20dcc542d2ecc52b7ab02afa4bed4d9386427d4fa1413058077e41
|
@@ -10,7 +10,7 @@ module Kitchen
|
|
10
10
|
class WindowsChefZero < ChefZero
|
11
11
|
|
12
12
|
default_config :sudo, false
|
13
|
-
default_config :
|
13
|
+
default_config :chef_omnibus_url, "http://www.getchef.com/chef/install.msi"
|
14
14
|
default_config :windows_root_path, 'C:\Windows\Temp\kitchen'
|
15
15
|
default_config :windows_chef_bindir, 'C:\opscode\chef\bin'
|
16
16
|
default_config :disabled_ohai_plugins, %w[
|
@@ -20,16 +20,30 @@ module Kitchen
|
|
20
20
|
windows::virtualization windows::kernel_devices
|
21
21
|
]
|
22
22
|
|
23
|
+
# It would be difficult to make the existing
|
24
|
+
# `Kitchen::Provisioner::ChefBase#install_command`
|
25
|
+
# Windows-friendly so we'll just make it no-op.
|
26
|
+
def install_command; end
|
27
|
+
|
23
28
|
def create_sandbox
|
24
29
|
super
|
30
|
+
prepare_install_ps1 if config[:require_chef_omnibus]
|
25
31
|
prepare_chef_client_zero_rb
|
26
32
|
prepare_validation_pem
|
27
33
|
prepare_client_rb
|
28
34
|
prepare_run_script
|
29
35
|
end
|
30
36
|
|
37
|
+
# We're hacking Test Kitchen's life-cycle a little here, but YOLO.
|
31
38
|
def run_command
|
32
|
-
|
39
|
+
cmds = []
|
40
|
+
cmds << install_chef_command if config[:require_chef_omnibus]
|
41
|
+
cmds << File.join(config[:windows_root_path], "run_client.bat")
|
42
|
+
# Since these commands most likely run under cygwin's `/bin/sh`
|
43
|
+
# let's make sure all paths have forward slashes.
|
44
|
+
cmds.map { |cmd|
|
45
|
+
cmd.gsub("\\", "/")
|
46
|
+
}.join("; ")
|
33
47
|
end
|
34
48
|
|
35
49
|
private
|
@@ -83,6 +97,44 @@ module Kitchen
|
|
83
97
|
file.write(windows_run_command)
|
84
98
|
end
|
85
99
|
end
|
100
|
+
|
101
|
+
def prepare_install_ps1
|
102
|
+
url = config[:chef_omnibus_url]
|
103
|
+
flag = config[:require_chef_omnibus]
|
104
|
+
version = if flag.is_a?(String) && flag != "latest"
|
105
|
+
"v=#{flag.downcase}"
|
106
|
+
else
|
107
|
+
""
|
108
|
+
end
|
109
|
+
|
110
|
+
File.open(File.join(sandbox_path, "install.ps1"), "wb") do |file|
|
111
|
+
file.write <<-INSTALL.gsub(/^ {12}/, "")
|
112
|
+
$env:Path = "C:\\opscode\\chef\\bin"
|
113
|
+
|
114
|
+
# Retrieve current Chef version
|
115
|
+
try {
|
116
|
+
$installed_chef_version = [string](chef-solo -v)
|
117
|
+
} catch [Exception] {
|
118
|
+
$installed_chef_version = ''
|
119
|
+
}
|
120
|
+
|
121
|
+
# If the current and desired versions don't match
|
122
|
+
# install Chef.
|
123
|
+
if (-Not ($installed_chef_version -match '#{flag}')) {
|
124
|
+
Write-Host "-----> Installing Chef Omnibus (#{flag})"
|
125
|
+
$downloader = New-Object System.Net.WebClient
|
126
|
+
$download_path = Join-Path '#{config[:windows_root_path]}' 'chef-client-#{flag}.windows.msi'
|
127
|
+
$downloader.DownloadFile('#{url}?#{version}', $download_path)
|
128
|
+
$install_process = Start-Process -FilePath 'msiexec.exe' -ArgumentList "/q /i $download_path" -Wait -Passthru
|
129
|
+
}
|
130
|
+
INSTALL
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def install_chef_command
|
135
|
+
install_script_path = File.join(config[:windows_root_path], "install.ps1")
|
136
|
+
"powershell.exe -InputFormat None -ExecutionPolicy bypass -File #{install_script_path}"
|
137
|
+
end
|
86
138
|
end
|
87
139
|
end
|
88
140
|
end
|
data/windows_chef_zero.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: windows_chef_zero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Porter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: test-kitchen
|