from-scratch 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (174) hide show
  1. checksums.yaml +7 -0
  2. data/.chef/knife.rb +6 -0
  3. data/.gitignore +9 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +4 -0
  6. data/Berksfile +17 -0
  7. data/Berksfile.lock +19 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +58 -0
  11. data/Rakefile +6 -0
  12. data/Thorfile +5 -0
  13. data/bin/scratchify +6 -0
  14. data/chefignore +101 -0
  15. data/cookbooks/chef_gem/CHANGELOG.md +24 -0
  16. data/cookbooks/chef_gem/README.md +38 -0
  17. data/cookbooks/chef_gem/libraries/chef_gem.rb +72 -0
  18. data/cookbooks/chef_gem/metadata.json +29 -0
  19. data/cookbooks/chef_gem/recipes/default.rb +0 -0
  20. data/cookbooks/java/.gitignore +21 -0
  21. data/cookbooks/java/.kitchen.docker.yml +15 -0
  22. data/cookbooks/java/.kitchen.yml +126 -0
  23. data/cookbooks/java/.travis.yml +6 -0
  24. data/cookbooks/java/Berksfile +10 -0
  25. data/cookbooks/java/CHANGELOG.md +398 -0
  26. data/cookbooks/java/CONTRIBUTING.md +12 -0
  27. data/cookbooks/java/Gemfile +15 -0
  28. data/cookbooks/java/ISSUES.md +43 -0
  29. data/cookbooks/java/LICENSE +201 -0
  30. data/cookbooks/java/README.md +402 -0
  31. data/cookbooks/java/Rakefile +60 -0
  32. data/cookbooks/java/TESTING.md +41 -0
  33. data/cookbooks/java/attributes/default.rb +146 -0
  34. data/cookbooks/java/libraries/helpers.rb +120 -0
  35. data/cookbooks/java/libraries/matchers.rb +5 -0
  36. data/cookbooks/java/metadata.json +69 -0
  37. data/cookbooks/java/providers/alternatives.rb +94 -0
  38. data/cookbooks/java/providers/ark.rb +255 -0
  39. data/cookbooks/java/recipes/default.rb +22 -0
  40. data/cookbooks/java/recipes/default_java_symlink.rb +19 -0
  41. data/cookbooks/java/recipes/homebrew.rb +3 -0
  42. data/cookbooks/java/recipes/ibm.rb +76 -0
  43. data/cookbooks/java/recipes/ibm_tar.rb +70 -0
  44. data/cookbooks/java/recipes/openjdk.rb +74 -0
  45. data/cookbooks/java/recipes/oracle.rb +74 -0
  46. data/cookbooks/java/recipes/oracle_i386.rb +73 -0
  47. data/cookbooks/java/recipes/oracle_jce.rb +75 -0
  48. data/cookbooks/java/recipes/oracle_rpm.rb +60 -0
  49. data/cookbooks/java/recipes/purge_packages.rb +20 -0
  50. data/cookbooks/java/recipes/set_attributes_from_version.rb +55 -0
  51. data/cookbooks/java/recipes/set_java_home.rb +44 -0
  52. data/cookbooks/java/recipes/windows.rb +82 -0
  53. data/cookbooks/java/resources/alternatives.rb +30 -0
  54. data/cookbooks/java/resources/ark.rb +58 -0
  55. data/cookbooks/java/templates/default/ibm_jdk.installer.properties.erb +3 -0
  56. data/cookbooks/java/templates/default/oracle.jinfo.erb +6 -0
  57. data/cookbooks/rvm/.foodcritic +1 -0
  58. data/cookbooks/rvm/.gitignore +7 -0
  59. data/cookbooks/rvm/.kitchen.yml +66 -0
  60. data/cookbooks/rvm/.travis.yml +9 -0
  61. data/cookbooks/rvm/Berksfile +10 -0
  62. data/cookbooks/rvm/CHANGELOG.md +253 -0
  63. data/cookbooks/rvm/CODE_OF_CONDUCT.md +12 -0
  64. data/cookbooks/rvm/CONTRIBUTING.md +26 -0
  65. data/cookbooks/rvm/Gemfile +20 -0
  66. data/cookbooks/rvm/Guardfile +12 -0
  67. data/cookbooks/rvm/README.md +1459 -0
  68. data/cookbooks/rvm/Rakefile +18 -0
  69. data/cookbooks/rvm/attributes/.gitkeep +0 -0
  70. data/cookbooks/rvm/attributes/default.rb +68 -0
  71. data/cookbooks/rvm/attributes/gem_package.rb +23 -0
  72. data/cookbooks/rvm/attributes/vagrant.rb +23 -0
  73. data/cookbooks/rvm/libraries/chef_rvm_environment_helpers.rb +55 -0
  74. data/cookbooks/rvm/libraries/chef_rvm_gemset_helpers.rb +67 -0
  75. data/cookbooks/rvm/libraries/chef_rvm_recipe_helpers.rb +80 -0
  76. data/cookbooks/rvm/libraries/chef_rvm_ruby_helpers.rb +95 -0
  77. data/cookbooks/rvm/libraries/chef_rvm_set_helpers.rb +16 -0
  78. data/cookbooks/rvm/libraries/chef_rvm_shell_helpers.rb +57 -0
  79. data/cookbooks/rvm/libraries/chef_rvm_string_cache.rb +104 -0
  80. data/cookbooks/rvm/libraries/chef_rvm_string_helpers.rb +61 -0
  81. data/cookbooks/rvm/libraries/chef_rvm_version_helpers.rb +45 -0
  82. data/cookbooks/rvm/libraries/gem_package_monkeypatch.rb +34 -0
  83. data/cookbooks/rvm/libraries/provider_rvm_installation.rb +185 -0
  84. data/cookbooks/rvm/libraries/resource_rvm_installation.rb +103 -0
  85. data/cookbooks/rvm/libraries/rvm_chef_user_environment.rb +55 -0
  86. data/cookbooks/rvm/libraries/rvm_rubygems_package.rb +189 -0
  87. data/cookbooks/rvm/libraries/rvm_shell_chef_wrapper.rb +99 -0
  88. data/cookbooks/rvm/metadata.json +51 -0
  89. data/cookbooks/rvm/providers/default_ruby.rb +63 -0
  90. data/cookbooks/rvm/providers/environment.rb +78 -0
  91. data/cookbooks/rvm/providers/gemset.rb +118 -0
  92. data/cookbooks/rvm/providers/global_gem.rb +97 -0
  93. data/cookbooks/rvm/providers/ruby.rb +178 -0
  94. data/cookbooks/rvm/providers/shell.rb +121 -0
  95. data/cookbooks/rvm/providers/wrapper.rb +73 -0
  96. data/cookbooks/rvm/recipes/.gitkeep +0 -0
  97. data/cookbooks/rvm/recipes/default.rb +40 -0
  98. data/cookbooks/rvm/recipes/gem_package.rb +33 -0
  99. data/cookbooks/rvm/recipes/system.rb +37 -0
  100. data/cookbooks/rvm/recipes/system_install.rb +42 -0
  101. data/cookbooks/rvm/recipes/user.rb +43 -0
  102. data/cookbooks/rvm/recipes/user_install.rb +58 -0
  103. data/cookbooks/rvm/recipes/vagrant.rb +37 -0
  104. data/cookbooks/rvm/resources/default_ruby.rb +31 -0
  105. data/cookbooks/rvm/resources/environment.rb +31 -0
  106. data/cookbooks/rvm/resources/gem.rb +37 -0
  107. data/cookbooks/rvm/resources/gemset.rb +32 -0
  108. data/cookbooks/rvm/resources/global_gem.rb +34 -0
  109. data/cookbooks/rvm/resources/ruby.rb +32 -0
  110. data/cookbooks/rvm/resources/shell.rb +41 -0
  111. data/cookbooks/rvm/resources/wrapper.rb +34 -0
  112. data/cookbooks/rvm/templates/default/rvmrc.erb +14 -0
  113. data/cookbooks/rvm/templates/default/vagrant-chef-client-wrapper.erb +23 -0
  114. data/cookbooks/rvm/templates/default/vagrant-chef-solo-wrapper.erb +23 -0
  115. data/cookbooks/rvm/test/integration/data_bags/users/virgil1.json +4 -0
  116. data/cookbooks/rvm/test/integration/data_bags/users/virgil2.json +4 -0
  117. data/cookbooks/rvm/test/integration/data_bags/users/wigglebottom.json +3 -0
  118. data/cookbooks/rvm/test/integration/installs/bats/version_pinning.bats +13 -0
  119. data/cookbooks/rvm/test/integration/rubies/bats/_common.bash +16 -0
  120. data/cookbooks/rvm/test/integration/rubies/bats/verify_1.9.3.bats +9 -0
  121. data/cookbooks/rvm/test/integration/rubies/bats/verify_jruby.bats +12 -0
  122. data/cookbooks/rvm/test/integration/rubies/bats/verify_patch_support.bats +19 -0
  123. data/cookbooks/rvm/test/integration/rubies/bats/verify_ree.bats +9 -0
  124. data/cookbooks/rvm/test/integration/rubies/bats/verify_rubygems_version_support.bats +15 -0
  125. data/cookbooks/rvm/test/integration/stock_system_and_user/bats/system.bats +45 -0
  126. data/cookbooks/rvm/test/unit/libraries/provider_rvm_installation_spec.rb +220 -0
  127. data/cookbooks/rvm/test/unit/libraries/resource_rvm_installation_spec.rb +139 -0
  128. data/cookbooks/rvm/test/unit/spec_helper.rb +23 -0
  129. data/cookbooks/scratchify/.chef/knife.rb +9 -0
  130. data/cookbooks/scratchify/Berksfile +16 -0
  131. data/cookbooks/scratchify/Berksfile.lock +19 -0
  132. data/cookbooks/scratchify/LICENSE.txt +21 -0
  133. data/cookbooks/scratchify/README.md +41 -0
  134. data/cookbooks/scratchify/Thorfile +5 -0
  135. data/cookbooks/scratchify/bin/console +14 -0
  136. data/cookbooks/scratchify/bin/scratchify +6 -0
  137. data/cookbooks/scratchify/bin/setup +7 -0
  138. data/cookbooks/scratchify/chefignore +101 -0
  139. data/cookbooks/scratchify/data_bags/users/deploy.json +6 -0
  140. data/cookbooks/scratchify/environments/.gitkeep +0 -0
  141. data/cookbooks/scratchify/from-scratch.gemspec +36 -0
  142. data/cookbooks/scratchify/lib/from/scratch.rb +31 -0
  143. data/cookbooks/scratchify/lib/from/scratch/interviewer.rb +35 -0
  144. data/cookbooks/scratchify/lib/from/scratch/version.rb +3 -0
  145. data/cookbooks/scratchify/metadata.json +36 -0
  146. data/cookbooks/scratchify/nodes/normfood.ru.json +75 -0
  147. data/cookbooks/scratchify/recipes/default.rb +0 -0
  148. data/cookbooks/scratchify/roles/.gitkeep +0 -0
  149. data/cookbooks/scratchify/spec/from/scratch_spec.rb +11 -0
  150. data/cookbooks/scratchify/spec/spec_helper.rb +2 -0
  151. data/cookbooks/user/.gitignore +5 -0
  152. data/cookbooks/user/.kitchen.yml +46 -0
  153. data/cookbooks/user/.travis.yml +4 -0
  154. data/cookbooks/user/Berksfile +7 -0
  155. data/cookbooks/user/CHANGELOG.md +101 -0
  156. data/cookbooks/user/Gemfile +14 -0
  157. data/cookbooks/user/README.md +447 -0
  158. data/cookbooks/user/Rakefile +21 -0
  159. data/cookbooks/user/attributes/default.rb +50 -0
  160. data/cookbooks/user/libraries/matchers.rb +26 -0
  161. data/cookbooks/user/metadata.json +46 -0
  162. data/cookbooks/user/providers/account.rb +212 -0
  163. data/cookbooks/user/recipes/data_bag.rb +59 -0
  164. data/cookbooks/user/recipes/default.rb +18 -0
  165. data/cookbooks/user/resources/account.rb +41 -0
  166. data/cookbooks/user/templates/default/authorized_keys.erb +7 -0
  167. data/from-scratch.gemspec +33 -0
  168. data/lib/from-scratch.rb +25 -0
  169. data/lib/from-scratch/version.rb +3 -0
  170. data/metadata.rb +15 -0
  171. data/recipes/default.rb +0 -0
  172. data/templates/node.json.erb +31 -0
  173. data/templates/user.json.erb +6 -0
  174. metadata +330 -0
