• R/O
  • HTTP
  • SSH
  • HTTPS

grid-chef-repo: Commit

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


Commit MetaInfo

Revisionbb246fcfd3c119a3566073a812cb28a6952bf823 (tree)
Zeit2016-10-15 15:48:45
Autorwhitestar <whitestar@gaea...>
Commiterwhitestar

Log Message

docker-grid-0.2.0

Ändern Zusammenfassung

Diff

--- a/cookbooks/docker-grid/.foodcritic
+++ b/cookbooks/docker-grid/.foodcritic
@@ -1 +1,2 @@
11 ~FC001
2+~FC014
--- a/cookbooks/docker-grid/CHANGELOG.md
+++ b/cookbooks/docker-grid/CHANGELOG.md
@@ -1,5 +1,9 @@
11 # docker-grid CHANGELOG
22
3+0.2.0
4+-----
5+- adds `['docker-grid']['engine']['userns-remap']` attribute.
6+
37 0.1.0
48 -----
59 - Initial release of docker-grid
--- a/cookbooks/docker-grid/README.md
+++ b/cookbooks/docker-grid/README.md
@@ -41,6 +41,7 @@ This cookbook sets up Docker engine.
4141 |`['docker-grid']['engine']['storage-driver_on_centos']`|String|Docker storage driver (overlay, devicemapper, ...) for CentOS.|`'overlay'`|
4242 |`['docker-grid']['engine']['storage-driver_on_ubuntu']`|String|Docker storage driver (aufs, overlay, ...) for Ubuntu.|`'aufs'`|
4343 |`['docker-grid']['engine']['storage-driver']`|String||See default.rb|
44+|`['docker-grid']['engine']['userns-remap']`|String|e.g. `'default'` (`dockremap` user/group) or your specified user/group name. Note: it is available in Docker 1.10/later and (Ubuntu or RHEL family 7.2/later).|`nil` (inactive)|
4445 |`['docker-grid']['engine']['daemon_extra_options']`|String|ref. `docker daemon --help`.|`'-H fd://'`|
4546
4647 ## Usage
@@ -73,8 +74,9 @@ override_attributes(
7374 'version_on_centos' => '1.11.2-1',
7475 'version_on_ubuntu' => '1.11.2-0',
7576 'storage-driver_on_centos' => 'overlay',
76- 'storage-driver_on_ubuntu' => 'overlay', # default: aufs
77- 'daemon_extra_options' => '-H fd://',
77+ 'storage-driver_on_ubuntu' => 'overlay', # default: 'aufs'
78+ 'userns-remap' => 'default', # default: nil (inactive)
79+ 'daemon_extra_options' => '-H fd:// --bip=192.168.128.1/24 --fixed-cidr=192.168.128.0/24',
7880 },
7981 },
8082 )
--- a/cookbooks/docker-grid/attributes/default.rb
+++ b/cookbooks/docker-grid/attributes/default.rb
@@ -47,4 +47,5 @@ default['docker-grid']['engine']['storage-driver'] = node.value_for_platform(
4747 'default' => node['docker-grid']['engine']['storage-driver_on_ubuntu'],
4848 }
4949 )
50+default['docker-grid']['engine']['userns-remap'] = nil # default: inactive
5051 default['docker-grid']['engine']['daemon_extra_options'] = '-H fd://'
--- a/cookbooks/docker-grid/metadata.rb
+++ b/cookbooks/docker-grid/metadata.rb
@@ -5,7 +5,7 @@ maintainer_email ''
55 license 'Apache 2.0'
66 description 'Installs/Configures Docker Engine.'
77 long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
8-version '0.1.0'
8+version '0.2.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/docker-grid/recipes/engine.rb
+++ b/cookbooks/docker-grid/recipes/engine.rb
@@ -42,6 +42,93 @@ if node['docker-grid']['engine']['storage-driver'] == 'overlay'
4242 end
4343 end
4444
45+log 'reboot_message' do
46+ message 'Please reboot this machine because of kernel boot option modified.'
47+ level :warn
48+ action :nothing
49+end
50+
51+userns_remap = node['docker-grid']['engine']['userns-remap']
52+if !userns_remap.nil? && !userns_remap.empty?
53+ unless Gem::Version.create(node['docker-grid']['engine']['version'].tr('~', '-')) >= Gem::Version.create('1.10')
54+ # tr('~', '-') for Ubuntu.
55+ Chef::Application.fatal!('Docker version must be 1.10 or later for userns-remap.') # and exit.
56+ end
57+ # By default user namespace feature is inactive in RHEL family (>= 7.2).
58+ if node['platform_family'] == 'rhel'
59+ unless Gem::Version.create(node['platform_version']) >= Gem::Version.create('7.2')
60+ Chef::Application.fatal!('Platform version must be 7.2 or later for kernel user namespace feature.') # and exit.
61+ end
62+
63+ bash 'enable_user_namespace_feature_of_kernerl' do
64+ code <<-"EOH"
65+ grubby --args='user_namespace.enable=1' --update-kernel=/boot/vmlinuz-#{node['kernel']['release']}
66+ EOH
67+ not_if "grubby --info=/boot/vmlinuz-#{node['kernel']['release']} | grep 'user_namespace.enable=1'"
68+ notifies :write, 'log[reboot_message]'
69+ end
70+ end
71+
72+ subid_files = [
73+ '/etc/subuid',
74+ '/etc/subgid',
75+ ]
76+
77+ subid_files.each {|subid_file|
78+ file subid_file do
79+ owner 'root'
80+ group 'root'
81+ mode '0644'
82+ action :touch
83+ not_if { File.exist?(subid_file) }
84+ end
85+ }
86+
87+ this_recipe = self
88+ remap_user = userns_remap == 'default' ? 'dockremap' : userns_remap
89+ ruby_block 'adds_subid_entries' do
90+ action :run
91+ not_if "cat /etc/subuid | grep #{remap_user}"
92+ not_if "cat /etc/subgid | grep #{remap_user}"
93+ notifies :restart, 'service[docker]'
94+ block do
95+ subid_files.each {|subid_file|
96+ max_start_id = 100_000
97+ offset = 0
98+ already_exist = false
99+
100+ begin
101+ File.open(subid_file) {|file|
102+ file.each_line {|line|
103+ entry = line.split(':')
104+ if entry[0] == remap_user
105+ already_exist = true
106+ break
107+ end
108+ if entry[1].to_i >= max_start_id
109+ max_start_id = entry[1].to_i
110+ offset = entry[2].to_i
111+ end
112+ }
113+ }
114+
115+ if already_exist
116+ this_recipe.log "#{remap_user} already exists in #{subid_file}"
117+ else
118+ File.open(subid_file, 'a') {|file|
119+ entry_str = "#{remap_user}:#{max_start_id + offset}:65536"
120+ this_recipe.log "#{remap_user} (#{entry_str}) is added in #{subid_file}"
121+ file.puts entry_str
122+ }
123+ end
124+ rescue IOError => e
125+ puts e
126+ end
127+ }
128+ end
129+ end
130+end
131+
45132 directory '/etc/systemd/system/docker.service.d' do
46133 owner 'root'
47134 group 'root'
--- a/cookbooks/docker-grid/templates/default/etc/systemd/system/docker.service.d/override.conf
+++ b/cookbooks/docker-grid/templates/default/etc/systemd/system/docker.service.d/override.conf
@@ -1,11 +1,18 @@
11 <%
22 extra_options = node['docker-grid']['engine']['daemon_extra_options']
3+
34 storage_driver = node['docker-grid']['engine']['storage-driver']
45 storage_driver_option = ''
56 if !storage_driver.nil? && !storage_driver.empty?
67 storage_driver_option = "--storage-driver=#{storage_driver}"
78 end
9+
10+userns_remap = node['docker-grid']['engine']['userns-remap']
11+userns_remap_option = ''
12+if !userns_remap.nil? && !userns_remap.empty?
13+ userns_remap_option = "--userns-remap=#{userns_remap}"
14+end
815 -%>
916 [Service]
1017 ExecStart=
11-ExecStart=/usr/bin/docker daemon <%= storage_driver_option %> <%= extra_options %>
18+ExecStart=/usr/bin/docker daemon <%= storage_driver_option %> <%= userns_remap_option %> <%= extra_options %>
--- /dev/null
+++ b/roles/docker4dcos.rb
@@ -0,0 +1,24 @@
1+name 'docker4dcos'
2+description 'Docker Engine for DC/OS'
3+
4+run_list(
5+ 'recipe[docker-grid::engine]',
6+)
7+
8+#env_run_lists
9+
10+default_attributes(
11+)
12+
13+override_attributes(
14+ 'docker-grid' => {
15+ 'engine' => {
16+ 'version_on_centos' => '1.11.2-1',
17+ 'version_on_ubuntu' => '1.11.2-0',
18+ 'storage-driver_on_centos' => 'overlay',
19+ 'storage-driver_on_ubuntu' => 'overlay', # default: aufs
20+ 'userns-remap' => 'default',
21+ 'daemon_extra_options' => '-H fd:// --bip=192.168.128.1/24 --fixed-cidr=192.168.128.0/24',
22+ },
23+ },
24+)
Show on old repository browser