• R/O
  • HTTP
  • SSH
  • HTTPS

grid-chef-repo: Commit

Grid環境構築用のChefリポジトリです。


Commit MetaInfo

Revision318873347ac2001922f3ab9e1e69420c16333928 (tree)
Zeit2016-12-17 22:43:56
Autorwhitestar <whitestar@gaea...>
Commiterwhitestar

Log Message

adds sha256 checksum verification of the downloaded DC/OS artifacts.

Ändern Zusammenfassung

Diff

--- a/cookbooks/dcos-grid/CHANGELOG.md
+++ b/cookbooks/dcos-grid/CHANGELOG.md
@@ -1,6 +1,11 @@
11 dcos-grid CHANGELOG
22 ===================
33
4+0.5.0
5+-----
6+- improves CLI installation.
7+- adds sha256 checksum verification of the downloaded DC/OS artifacts.
8+
49 0.4.9
510 -----
611 - adds `dcos-grid::universe-server` recipe.
--- a/cookbooks/dcos-grid/README.md
+++ b/cookbooks/dcos-grid/README.md
@@ -47,9 +47,15 @@ This cookbook sets up your customized DC/OS cluster on bare metal, virtual machi
4747 |Key|Type|Description, example|Default|
4848 |:--|:--|:--|:--|
4949 |`['dcos-grid']['dcos_release_url']`|String|DC/OS download URL.|`'https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh'`|
50+|`['dcos-grid']['dcos_release_checksum']`|String|sha256 checksum of the DC/OS release. (ver. 0.5.0 or later)|`nil` (no check)|
5051 |`['dcos-grid']['dcos_release_script_name']`|String|OSS edition: `'dcos_generate_config.sh'`, Enterprise edition: `'dcos_generate_config.ee.sh'` (ver. 0.4.8 or later).|`Pathname(URI(node['dcos-grid']['dcos_release_url']).path).basename`|
51-|`['dcos-grid']['dcos_cli_release_url']`|String|DC/OS CLI download URL (ver. 0.3.0 or later).|`'https://downloads.dcos.io/binaries/cli/linux/x86-64/dcos-1.8/dcos'`|
52-|`['dcos-grid']['dcos_cli_upgrade']`|Boolean|Whether upgrade DC/OS CLI or not (ver. 0.4.3 or later).|`false`|
52+|`['dcos-grid']['dcos_cli_release_url']`|String|DEPRECATED: DC/OS CLI download URL (ver. 0.3.0 or later).|`"https://downloads.dcos.io/binaries/cli/linux/x86-64/#{node['dcos-grid']['cli']['version']}/dcos"`|
53+|`['dcos-grid']['dcos_cli_upgrade']`|Boolean|DEPRECATED: Whether upgrade DC/OS CLI or not (ver. 0.4.3 or later).|`false`|
54+|`['dcos-grid']['cli']['version']`|String|DC/OS CLI version (ver. 0.5.0 or later)|`'0.4.14'`|
55+|`['dcos-grid']['cli']['release_url']`|String| (ver. 0.5.0 or later)|`node['dcos-grid']['dcos_cli_release_url']`|
56+|`['dcos-grid']['cli']['release_checksum']`|String|sha256 checksum of the DC/OS CLI release. (ver. 0.5.0 or later)|`nil` (no check)|
57+|`['dcos-grid']['cli']['auto_upgrade']`|Boolean| (ver. 0.5.0 or later)|`node['dcos-grid']['dcos_cli_upgrade']`|
58+|`['dcos-grid']['cli']['install_path']`|String| (ver. 0.5.0 or later)|`'/usr/local/bin/dcos'`|
5359 |`['dcos-grid']['docker']['apt_repo']['url']`|String|DEPRECATED: use `['docker-grid']['apt_repo']['url']` (ver. 0.4.0 or later)|`nil`|
5460 |`['dcos-grid']['docker']['apt_repo']['keyserver']`|String|DEPRECATED: use `['docker-grid']['apt_repo']['keyserver']` (ver. 0.4.0 or later)|`nil`|
5561 |`['dcos-grid']['docker']['apt_repo']['recv-keys']`|String|DEPRECATED: use `['docker-grid']['apt_repo']['recv-keys']` (ver. 0.4.0 or later)|`nil`|
--- a/cookbooks/dcos-grid/attributes/default.rb
+++ b/cookbooks/dcos-grid/attributes/default.rb
@@ -21,9 +21,19 @@ require 'uri'
2121 require 'pathname'
2222
2323 default['dcos-grid']['dcos_release_url'] = 'https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh'
24+default['dcos-grid']['dcos_release_checksum'] = nil
25+# DC/OS 1.8.7
26+#default['dcos-grid']['dcos_release_checksum'] = 'ddd9a86e4fc6ab149fb6c2ce38fc7d7c2f5891e62fb5ed41b91c3e99e02ed536'
2427 default['dcos-grid']['dcos_release_script_name'] = Pathname(URI(node['dcos-grid']['dcos_release_url']).path).basename
25-default['dcos-grid']['dcos_cli_release_url'] = 'https://downloads.dcos.io/binaries/cli/linux/x86-64/dcos-1.8/dcos'
28+default['dcos-grid']['cli']['version'] = '0.4.14' # or dcos-1.8
29+default['dcos-grid']['dcos_cli_release_url'] = "https://downloads.dcos.io/binaries/cli/linux/x86-64/#{node['dcos-grid']['cli']['version']}/dcos"
2630 default['dcos-grid']['dcos_cli_upgrade'] = false
31+default['dcos-grid']['cli']['release_url'] = node['dcos-grid']['dcos_cli_release_url']
32+default['dcos-grid']['cli']['release_checksum'] = nil
33+# DC/OS CLI 0.4.14
34+#default['dcos-grid']['cli']['release_checksum'] = '070587062c7c0b926e2438a383b05c942e99ccf909421feed4941d06e3846fa7'
35+default['dcos-grid']['cli']['auto_upgrade'] = node['dcos-grid']['dcos_cli_upgrade']
36+default['dcos-grid']['cli']['install_path'] = '/usr/local/bin/dcos'
2737 # DEPRECATED: ['dcos-grid']['docker'][*] attributes. Use ['docker-grid'][*]
2838 default['dcos-grid']['docker']['apt_repo'] = {
2939 'url' => nil,
--- a/cookbooks/dcos-grid/metadata.rb
+++ b/cookbooks/dcos-grid/metadata.rb
@@ -5,7 +5,7 @@ maintainer_email ''
55 license 'Apache 2.0'
66 description 'Installs/Configures DC/OS Cluster Node.'
77 long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
8-version '0.4.9'
8+version '0.5.0'
99 source_url 'http://scm.osdn.jp/gitroot/metasearch/grid-chef-repo.git'
1010 issues_url 'https://osdn.jp/projects/metasearch/ticket'
1111
--- a/cookbooks/dcos-grid/recipes/cli.rb
+++ b/cookbooks/dcos-grid/recipes/cli.rb
@@ -18,6 +18,7 @@
1818 #
1919
2020 genconf_dir = node['dcos-grid']['bootstrap']['genconf_dir']
21+cli_ver = node['dcos-grid']['cli']['version']
2122
2223 resources(directory: genconf_dir) rescue directory genconf_dir do
2324 owner 'root'
@@ -46,6 +47,14 @@ when 'debian'
4647 end
4748 =end
4849
50+[
51+ 'curl',
52+].each {|pkg|
53+ resources(package: pkg) rescue package pkg do
54+ action :install
55+ end
56+}
57+
4958 template "#{File.dirname(genconf_dir)}/cli_setup.sh" do
5059 source 'opt/dcos-grid/cli_setup.sh'
5160 owner 'root'
@@ -57,5 +66,6 @@ bash 'install_dcos_cli' do
5766 code <<-"EOH"
5867 #{File.dirname(genconf_dir)}/cli_setup.sh -y
5968 EOH
60- not_if { ::File.exist?('/usr/local/bin/dcos') } unless node['dcos-grid']['dcos_cli_upgrade']
69+ not_if "[ \"$(dcos --version | grep dcoscli.version | awk -F '=' '{print $2}')\" = #{cli_ver} ]"
70+ not_if { ::File.exist?(node['dcos-grid']['cli']['install_path']) } unless node['dcos-grid']['cli']['auto_upgrade']
6171 end
--- a/cookbooks/dcos-grid/recipes/node-commons.rb
+++ b/cookbooks/dcos-grid/recipes/node-commons.rb
@@ -57,7 +57,7 @@ when 'rhel'
5757 'curl',
5858 'ipset',
5959 ].each {|pkg|
60- package pkg do
60+ resources(package: pkg) rescue package pkg do
6161 action :install
6262 end
6363 }
@@ -82,7 +82,7 @@ when 'debian'
8282 'curl',
8383 'ipset',
8484 ].each {|pkg|
85- package pkg do
85+ resources(package: pkg) rescue package pkg do
8686 action :install
8787 end
8888 }
--- a/cookbooks/dcos-grid/recipes/universe-build-env.rb
+++ b/cookbooks/dcos-grid/recipes/universe-build-env.rb
@@ -28,7 +28,7 @@ when 'rhel'
2828 'python34-setuptools',
2929 'jq',
3030 ].each {|pkg|
31- package pkg do
31+ resources(package: pkg) rescue package pkg do
3232 action :install
3333 end
3434 }
@@ -42,7 +42,7 @@ when 'debian'
4242 'python3-pip',
4343 'jq',
4444 ].each {|pkg|
45- package pkg do
45+ resources(package: pkg) rescue package pkg do
4646 action :install
4747 end
4848 }
--- a/cookbooks/dcos-grid/templates/default/opt/dcos-grid/bootstrap_setup.sh
+++ b/cookbooks/dcos-grid/templates/default/opt/dcos-grid/bootstrap_setup.sh
@@ -7,6 +7,7 @@ PATH=.:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:`dirname $0`
77
88 install_dir=<%= File.dirname(node['dcos-grid']['bootstrap']['genconf_dir']) %>
99 release_script_name=<%= node['dcos-grid']['dcos_release_script_name'] %>
10+rel_checksum='<%= node['dcos-grid']['dcos_release_checksum'] %>'
1011 port=<%= node['dcos-grid']['bootstrap']['port'] %>
1112
1213 usage() {
@@ -99,6 +100,13 @@ else
99100
100101 echo 'Downloading DC/OS release ...'
101102 execute "$sudo curl -O <%= node['dcos-grid']['dcos_release_url'] %>"
103+ if [ "$rel_checksum" != '' ]; then
104+ if [ "$(sha256sum $release_script_name | awk '{print $1}')" != $rel_checksum ]; then
105+ echo '[ERROR] dcos binary file checksum mismatch.'
106+ execute "$sudo rm $release_script_name"
107+ exit 1
108+ fi
109+ fi
102110
103111 echo 'Generating DC/OS configurations ...'
104112 execute "$sudo bash $release_script_name"
--- a/cookbooks/dcos-grid/templates/default/opt/dcos-grid/bootstrap_upgrade.sh
+++ b/cookbooks/dcos-grid/templates/default/opt/dcos-grid/bootstrap_upgrade.sh
@@ -7,6 +7,7 @@ PATH=.:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:`dirname $0`
77
88 install_dir=<%= File.dirname(node['dcos-grid']['bootstrap']['genconf_dir']) %>
99 release_script_name=<%= node['dcos-grid']['dcos_release_script_name'] %>
10+rel_checksum='<%= node['dcos-grid']['dcos_release_checksum'] %>'
1011 port=<%= node['dcos-grid']['bootstrap']['port'] %>
1112
1213 usage() {
@@ -110,6 +111,13 @@ upgrade() {
110111 else
111112 echo 'Downloading new DC/OS release ...'
112113 execute "$sudo curl -O <%= node['dcos-grid']['dcos_release_url'] %>"
114+ if [ "$rel_checksum" != '' ]; then
115+ if [ "$(sha256sum $release_script_name | awk '{print $1}')" != $rel_checksum ]; then
116+ echo '[ERROR] dcos binary file checksum mismatch.'
117+ execute "$sudo rm $release_script_name"
118+ exit 1
119+ fi
120+ fi
113121 fi
114122
115123 echo 'Generating new DC/OS configurations ...'
--- a/cookbooks/dcos-grid/templates/default/opt/dcos-grid/cli_setup.sh
+++ b/cookbooks/dcos-grid/templates/default/opt/dcos-grid/cli_setup.sh
@@ -2,6 +2,9 @@
22
33 PATH=.:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:`dirname $0`
44
5+install_path=<%= node['dcos-grid']['cli']['install_path'] %>
6+cli_checksum='<%= node['dcos-grid']['cli']['release_checksum'] %>'
7+
58 usage() {
69 echo 'Usage: cli_setup.sh [-y] [-h]'
710 echo 'This script sets up DC/OS client.'
@@ -60,9 +63,16 @@ done
6063 sudo='sudo'
6164 [ `whoami` = 'root' ] && sudo=''
6265
63-execute "$sudo curl <%= node['dcos-grid']['dcos_cli_release_url'] %> -o /usr/local/bin/dcos &&
64-$sudo chmod +x /usr/local/bin/dcos &&
65-$sudo /usr/local/bin/dcos config set core.dcos_url https://<%= node['dcos-grid']['bootstrap']['config']['master_list'][0] %>"
66+execute "$sudo curl <%= node['dcos-grid']['cli']['release_url'] %> -o $install_path"
67+if [ "$cli_checksum" != '' ]; then
68+ if [ "$(sha256sum $install_path | awk '{print $1}')" != $cli_checksum ]; then
69+ echo '[ERROR] dcos binary file checksum mismatch.'
70+ execute "$sudo rm $install_path"
71+ exit 1
72+ fi
73+fi
74+execute "$sudo chmod +x $install_path &&
75+$sudo $install_path config set core.dcos_url https://<%= node['dcos-grid']['bootstrap']['config']['master_list'][0] %>"
6676
6777 # old way
6878 #mkdir -p dcos && cd dcos &&
--- a/roles/dcos0-cli.rb
+++ b/roles/dcos0-cli.rb
@@ -15,6 +15,11 @@ default_attributes(
1515
1616 override_attributes(
1717 'dcos-grid' => {
18- 'dcos_cli_upgrade' => true,
18+ 'cli' => {
19+ 'version' => '0.4.14',
20+ 'release_checksum' => '070587062c7c0b926e2438a383b05c942e99ccf909421feed4941d06e3846fa7',
21+ 'auto_upgrade' => true,
22+ 'install_path' => '/usr/local/bin/dcos',
23+ },
1924 },
2025 )
Show on old repository browser