@@ -0,0 +1,255 @@
1
+ #
2
+ # Author:: Bryan W. Berry (<bryan.berry@gmail.com>)
3
+ # Cookbook Name:: java
4
+ # Provider:: ark
5
+ #
6
+ # Copyright 2011, Bryan w. Berry
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+
20
+ require 'chef/mixin/shell_out'
21
+ include Chef::Mixin::ShellOut
22
+
23
+ def whyrun_supported?
24
+ true
25
+ end
26
+
27
+ def parse_app_dir_name url
28
+ file_name = url.split('/')[-1]
29
+ # funky logic to parse oracle's non-standard naming convention
30
+ # for jdk1.6
31
+ if file_name =~ /^(jre|jdk|server-jre).*$/
32
+ major_num = file_name.scan(/\d/)[0]
33
+ update_token = file_name.scan(/u(\d+)/)[0]
34
+ update_num = update_token ? update_token[0] : "0"
35
+ # pad a single digit number with a zero
36
+ if update_num.length < 2
37
+ update_num = "0" + update_num
38
+ end
39
+ package_name = (file_name =~ /^server-jre.*$/) ? "jdk" : file_name.scan(/[a-z]+/)[0]
40
+ if update_num == "00"
41
+ app_dir_name = "#{package_name}1.#{major_num}.0"
42
+ else
43
+ app_dir_name = "#{package_name}1.#{major_num}.0_#{update_num}"
44
+ end
45
+ else
46
+ app_dir_name = file_name.split(/(.tgz|.tar.gz|.zip)/)[0]
47
+ app_dir_name = app_dir_name.split("-bin")[0]
48
+ end
49
+ [app_dir_name, file_name]
50
+ end
51
+
52
+ def oracle_downloaded?(download_path, new_resource)
53
+ if ::File.exists? download_path
54
+ require 'digest'
55
+ if new_resource.checksum =~ /^[0-9a-f]{32}$/
56
+ downloaded_md5 = Digest::MD5.file(download_path).hexdigest
57
+ downloaded_md5 == new_resource.checksum
58
+ else
59
+ downloaded_sha = Digest::SHA256.file(download_path).hexdigest
60
+ downloaded_sha == new_resource.checksum
61
+ end
62
+ else
63
+ return false
64
+ end
65
+ end
66
+
67
+ def download_direct_from_oracle(tarball_name, new_resource)
68
+ download_path = "#{Chef::Config[:file_cache_path]}/#{tarball_name}"
69
+ cookie = "oraclelicense=accept-securebackup-cookie"
70
+ if node['java']['oracle']['accept_oracle_download_terms']
71
+ # install the curl package
72
+ p = package "curl" do
73
+ action :nothing
74
+ end
75
+ # no converge_by block since the package provider will take care of this run_action
76
+ p.run_action(:install)
77
+ description = "download oracle tarball straight from the server"
78
+ converge_by(description) do
79
+ Chef::Log.debug "downloading oracle tarball straight from the source"
80
+ cmd = shell_out!(
81
+ %Q[ curl --create-dirs -L --retry #{new_resource.retries} --retry-delay #{new_resource.retry_delay} --cookie "#{cookie}" #{new_resource.url} -o #{download_path} --connect-timeout #{new_resource.connect_timeout} ]
82
+ )
83
+ end
84
+ else
85
+ Chef::Application.fatal!("You must set the attribute node['java']['oracle']['accept_oracle_download_terms'] to true if you want to download directly from the oracle site!")
86
+ end
87
+ end
88
+
89
+ action :install do
90
+ app_dir_name, tarball_name = parse_app_dir_name(new_resource.url)
91
+ app_root = new_resource.app_home.split('/')[0..-2].join('/')
92
+ app_dir = app_root + '/' + app_dir_name
93
+ if new_resource.group
94
+ app_group = new_resource.group
95
+ else
96
+ app_group = new_resource.owner
97
+ end
98
+
99
+ if !new_resource.default and new_resource.use_alt_suffix
100
+ Chef::Log.debug("processing alternate jdk")
101
+ app_dir = app_dir + "_alt"
102
+ app_home = new_resource.app_home + "_alt"
103
+ else
104
+ app_home = new_resource.app_home
105
+ end
106
+
107
+ unless ::File.exists?(app_dir)
108
+ Chef::Log.info "Adding #{new_resource.name} to #{app_dir}"
109
+ require 'fileutils'
110
+
111
+ unless ::File.exists?(app_root)
112
+ description = "create dir #{app_root} and change owner to #{new_resource.owner}:#{app_group}"
113
+ converge_by(description) do
114
+ FileUtils.mkdir app_root, :mode => new_resource.app_home_mode
115
+ FileUtils.chown new_resource.owner, app_group, app_root
116
+ end
117
+ end
118
+
119
+ if new_resource.url =~ /^http:\/\/download.oracle.com.*$/
120
+ download_path = "#{Chef::Config[:file_cache_path]}/#{tarball_name}"
121
+ if oracle_downloaded?(download_path, new_resource)
122
+ Chef::Log.debug("oracle tarball already downloaded, not downloading again")
123
+ else
124
+ download_direct_from_oracle tarball_name, new_resource
125
+ end
126
+ else
127
+ Chef::Log.debug("downloading tarball from an unofficial repository")
128
+ r = remote_file "#{Chef::Config[:file_cache_path]}/#{tarball_name}" do
129
+ source new_resource.url
130
+ checksum new_resource.checksum
131
+ retries new_resource.retries
132
+ retry_delay new_resource.retry_delay
133
+ mode 0755
134
+ action :nothing
135
+ end
136
+ #no converge by on run_action remote_file takes care of it.
137
+ r.run_action(:create_if_missing)
138
+ end
139
+
140
+ description = "extract compressed data into Chef file cache path and
141
+ move extracted data to #{app_dir}"
142
+ converge_by(description) do
143
+ case tarball_name
144
+ when /^.*\.bin/
145
+ cmd = shell_out(
146
+ %Q[ cd "#{Chef::Config[:file_cache_path]}";
147
+ bash ./#{tarball_name} -noregister
148
+ ] )
149
+ unless cmd.exitstatus == 0
150
+ Chef::Application.fatal!("Failed to extract file #{tarball_name}!")
151
+ end
152
+ when /^.*\.zip/
153
+ cmd = shell_out(
154
+ %Q[ unzip "#{Chef::Config[:file_cache_path]}/#{tarball_name}" -d "#{Chef::Config[:file_cache_path]}" ]
155
+ )
156
+ unless cmd.exitstatus == 0
157
+ Chef::Application.fatal!("Failed to extract file #{tarball_name}!")
158
+ end
159
+ when /^.*\.(tar.gz|tgz)/
160
+ cmd = shell_out(
161
+ %Q[ tar xvzf "#{Chef::Config[:file_cache_path]}/#{tarball_name}" -C "#{Chef::Config[:file_cache_path]}" --no-same-owner]
162
+ )
163
+ unless cmd.exitstatus == 0
164
+ Chef::Application.fatal!("Failed to extract file #{tarball_name}!")
165
+ end
166
+ end
167
+
168
+ cmd = shell_out(
169
+ %Q[ mv "#{Chef::Config[:file_cache_path]}/#{app_dir_name}" "#{app_dir}" ]
170
+ )
171
+ unless cmd.exitstatus == 0
172
+ Chef::Application.fatal!(%Q[ Command \' mv "#{Chef::Config[:file_cache_path]}/#{app_dir_name}" "#{app_dir}" \' failed ])
173
+ end
174
+
175
+ # change ownership of extracted files
176
+ FileUtils.chown_R new_resource.owner, app_group, app_root
177
+ end
178
+ new_resource.updated_by_last_action(true)
179
+ end
180
+
181
+ #set up .jinfo file for update-java-alternatives
182
+ java_name = app_home.split('/')[-1]
183
+ jinfo_file = "#{app_root}/.#{java_name}.jinfo"
184
+ if platform_family?("debian") && !::File.exists?(jinfo_file)
185
+ description = "Add #{jinfo_file} for debian"
186
+ converge_by(description) do
187
+ Chef::Log.debug "Adding #{jinfo_file} for debian"
188
+ template jinfo_file do
189
+ cookbook "java"
190
+ source "oracle.jinfo.erb"
191
+ owner new_resource.owner
192
+ group app_group
193
+ variables(
194
+ :priority => new_resource.alternatives_priority,
195
+ :bin_cmds => new_resource.bin_cmds,
196
+ :name => java_name,
197
+ :app_dir => app_home
198
+ )
199
+ action :create
200
+ end
201
+ end
202
+ new_resource.updated_by_last_action(true)
203
+ end
204
+
205
+ #link app_home to app_dir
206
+ Chef::Log.debug "app_home is #{app_home} and app_dir is #{app_dir}"
207
+ current_link = ::File.symlink?(app_home) ? ::File.readlink(app_home) : nil
208
+ if current_link != app_dir
209
+ description = "Symlink #{app_dir} to #{app_home}"
210
+ converge_by(description) do
211
+ Chef::Log.debug "Symlinking #{app_dir} to #{app_home}"
212
+ FileUtils.rm_f app_home
213
+ FileUtils.ln_sf app_dir, app_home
214
+ FileUtils.chown new_resource.owner, app_group, app_home
215
+ end
216
+ end
217
+
218
+ #update-alternatives
219
+ java_alternatives 'set-java-alternatives' do
220
+ java_location app_home
221
+ bin_cmds new_resource.bin_cmds
222
+ priority new_resource.alternatives_priority
223
+ default new_resource.default
224
+ reset_alternatives new_resource.reset_alternatives
225
+ action :set
226
+ end
227
+ end
228
+
229
+ action :remove do
230
+ app_dir_name, tarball_name = parse_app_dir_name(new_resource.url)
231
+ app_root = new_resource.app_home.split('/')[0..-2].join('/')
232
+ app_dir = app_root + '/' + app_dir_name
233
+
234
+ unless new_resource.default
235
+ Chef::Log.debug("processing alternate jdk")
236
+ app_dir = app_dir + "_alt"
237
+ app_home = new_resource.app_home + "_alt"
238
+ else
239
+ app_home = new_resource.app_home
240
+ end
241
+
242
+ if ::File.exists?(app_dir)
243
+ java_alternatives 'unset-java-alternatives' do
244
+ java_location app_home
245
+ bin_cmds new_resource.bin_cmds
246
+ action :unset
247
+ end
248
+ description = "remove #{new_resource.name} at #{app_dir}"
249
+ converge_by(description) do
250
+ Chef::Log.info "Removing #{new_resource.name} at #{app_dir}"
251
+ FileUtils.rm_rf app_dir
252
+ end
253
+ new_resource.updated_by_last_action(true)
254
+ end
255
+ end
@@ -0,0 +1,22 @@
1
+ #
2
+ # Author:: Seth Chisamore (<schisamo@opscode.com>)
3
+ # Cookbook Name:: java
4
+ # Recipe:: default
5
+ #
6
+ # Copyright 2008-2011, Opscode, Inc.
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ include_recipe "java::set_attributes_from_version"
22
+ include_recipe "java::#{node['java']['install_flavor']}"
@@ -0,0 +1,19 @@
1
+ # Cookbook Name:: java
2
+ # Recipe:: default_java_symlink
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+
16
+ link '/usr/lib/jvm/default-java' do
17
+ to node['java']['java_home']
18
+ not_if { node['java']['java_home'] == '/usr/lib/jvm/default-java' }
19
+ end
@@ -0,0 +1,3 @@
1
+ include_recipe 'homebrew'
2
+ include_recipe 'homebrew::cask'
3
+ homebrew_cask 'java'
@@ -0,0 +1,76 @@
1
+ # Author:: Joshua Timberman (<joshua@opscode.com>)
2
+ # Cookbook Name:: java
3
+ # Recipe:: ibm
4
+ #
5
+ # Copyright 2013, Opscode, Inc.
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require 'uri'
20
+
21
+ source_url = node['java']['ibm']['url']
22
+ jdk_uri = ::URI.parse(source_url)
23
+ jdk_filename = ::File.basename(jdk_uri.path)
24
+
25
+ unless valid_ibm_jdk_uri?(source_url)
26
+ raise "You must set the attribute `node['java']['ibm']['url']` to a valid HTTP URI"
27
+ end
28
+
29
+ # "installable package" installer needs rpm on Ubuntu
30
+ if platform_family?('debian') && jdk_filename !~ /archive/
31
+ package "rpm" do
32
+ action :install
33
+ end
34
+ end
35
+
36
+ template "#{Chef::Config[:file_cache_path]}/installer.properties" do
37
+ source "ibm_jdk.installer.properties.erb"
38
+ only_if { node['java']['ibm']['accept_ibm_download_terms'] }
39
+ end
40
+
41
+ remote_file "#{Chef::Config[:file_cache_path]}/#{jdk_filename}" do
42
+ source source_url
43
+ mode 00755
44
+ if node['java']['ibm']['checksum']
45
+ checksum node['java']['ibm']['checksum']
46
+ action :create
47
+ else
48
+ action :create_if_missing
49
+ end
50
+ notifies :run, "execute[install-ibm-java]", :immediately
51
+ end
52
+
53
+ java_alternatives 'set-java-alternatives' do
54
+ java_location node['java']['java_home']
55
+ default node['java']['set_default']
56
+ case node['java']['jdk_version'].to_s
57
+ when "6"
58
+ bin_cmds node['java']['ibm']['6']['bin_cmds']
59
+ when "7"
60
+ bin_cmds node['java']['ibm']['7']['bin_cmds']
61
+ end
62
+ action :nothing
63
+ end
64
+
65
+ execute "install-ibm-java" do
66
+ cwd Chef::Config[:file_cache_path]
67
+ environment({
68
+ "_JAVA_OPTIONS" => "-Dlax.debug.level=3 -Dlax.debug.all=true",
69
+ "LAX_DEBUG" => "1"
70
+ })
71
+ command "./#{jdk_filename} -f ./installer.properties -i silent"
72
+ notifies :set, 'java_alternatives[set-java-alternatives]', :immediately
73
+ creates "#{node['java']['java_home']}/jre/bin/java"
74
+ end
75
+
76
+ include_recipe "java::set_java_home"
@@ -0,0 +1,70 @@
1
+ # Cookbook Name:: java
2
+ # Recipe:: ibm_tar
3
+ #
4
+ # Copyright 2013, Opscode, Inc.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ require 'uri'
19
+
20
+ source_url = node['java']['ibm']['url']
21
+ jdk_uri = ::URI.parse(source_url)
22
+ jdk_filename = ::File.basename(jdk_uri.path)
23
+
24
+ unless valid_ibm_jdk_uri?(source_url)
25
+ raise "You must set the attribute `node['java']['ibm']['url']` to a valid URI"
26
+ end
27
+
28
+ unless jdk_filename =~ /\.(tar.gz|tgz)$/
29
+ raise "The attribute `node['java']['ibm']['url']` must specify a .tar.gz file"
30
+ end
31
+
32
+ remote_file "#{Chef::Config[:file_cache_path]}/#{jdk_filename}" do
33
+ source source_url
34
+ mode 00755
35
+ if node['java']['ibm']['checksum']
36
+ checksum node['java']['ibm']['checksum']
37
+ action :create
38
+ else
39
+ action :create_if_missing
40
+ end
41
+ notifies :create, "directory[create-java-home]", :immediately
42
+ notifies :run, "execute[untar-ibm-java]", :immediately
43
+ end
44
+
45
+ directory "create-java-home" do
46
+ path node['java']['java_home']
47
+ mode 00755
48
+ recursive true
49
+ end
50
+
51
+ java_alternatives 'set-java-alternatives' do
52
+ java_location node['java']['java_home']
53
+ default node['java']['set_default']
54
+ case node['java']['jdk_version'].to_s
55
+ when "6"
56
+ bin_cmds node['java']['ibm']['6']['bin_cmds']
57
+ when "7"
58
+ bin_cmds node['java']['ibm']['7']['bin_cmds']
59
+ end
60
+ action :nothing
61
+ end
62
+
63
+ execute "untar-ibm-java" do
64
+ cwd Chef::Config[:file_cache_path]
65
+ command "tar xzf ./#{jdk_filename} -C #{node['java']['java_home']} --strip 1"
66
+ notifies :set, 'java_alternatives[set-java-alternatives]', :immediately
67
+ creates "#{node['java']['java_home']}/jre/bin/java"
68
+ end
69
+
70
+ include_recipe "java::set_java_home"