• R/O
  • HTTP
  • SSH
  • HTTPS

grid-chef-repo: Commit

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


Commit MetaInfo

Revision2069bfa6928975424efcb5833d8d59374f732ad0 (tree)
Time2018-09-17 12:14:23
Authorwhitestar <whitestar@user...>
Commiterwhitestar

Log Message

adds autopilot features.

Change Summary

Incremental Difference

--- a/cookbooks/docker-grid/CHANGELOG.md
+++ b/cookbooks/docker-grid/CHANGELOG.md
@@ -1,5 +1,9 @@
11 # docker-grid CHANGELOG
22
3+1.3.0
4+-----
5+- adds autopilot features.
6+
37 1.2.1
48 -----
59 - adds docker-compose cleanup before installing it.
--- /dev/null
+++ b/cookbooks/docker-grid/Gemfile.lock
@@ -0,0 +1,22 @@
1+GEM
2+ remote: https://rubygems.org/
3+ specs:
4+ chef-api (0.8.0)
5+ logify (~> 0.1)
6+ mime-types
7+ logify (0.2.0)
8+ mime-types (3.2.2)
9+ mime-types-data (~> 3.2015)
10+ mime-types-data (3.2018.0812)
11+ stove (6.0.0)
12+ chef-api (~> 0.5)
13+ logify (~> 0.2)
14+
15+PLATFORMS
16+ ruby
17+
18+DEPENDENCIES
19+ stove
20+
21+BUNDLED WITH
22+ 1.16.0
--- a/cookbooks/docker-grid/README.md
+++ b/cookbooks/docker-grid/README.md
@@ -60,6 +60,7 @@ This cookbook sets up Docker engine etc.
6060 |`['docker-grid']['dind-compose']['data_dir']`|String|persistent data directory.|`"#{node['docker-grid']['dind-compose']['app_dir']}/data"`|
6161 |`['docker-grid']['dind-compose']['config']`|Hash|`docker-compose.yml` configurations.|See `attributes/default.rb`|
6262 |`['docker-grid']['engine']['skip_setup']`|Boolean||`false`|
63+|`['docker-grid']['engine']['autopilot']`|Hash|docker-engin autopilot configurations.|See `attributes/default.rb`|
6364 |`['docker-grid']['engine']['version_on_centos']`|String|Docker version for CentOS. `''` (empty) means the latest version.|`'17.12.1.ce-1'`|
6465 |`['docker-grid']['engine']['version_on_debian']`|String|Docker version for Debian. `''` (empty) means the latest version.|`'17.12.1~ce-0'`|
6566 |`['docker-grid']['engine']['version_on_ubuntu']`|String|Docker version for Ubuntu. `''` (empty) means the latest version.|`'17.12.1~ce-0'`|
@@ -73,7 +74,9 @@ This cookbook sets up Docker engine etc.
7374 |`['docker-grid']['engine']['users_allow']`|Array|Non-root users allowed to manage Docker daemon.|`[]`|
7475 |`['docker-grid']['registry']['with_ssl_cert_cookbook']`|Boolean|If this attribute is true, `node['docker-grid']['registry']['docker-compose']['config']` are are overridden by the following `common_name` attributes.|`false`|
7576 |`['docker-grid']['registry']['ssl_cert']['common_name']`|String|Registry server common name for TLS|`node['fqdn']`|
77+|`['docker-grid']['registry']['server']['autopilot']`|Hash|Resigtry server autopilot configurations.|See `attributes/default.rb`|
7678 |`['docker-grid']['registry']['server']['config']`|Hash|Registry server configurations.|See `attributes/default.rb`|
79+|`['docker-grid']['registry']['docker-compose']['autopilot']`|Hash|Registry docker-compose autopilot configurations.|See `attributes/default.rb`|
7780 |`['docker-grid']['registry']['docker-compose']['app_dir']`|String||`"#{node['docker-grid']['compose']['app_dir']}/registry"`|
7881 |`['docker-grid']['registry']['docker-compose']['host_data_volume']`|String|Data directory path on the host filesystem or `nil` (unset).|`'/var/lib/docker-registry'`|
7982 |`['docker-grid']['registry']['docker-compose']['config_format_version']`|String|`docker-compose.yml` format version. `'1'` or `'2'`|`'1'`|
--- a/cookbooks/docker-grid/Rakefile
+++ b/cookbooks/docker-grid/Rakefile
@@ -3,6 +3,58 @@ require 'rubocop/rake_task'
33 require 'foodcritic'
44 require 'stove/rake_task'
55
6+tpl_cookbook = '00cookbook'
7+cookbook_name = File.basename(Dir.pwd)
8+
9+desc 'Initialize project'
10+task :init do
11+ next if cookbook_name == tpl_cookbook
12+
13+ [
14+ '.foodcritic',
15+ '.rubocop.yml',
16+ 'Berksfile',
17+ 'concourse.yml',
18+ 'fly-vars.yml',
19+ 'fly-vars.local.yml',
20+ 'Gemfile',
21+ 'Gemfile.lock',
22+ 'version',
23+ ].each {|conf|
24+ sh "cp ../#{tpl_cookbook}/#{conf} ./" unless File.exist?(conf)
25+ }
26+
27+ ruby [
28+ %(-pne '$_.gsub!(/^cookbook-name: .*$/, "cookbook-name: #{cookbook_name}")'),
29+ '-i fly-vars.local.yml',
30+ ].join(' ')
31+end
32+
33+desc 'Update project'
34+task :update do
35+ next if cookbook_name == tpl_cookbook
36+
37+ [
38+ 'Rakefile',
39+ 'concourse.yml',
40+ 'fly-vars.yml',
41+ 'Gemfile',
42+ 'Gemfile.lock',
43+ ].each {|conf|
44+ sh "cp ../#{tpl_cookbook}/#{conf} ./"
45+ }
46+end
47+
48+desc 'fly set-pipeline'
49+task :'set-pipeline' do
50+ sh [
51+ "fly -t $CC_TARGET sp -p #{cookbook_name}-cookbook -c concourse.yml",
52+ '-l fly-vars.yml -l fly-vars.local.yml -l ~/sec/credentials-prod.yml',
53+ ].join(' ')
54+end
55+desc 'rake set-pipeline alias'
56+task sp: 'set-pipeline'
57+
658 namespace :style do
759 desc 'Run Ruby style checks'
860 RuboCop::RakeTask.new(:ruby) do |t|
--- a/cookbooks/docker-grid/attributes/default.rb
+++ b/cookbooks/docker-grid/attributes/default.rb
@@ -87,6 +87,14 @@ default['docker-grid']['dind-compose']['config'] = {
8787 }
8888
8989 default['docker-grid']['engine']['skip_setup'] = false
90+default['docker-grid']['engine']['autopilot'] = {
91+ 'enabled' => false,
92+ 'log_dir' => '/var/log',
93+ 'containers_prune_period' => '5 */4 * * *',
94+ 'images_prune_period' => '10 */4 * * *',
95+ 'volumes_prune_period' => '15 */4 * * *',
96+}
97+
9098 # dockerproject: 18.06.0.ce-3, 18.03.1.ce-1, 17.12.1.ce-1, 1.13.1-1
9199 # os-repository: yum list docker
92100 # http://mirror.centos.org/centos/7.3.1611/extras/x86_64/Packages/
@@ -190,6 +198,12 @@ rootdirectory = node.value_for_platform(
190198 'default' => '/var/lib/docker-registry',
191199 }
192200 )
201+default['docker-grid']['registry']['server']['autopilot'] = {
202+ 'enabled' => false,
203+ 'log_dir' => '/var/log',
204+ 'wait_time' => '120s',
205+ 'docker-compose_opts' => '--no-ansi',
206+}
193207 default['docker-grid']['registry']['server']['config'] = {
194208 'version' => '0.1',
195209 'log' => {
@@ -226,6 +240,13 @@ default['docker-grid']['registry']['server']['config'] = {
226240 },
227241 },
228242 }
243+
244+default['docker-grid']['registry']['docker-compose']['autopilot'] = {
245+ 'enabled' => false,
246+ 'log_dir' => '/var/log',
247+ 'wait_time' => '180s',
248+ 'docker-compose_opts' => '--no-ansi',
249+}
229250 default['docker-grid']['registry']['docker-compose']['app_dir'] = "#{node['docker-grid']['compose']['app_dir']}/registry"
230251 # ./docker-compose.yml
231252 default['docker-grid']['registry']['docker-compose']['config_format_version'] = '1'
--- a/cookbooks/docker-grid/concourse.yml
+++ b/cookbooks/docker-grid/concourse.yml
@@ -1,5 +1,4 @@
11 ---
2-# $ fly -t $CC_TARGET sp -p docker-grid-cookbook -c concourse.yml -l fly-vars.yml -l ~/sec/credentials-prod.yml
32 resources:
43 - name: src-git
54 type: git
@@ -59,6 +58,7 @@ jobs:
5958 - -c
6059 - |
6160 cd ./src-git/cookbooks/((cookbook-name))
61+ bundle config --local silence_root_warning 1
6262 bundle install
6363 rake
6464 - name: publish-cookbook
@@ -89,6 +89,7 @@ jobs:
8989 echo '{"username":"((chef-username))","key":"/root/chef-client-key.pem"}' > /root/.stove
9090 echo "$chef_client_key" > /root/chef-client-key.pem
9191 cd ./src-git/cookbooks/((cookbook-name))
92+ bundle config --local silence_root_warning 1
9293 bundle install
9394 rake publish
9495 - put: src-git
--- /dev/null
+++ b/cookbooks/docker-grid/fly-vars.local.yml
@@ -0,0 +1,2 @@
1+---
2+cookbook-name: docker-grid
--- a/cookbooks/docker-grid/fly-vars.yml
+++ b/cookbooks/docker-grid/fly-vars.yml
@@ -1,3 +1,2 @@
11 ---
2-cookbook-name: docker-grid
32 chefdk-version: 1.6.11
--- a/cookbooks/docker-grid/recipes/engine.rb
+++ b/cookbooks/docker-grid/recipes/engine.rb
@@ -2,7 +2,7 @@
22 # Cookbook Name:: docker-grid
33 # Recipe:: engine
44 #
5-# Copyright 2016-2017, whitestar
5+# Copyright 2016-2018, whitestar
66 #
77 # Licensed under the Apache License, Version 2.0 (the "License");
88 # you may not use this file except in compliance with the License.
@@ -31,12 +31,14 @@ if !override_apt_line.nil? && !override_apt_line.empty? \
3131 node.force_override['docker-grid']['dockerproject']['enable_new_repo'] = true
3232 end
3333 enable_new_repo = node['docker-grid']['dockerproject']['enable_new_repo']
34-docker_ver = node['docker-grid']['engine']['version']
34+
35+engine_conf = node['docker-grid']['engine']
36+docker_ver = engine_conf['version']
3537 docker_ver = '' if docker_ver.nil? || docker_ver == 'latest'
36-storage_driver = node['docker-grid']['engine']['storage-driver']
37-userns_remap = node['docker-grid']['engine']['userns-remap']
38+storage_driver = engine_conf['storage-driver']
39+userns_remap = engine_conf['userns-remap']
3840
39-if node['docker-grid']['engine']['skip_setup']
41+if engine_conf['skip_setup']
4042 log 'Skip the Docker Engine setup.'
4143 return
4244 end
@@ -328,7 +330,7 @@ docker_opts = []
328330 docker_opts.push("--storage-driver=#{storage_driver}") if !storage_driver.nil? && !storage_driver.empty?
329331 docker_opts.push("--userns-remap=#{userns_remap}") if !userns_remap.nil? && !userns_remap.empty?
330332
331-extra_options = node['docker-grid']['engine']['daemon_extra_options']
333+extra_options = engine_conf['daemon_extra_options']
332334 # for docker-engine package on RHEL: remove '-H fd://'
333335 # https://github.com/docker/docker/issues/22847
334336 if platform_family == 'rhel' || platform == 'debian' || (platform == 'ubuntu' && platform_version == '14.04')
@@ -381,7 +383,7 @@ service 'docker' do
381383 subscribes :restart, 'execute[update-ca-certificates]', :delayed
382384 end
383385
384-users = node['docker-grid']['engine']['users_allow']
386+users = engine_conf['users_allow']
385387 group 'docker' do
386388 members users unless users.empty?
387389 action :create
@@ -402,3 +404,13 @@ end
402404 action :create
403405 end
404406 }
407+
408+# autopilot
409+srv = 'dockerd'
410+template "/etc/cron.d/#{srv}-local" do
411+ source "etc/cron.d/#{srv}-local"
412+ owner 'root'
413+ group 'root'
414+ mode '0644'
415+ action :delete unless engine_conf['autopilot']['enabled']
416+end
--- a/cookbooks/docker-grid/recipes/registry-server.rb
+++ b/cookbooks/docker-grid/recipes/registry-server.rb
@@ -90,3 +90,16 @@ template "#{conf_dir}/config.yml" do
9090 mode '0644'
9191 notifies :restart, "service[#{service_name}]"
9292 end
93+
94+# autopilot
95+srv = 'docker-reg-server'
96+template "/etc/cron.d/#{srv}-local" do
97+ source "etc/cron.d/#{srv}-local"
98+ owner 'root'
99+ group 'root'
100+ mode '0644'
101+ variables(
102+ service_name: service_name
103+ )
104+ action :delete unless node['docker-grid']['registry']['server']['autopilot']['enabled']
105+end
--- a/cookbooks/docker-grid/recipes/registry.rb
+++ b/cookbooks/docker-grid/recipes/registry.rb
@@ -2,7 +2,7 @@
22 # Cookbook Name:: docker-grid
33 # Recipe:: registry
44 #
5-# Copyright 2016-2017, whitestar
5+# Copyright 2016-2018, whitestar
66 #
77 # Licensed under the Apache License, Version 2.0 (the "License");
88 # you may not use this file except in compliance with the License.
@@ -21,7 +21,8 @@ doc_url = 'https://docs.docker.com/registry/deploying/#/managing-with-compose'
2121
2222 include_recipe 'docker-grid::compose'
2323
24-app_dir = node['docker-grid']['registry']['docker-compose']['app_dir']
24+compose_conf = node['docker-grid']['registry']['docker-compose']
25+app_dir = compose_conf['app_dir']
2526 auth_dir = "#{app_dir}/auth"
2627 etc_dir = "#{app_dir}/etc"
2728 [
@@ -40,7 +41,7 @@ etc_dir = "#{app_dir}/etc"
4041 envs = {}
4142 vols = []
4243
43-host_data_volume = node['docker-grid']['registry']['docker-compose']['host_data_volume']
44+host_data_volume = compose_conf['host_data_volume']
4445 unless host_data_volume.nil?
4546 directory host_data_volume do
4647 owner 'root'
@@ -64,7 +65,7 @@ if node['docker-grid']['registry']['with_ssl_cert_cookbook']
6465 vols.push("#{server_key_path(cn)}:/certs/domain.key:ro")
6566 end
6667
67-unless node['docker-grid']['registry']['docker-compose']['registry-config'].nil?
68+unless compose_conf['registry-config'].nil?
6869 template "#{app_dir}/etc/config.yml" do
6970 source 'opt/docker-compose/app/registry/etc/config.yml'
7071 owner 'root'
@@ -75,7 +76,7 @@ unless node['docker-grid']['registry']['docker-compose']['registry-config'].nil?
7576 vols.push('./etc/config.yml:/etc/docker/registry/config.yml:ro')
7677 end
7778
78-service_name = node['docker-grid']['registry']['docker-compose']['service_name']
79+service_name = compose_conf['service_name']
7980 version_1_config = {
8081 service_name => {
8182 },
@@ -89,7 +90,7 @@ version_2_config = {
8990 }
9091
9192 node.override['docker-grid']['registry']['docker-compose']['config'] = \
92- node['docker-grid']['registry']['docker-compose']['config_format_version'] == '2' ? version_2_config : version_1_config
93+ compose_conf['config_format_version'] == '2' ? version_2_config : version_1_config
9394
9495 [
9596 'docker-compose.yml',
@@ -102,6 +103,16 @@ node.override['docker-grid']['registry']['docker-compose']['config'] = \
102103 end
103104 }
104105
106+# autopilot
107+srv = 'docker-registry'
108+template "/etc/cron.d/#{srv}-local" do
109+ source "etc/cron.d/#{srv}-local"
110+ owner 'root'
111+ group 'root'
112+ mode '0644'
113+ action :delete unless compose_conf['autopilot']['enabled']
114+end
115+
105116 log 'registry-docker-compose post install message' do
106117 message <<-"EOM"
107118 Note: You must execute the following command manually.
--- /dev/null
+++ b/cookbooks/docker-grid/templates/default/etc/cron.d/docker-reg-server-local
@@ -0,0 +1,13 @@
1+<%
2+name = 'docker-reg-server'
3+
4+conf = node['docker-grid']['registry']['server']['autopilot']
5+log = "#{conf['log_dir']}/#{name}-local.log"
6+wait_time = conf['wait_time']
7+-%>
8+PATH=/usr/bin:/bin:/usr/local/bin
9+DATE_F='+%Y-%m-%d %H:%M:%S %z'
10+LOG=<%= log %>
11+NAME=<%= @service_name %>
12+
13+@reboot root sleep <%= wait_time %> && date "$DATE_F" > $LOG && systemctl restart $NAME >> $LOG 2>&1 && systemctl status $NAME >> $LOG 2>&1
--- /dev/null
+++ b/cookbooks/docker-grid/templates/default/etc/cron.d/docker-registry-local
@@ -0,0 +1,16 @@
1+<%
2+name = 'docker-registry'
3+
4+conf = node['docker-grid']['registry']['docker-compose']['autopilot']
5+log = "#{conf['log_dir']}/#{name}-local.log"
6+wait_time = conf['wait_time']
7+
8+opts = conf['docker-compose_opts']
9+-%>
10+PATH=/usr/bin:/bin:/usr/local/bin
11+DATE_F='+%Y-%m-%d %H:%M:%S %z'
12+LOG=<%= log %>
13+APP_HOME=<%= node['docker-grid']['registry']['docker-compose']['app_dir'] %>
14+OPTS='<%= opts %>'
15+
16+@reboot root sleep <%= wait_time %> && date "$DATE_F" > $LOG && cd $APP_HOME && docker-compose $OPTS down >> $LOG 2>&1 && docker-compose $OPTS up -d >> $LOG 2>&1 && docker-compose ps >> $LOG 2>&1
--- /dev/null
+++ b/cookbooks/docker-grid/templates/default/etc/cron.d/dockerd-local
@@ -0,0 +1,12 @@
1+<%
2+name = 'dockerd'
3+
4+conf = node['docker-grid']['engine']['autopilot']
5+log = "#{conf['log_dir']}/#{name}-local.log"
6+-%>
7+PATH=/usr/bin:/bin:/usr/local/bin
8+LOG=<%= log %>
9+
10+<%= conf['containers_prune_period'] %> root docker_containers_cleanup >> $LOG 2>&1
11+<%= conf['images_prune_period'] %> root docker_images_cleanup >> $LOG 2>&1
12+<%= conf['volumes_prune_period'] %> root docker_volumes_cleanup >> $LOG 2>&1
--- a/cookbooks/docker-grid/version
+++ b/cookbooks/docker-grid/version
@@ -1 +1 @@
1-1.2.1
1+1.3.0
Show on old repository browser