Class: Ridley::BootstrapContext::Windows
- Inherits:
-
Base
- Object
- Base
- Ridley::BootstrapContext::Windows
show all
- Defined in:
- lib/ridley-connectors/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-connectors/bootstrap_context/windows.rb', line 13
def boot_command
template.evaluate(self)
end
|
#bootstrap_directory ⇒ String
45
46
47
|
# File 'lib/ridley-connectors/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-connectors/bootstrap_context/windows.rb', line 18
def chef_config
body = " log_level :info\n log_location STDOUT\n chef_server_url \"\#{server_url}\"\n validation_client_name \"\#{validator_client}\"\n CONFIG\n\n if node_name.present?\n body << %Q{node_name \"\#{node_name}\"\\n}\n else\n body << \"# Using default node name (fqdn)\\n\"\n end\n\n if bootstrap_proxy.present?\n body << %Q{http_proxy \"\#{bootstrap_proxy}\"\\n}\n body << %Q{https_proxy \"\#{bootstrap_proxy}\"\\n}\n end\n\n if encrypted_data_bag_secret.present?\n body << %Q{encrypted_data_bag_secret '\#{bootstrap_directory}\\\\encrypted_data_bag_secret'\\n}\n end\n\n escape_and_echo(body)\nend\n"
|
#chef_run ⇒ String
55
56
57
|
# File 'lib/ridley-connectors/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-connectors/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-connectors/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-connectors/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-connectors/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-connectors/bootstrap_context/windows.rb', line 96
def first_boot
escape_and_echo(super)
end
|
#install_chef ⇒ String
91
92
93
|
# File 'lib/ridley-connectors/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-connectors/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-connectors/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-connectors/bootstrap_context/windows.rb', line 75
def windows_wget_powershell
win_wget_ps = " param(\n [String] $remoteUrl,\n [String] $localPath\n )\n\n $webClient = new-object System.Net.WebClient;\n\n $webClient.DownloadFile($remoteUrl, $localPath);\n WGET_PS\n\n escape_and_echo(win_wget_ps)\nend\n"
|