Class: Ridley::BootstrapContext::Windows
- Inherits:
-
Base
- Object
- Base
- Ridley::BootstrapContext::Windows
show all
- Defined in:
- lib/ridley/bootstrap_context/windows.rb
Overview
Instance Attribute Summary
Attributes inherited from Base
#attributes, #bootstrap_proxy, #chef_version, #environment, #hints, #node_name, #run_list, #server_url, #template_file, #validator_client, #validator_path
Instance Method Summary
collapse
Methods inherited from Base
#bootstrap_command, #initialize, #template, #templates_path, validate_options
Instance Method Details
#boot_command ⇒ String
13
14
15
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 13
def boot_command
template.evaluate(self)
end
|
#bootstrap_directory ⇒ String
45
46
47
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 45
def bootstrap_directory
"C:\\chef"
end
|
#chef_config ⇒ String
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 18
def chef_config
body = <<-CONFIG
log_level :info
log_location STDOUT
chef_server_url "#{server_url}"
validation_client_name "#{validator_client}"
CONFIG
if node_name.present?
body << %Q{node_name "#{node_name}"\n}
else
body << "# Using default node name (fqdn)\n"
end
if bootstrap_proxy.present?
body << %Q{http_proxy "#{bootstrap_proxy}"\n}
body << %Q{https_proxy "#{bootstrap_proxy}"\n}
end
if encrypted_data_bag_secret.present?
body << %Q{encrypted_data_bag_secret '#{bootstrap_directory}\\encrypted_data_bag_secret'\n}
end
escape_and_echo(body)
end
|
#chef_run ⇒ String
55
56
57
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 55
def chef_run
"chef-client -j #{bootstrap_directory}\\first-boot.json -E #{environment}"
end
|
#default_template ⇒ String
60
61
62
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 60
def default_template
templates_path.join('windows_omnibus.erb').to_s
end
|
#encrypted_data_bag_secret ⇒ String
65
66
67
68
69
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 65
def encrypted_data_bag_secret
return unless @encrypted_data_bag_secret
escape_and_echo(@encrypted_data_bag_secret)
end
|
#env_path ⇒ String
101
102
103
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 101
def env_path
"C:\\opscode\\chef\\bin;C:\\opscode\\chef\\embedded\\bin"
end
|
#escape_and_echo(file_contents) ⇒ Object
escape WIN BATCH special chars and prefixes each line with an echo
113
114
115
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 113
def escape_and_echo(file_contents)
file_contents.gsub(/^(.*)$/, 'echo.\1').gsub(/([(<|>)^])/, '^\1')
end
|
#first_boot ⇒ String
96
97
98
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 96
def first_boot
escape_and_echo(super)
end
|
#install_chef ⇒ String
91
92
93
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 91
def install_chef
'msiexec /qb /i "%LOCAL_DESTINATION_MSI_PATH%"'
end
|
#local_download_path ⇒ String
106
107
108
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 106
def local_download_path
"%TEMP%\\chef-client-#{chef_version}.msi"
end
|
#validation_key ⇒ String
50
51
52
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 50
def validation_key
escape_and_echo(super)
end
|
#windows_wget_powershell ⇒ String
Implements a Powershell script that attempts a simple ‘wget’ to download the Chef msi
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/ridley/bootstrap_context/windows.rb', line 75
def windows_wget_powershell
win_wget_ps = <<-WGET_PS
param(
[String] $remoteUrl,
[String] $localPath
)
$webClient = new-object System.Net.WebClient;
$webClient.DownloadFile($remoteUrl, $localPath);
WGET_PS
escape_and_echo(win_wget_ps)
end
|