OSDN Git Service

adds the Debian 9 (stretch) support. docker-grid-0.3.9
authorwhitestar <whitestar@gaea.test>
Sat, 1 Jul 2017 08:21:26 +0000 (17:21 +0900)
committerwhitestar <whitestar@gaea.test>
Sat, 1 Jul 2017 08:21:26 +0000 (17:21 +0900)
12 files changed:
.gitignore
cookbooks/docker-grid/.rubocop.yml
cookbooks/docker-grid/Berksfile
cookbooks/docker-grid/CHANGELOG.md
cookbooks/docker-grid/README.md
cookbooks/docker-grid/Rakefile
cookbooks/docker-grid/attributes/default.rb
cookbooks/docker-grid/concourse.yml
cookbooks/docker-grid/metadata.rb
cookbooks/docker-grid/recipes/engine.rb
cookbooks/docker-grid/templates/default/etc/apt/sources.list.d/docker.list
cookbooks/docker-grid/templates/default/usr/local/bin/docker_images_cleanup [new file with mode: 0644]

index 2c584ec..c123697 100644 (file)
@@ -38,4 +38,5 @@ bin/*
 .project
 .vscode
 
-
+# Rubocop
+.rubocop_todo.yml
index 7cd3d61..efaa8be 100644 (file)
@@ -25,7 +25,7 @@ Style/RescueModifier:
 Style/SpaceBeforeFirstArg:
   Enabled: false
 Style/TrailingCommaInLiteral:
-  EnforcedStyleForMultiline: comma
+  EnforcedStyleForMultiline: consistent_comma
 Style/WordArray:
   Enabled: false
 
index 7e6ac6c..9da25d9 100644 (file)
@@ -14,8 +14,6 @@
 # limitations under the License.
 #
 
-# for ver. 3.x
-#source 'https://gpm00.grid.example.com:6280'
 source 'https://supermarket.chef.io'
 
 metadata
index b7a07f2..b91fe9f 100644 (file)
@@ -1,5 +1,11 @@
 # docker-grid CHANGELOG
 
+0.3.9
+-----
+- adds the Debian 9 (stretch) support.
+- adds the `docker_images_cleanup` script.
+- adds the Concourse pipeline configuration.
+
 0.3.8
 -----
 - supports the latest Docker engine (17.03.1.ce-1, 17.03.1~ce-0).
index 5d89eac..1b40fc4 100644 (file)
@@ -22,6 +22,7 @@ This cookbook sets up Docker engine.
 
 ### platforms
 - CentOS, Red Hat Enterprise Linux >= 7.2 (in baremetal or LXD (Ubuntu >= 14.04))
+- Debian >= 9.0
 - Ubuntu >= 14.04 (in baremetal or LXD (Ubuntu >= 14.04))
 
 ### packages
@@ -32,6 +33,7 @@ This cookbook sets up Docker engine.
 |Key|Type|Description, example|Default|
 |:--|:--|:--|:--|
 |`['docker-grid']['install_flavor']`|String|`'dockerproject'` or `'os-repository'`|`'dockerproject'`|
+|`['docker-grid']['dockerproject']['package_name']`|String||`'docker-engine'`|
 |`['docker-grid']['apt_repo']['url']`|String||`'https://apt.dockerproject.org/repo'`|
 |`['docker-grid']['apt_repo']['keyserver']`|String||`'hkp://p80.pool.sks-keyservers.net:80'`|
 |`['docker-grid']['apt_repo']['recv-keys']`|String||`'58118E89F3A912897C070ADBF76221572C52609D'`|
@@ -47,9 +49,11 @@ This cookbook sets up Docker engine.
 |`['docker-grid']['compose']['app_dir']`|String||`"#{node['docker-grid']['compose']['home_dir']}/app`|
 |`['docker-grid']['engine']['skip_setup']`|Boolean||`false`|
 |`['docker-grid']['engine']['version_on_centos']`|String|Docker version for CentOS.|`'1.11.2-1'`|
+|`['docker-grid']['engine']['version_on_debian']`|String|Docker version for Debian.|`'17.03.1~ce-0'`|
 |`['docker-grid']['engine']['version_on_ubuntu']`|String|Docker version for Ubuntu.|`'1.11.2-0'`|
 |`['docker-grid']['engine']['version']`|String|Docker 1.9.x - 1.11.x is recommended for stability reasons. Note: this **default** value is overwritten by the `version_on_{centos or ubuntu}`.|See default.rb|
 |`['docker-grid']['engine']['storage-driver_on_centos']`|String|Docker storage driver (overlay, devicemapper, ...) for CentOS.|`'overlay'`|
+|`['docker-grid']['engine']['storage-driver_on_debian']`|String|Docker storage driver (aufs, overlay, ...) for Debian.|`'overlay2'`|
 |`['docker-grid']['engine']['storage-driver_on_ubuntu']`|String|Docker storage driver (aufs, overlay, ...) for Ubuntu.|`'aufs'`|
 |`['docker-grid']['engine']['storage-driver']`|String||See default.rb|
 |`['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)|
@@ -100,10 +104,12 @@ override_attributes(
   'docker-grid' => {
     'install_flavor' => 'dockerproject',
     'engine' => {
-      'version_on_centos' => '1.11.2-1',
-      'version_on_ubuntu' => '1.11.2-0',
+      'version_on_centos' => '17.03.1.ce-1',
+      'version_on_debian' => '17.03.1~ce-0',
+      'version_on_ubuntu' => '17.03.1~ce-0',
       'storage-driver_on_centos' => 'overlay',
-      'storage-driver_on_ubuntu' => 'overlay',  # default: 'aufs'
+      'storage-driver_on_debian' => 'overlay2',
+      'storage-driver_on_ubuntu' => 'overlay2',  # default: 'aufs'
       #'userns-remap' => 'default',  # default: nil (inactive)
       'daemon_extra_options' => '-H fd:// --bip=192.168.128.1/24 --fixed-cidr=192.168.128.0/24',
     },
@@ -176,10 +182,12 @@ run_list(
 override_attributes(
   'docker-grid' => {
     'engine' => {
-      'version_on_centos' => '1.11.2-1',
-      'version_on_ubuntu' => '1.11.2-0',
+      'version_on_centos' => '17.03.1.ce-1',
+      'version_on_debian' => '17.03.1~ce-0',
+      'version_on_ubuntu' => '17.03.1~ce-0',
       'storage-driver_on_centos' => 'overlay',
-      'storage-driver_on_ubuntu' => 'overlay',  # default: 'aufs'
+      'storage-driver_on_debian' => 'overlay2',
+      'storage-driver_on_ubuntu' => 'overlay2',  # default: 'aufs'
       'userns-remap' => '',
       'daemon_extra_options' => \
         '-H fd:// --bip=192.168.128.1/24 --fixed-cidr=192.168.128.0/24', \
@@ -234,10 +242,12 @@ registry_fqdn = 'registry.docker.example.com'
 override_attributes(
   'docker-grid' => {
     'engine' => {
-      'version_on_centos' => '1.11.2-1',
-      'version_on_ubuntu' => '1.11.2-0',
+      'version_on_centos' => '17.03.1.ce-1',
+      'version_on_debian' => '17.03.1~ce-0',
+      'version_on_ubuntu' => '17.03.1~ce-0',
       'storage-driver_on_centos' => 'overlay',
-      'storage-driver_on_ubuntu' => 'overlay',  # default: 'aufs'
+      'storage-driver_on_debian' => 'overlay2',
+      'storage-driver_on_ubuntu' => 'overlay2',  # default: 'aufs'
       'userns-remap' => '',
       'daemon_extra_options' => \
         '-H fd:// --bip=192.168.128.1/24 --fixed-cidr=192.168.128.0/24',
@@ -264,6 +274,8 @@ override_attributes(
               'REGISTRY_AUTH' =>                'htpasswd',
               'REGISTRY_AUTH_HTPASSWD_PATH' =>  '/auth/htpasswd',
               'REGISTRY_AUTH_HTPASSWD_REALM' => 'Registry Realm',
+              # proxy cache
+              #'REGISTRY_PROXY_REMOTEURL' => 'https://registry-1.docker.io',
             },
             'volumes' => [
               # Volumes for the server certificate and key files will be set automatically.
@@ -291,10 +303,12 @@ run_list(
 override_attributes(
   'docker-grid' => {
     'engine' => {
-      'version_on_centos' => '1.11.2-1',
-      'version_on_ubuntu' => '1.11.2-0',
+      'version_on_centos' => '17.03.1.ce-1',
+      'version_on_debian' => '17.03.1~ce-0',
+      'version_on_ubuntu' => '17.03.1~ce-0',
       'storage-driver_on_centos' => 'overlay',
-      'storage-driver_on_ubuntu' => 'overlay',  # default: 'aufs'
+      'storage-driver_on_debian' => 'overlay2',
+      'storage-driver_on_ubuntu' => 'overlay2',  # default: 'aufs'
       'userns-remap' => '',
       'daemon_extra_options' => \
         '-H fd:// --bip=192.168.128.1/24 --fixed-cidr=192.168.128.0/24', \
index 01d55dd..3823bf8 100644 (file)
@@ -5,7 +5,11 @@ require 'stove/rake_task'
 
 namespace :style do
   desc 'Run Ruby style checks'
-  RuboCop::RakeTask.new(:ruby)
+  RuboCop::RakeTask.new(:ruby) do |t|
+    t.options = [
+      '--auto-gen-config',  # creates .rubocop_todo.yml
+    ]
+  end
 
   desc 'Run Chef style checks'
   FoodCritic::Rake::LintTask.new(:chef) do |t|
@@ -25,6 +29,7 @@ desc 'Publish cookbook'
 Stove::RakeTask.new(:publish) do |t|
   t.stove_opts = [
     '--no-git',
+    '--log-level', 'info',
   ]
 end
 
index 7667bb9..7369e06 100644 (file)
@@ -18,6 +18,7 @@
 #
 
 default['docker-grid']['install_flavor'] = 'dockerproject'  # or 'os-repository'
+default['docker-grid']['dockerproject']['package_name'] = 'docker-engine'
 default['docker-grid']['apt_repo'] = {
   'url' => 'https://apt.dockerproject.org/repo',
   'keyserver' => 'hkp://p80.pool.sks-keyservers.net:80',
@@ -47,12 +48,24 @@ default['docker-grid']['engine']['skip_setup'] = false
 #   http://mirror.centos.org/centos/7.3.1611/extras/x86_64/Packages/
 default['docker-grid']['engine']['version_on_centos'] = '1.11.2-1'
 # dockerproject: 17.03.1~ce-0, 1.13.1-0, 1.12.6-0, 1.11.2-0
+default['docker-grid']['engine']['version_on_debian'] = '17.03.1~ce-0'
 # os-repository: http://packages.ubuntu.com/search?keywords=docker.io&searchon=names
 default['docker-grid']['engine']['version_on_ubuntu'] = '1.11.2-0'
 
 case node['platform']
 when 'centos', 'redhat'
   version_on_centos = "#{node['docker-grid']['engine']['version_on_centos']}.el#{node['platform_version'].to_i}.#{node['platform']}"
+when 'debian'
+  version_on_debian = \
+    if node['docker-grid']['install_flavor'] == 'dockerproject'
+      if Gem::Version.create(node['docker-grid']['engine']['version_on_debian'].tr('~', '-')) >= Gem::Version.create('1.12.4-0')
+        "#{node['docker-grid']['engine']['version_on_debian']}~debian-#{node['lsb']['codename']}"
+      else
+        "#{node['docker-grid']['engine']['version_on_debian']}~#{node['lsb']['codename']}"
+      end
+    else
+      node['docker-grid']['engine']['version_on_debian']
+    end
 when 'ubuntu'
   version_on_ubuntu = \
     if node['docker-grid']['install_flavor'] == 'dockerproject'
@@ -71,17 +84,24 @@ default['docker-grid']['engine']['version'] = node.value_for_platform(
   ['centos', 'redhat'] => {
     'default' => version_on_centos,
   },
+  'debian' => {
+    'default' => version_on_debian,
+  },
   'ubuntu' => {
     'default' => version_on_ubuntu,
   }
 )
 # overlay2: Docker >= 1.12, Kernel >= 4.0
 default['docker-grid']['engine']['storage-driver_on_centos'] = 'overlay'
+default['docker-grid']['engine']['storage-driver_on_debian'] = 'overlay2'
 default['docker-grid']['engine']['storage-driver_on_ubuntu'] = 'aufs'
 default['docker-grid']['engine']['storage-driver'] = node.value_for_platform(
   ['centos', 'redhat'] => {
     'default' => node['docker-grid']['engine']['storage-driver_on_centos'],
   },
+  'debian' => {
+    'default' => node['docker-grid']['engine']['storage-driver_on_debian'],
+  },
   'ubuntu' => {
     'default' => node['docker-grid']['engine']['storage-driver_on_ubuntu'],
   }
index 4f93d6d..318661e 100644 (file)
@@ -6,6 +6,8 @@ resources:
   source:
     uri: git://git.osdn.net/gitroot/metasearch/grid-chef-repo.git
     branch: master
+    paths:
+    - cookbooks/((cookbook-name))
 - name: chefdk-cache
   type: docker-image
   source:
@@ -21,7 +23,7 @@ jobs:
 - name: build-cookbook
   plan:
   - get: src-git
-    trigger: false
+    trigger: true
   - get: chefdk-cache
   - task: ci-build
     image: chefdk-cache
index 5d0dc6d..a96a1c0 100644 (file)
@@ -5,7 +5,7 @@ maintainer_email ''
 license          'Apache 2.0'
 description      'Installs/Configures Docker Engine.'
 long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
-version          '0.3.8'
+version          '0.3.9'
 source_url       'http://scm.osdn.jp/gitroot/metasearch/grid-chef-repo.git'
 issues_url       'https://osdn.jp/projects/metasearch/ticket'
 
@@ -13,6 +13,7 @@ issues_url       'https://osdn.jp/projects/metasearch/ticket'
   supports os, '>= 7.2'
 end
 
+supports 'debian', '>= 9.0'
 supports 'ubuntu', '>= 14.04'
 
 depends 'platform_utils', '>= 0.4.4'
index 62f913e..1f36468 100644 (file)
@@ -19,6 +19,9 @@
 
 # https://dcos.io/docs/1.8/administration/installing/custom/system-requirements/
 
+platform = node['platform']
+platform_version = node['platform_version']
+
 if node['docker-grid']['engine']['skip_setup']
   log 'Skip the Docker Engine setup.'
   return
@@ -170,18 +173,28 @@ when 'rhel'
     end
   end
 when 'debian'
+  # https://docs.docker.com/engine/installation/linux/debian/
   # https://docs.docker.com/engine/installation/linux/ubuntulinux/
   pkgs = [
     'apt-transport-https',
     'ca-certificates',
+    'curl',
+    'gnupg2',
+    'software-properties-common',
   ]
 
   if storage_driver == 'aufs' \
     && !container_guest_node?
-    pkgs += [
-      "linux-image-extra-#{node['os_version']}",
-      'linux-image-extra-virtual',
-    ]
+    if platform == 'debian'
+      pkgs += [
+        'aufs-dkms',
+      ]
+    elsif platform == 'ubuntu'
+      pkgs += [
+        "linux-image-extra-#{node['os_version']}",
+        'linux-image-extra-virtual',
+      ]
+    end
   end
 
   pkgs.each {|pkg|
@@ -198,7 +211,7 @@ when 'debian'
 
   if node['docker-grid']['install_flavor'] == 'dockerproject'
     pkg_name_removed = 'docker.io'
-    pkg_name = 'docker-engine'
+    pkg_name = node['docker-grid']['dockerproject']['package_name']
 
     apt_repo_config = node['docker-grid']['apt_repo']
     bash 'apt-key_adv_docker_tools_key' do
@@ -220,7 +233,7 @@ when 'debian'
     end
   else
     # OS distribution
-    pkg_name_removed = 'docker-engine'
+    pkg_name_removed = node['docker-grid']['dockerproject']['package_name']
     pkg_name = 'docker.io'
   end
 
@@ -243,8 +256,8 @@ when 'debian'
 
   resources(package: pkg_name) rescue package pkg_name do
     action :install
-    options '--allow-downgrades' if node['platform_version'] >= '16.04'  # LTS (xenial)
-    options '--force-yes' if node['platform_version'] == '14.04'  # LTS (trusty)
+    options '--allow-downgrades' if platform == 'debian' || platform_version >= '16.04'  # LTS (xenial)
+    options '--force-yes' if platform_version == '14.04'  # LTS (trusty)
     version docker_ver unless docker_ver.empty?
     notifies :run, 'bash[clean_up_docker0_bridge]', :before
   end
@@ -261,7 +274,7 @@ docker_opts.push("--userns-remap=#{userns_remap}") if !userns_remap.nil? && !use
 extra_options = node['docker-grid']['engine']['daemon_extra_options']
 # for docker-engine package on RHEL: remove '-H fd://'
 # https://github.com/docker/docker/issues/22847
-if (node['platform_family'] == 'rhel' || node['platform_version'] == '14.04') \
+if (node['platform_family'] == 'rhel' || platform == 'debian' || platform_version == '14.04') \
   && !docker_ver.empty? && Gem::Version.create(docker_ver.tr('~', '-')) >= Gem::Version.create('1.12')
   extra_options.gsub!(%r{-H\sfd://}, '')
 end
@@ -303,7 +316,7 @@ elsif init_package == 'init'  # for Ubuntu 14.04,...
 end
 
 service 'docker' do
-  provider Chef::Provider::Service::Upstart if node['platform'] == 'ubuntu' && node['platform_version'] < '15.04'
+  provider Chef::Provider::Service::Upstart if platform == 'ubuntu' && platform_version < '15.04'
   action [:start, :enable]
   subscribes :restart, 'execute[update-ca-certificates]', :delayed
 end
@@ -314,3 +327,11 @@ group 'docker' do
   action :create
   append true
 end
+
+template '/usr/local/bin/docker_images_cleanup' do
+  source  'usr/local/bin/docker_images_cleanup'
+  owner 'root'
+  group 'root'
+  mode '0755'
+  action :create
+end
index fd063ff..2952462 100644 (file)
@@ -1,12 +1,20 @@
 <%
+platform = node['platform']
 override_apt_line = node['docker-grid']['apt_repo']['override_apt_line']
 if !override_apt_line.nil? && !override_apt_line.empty?
 -%>
 <%= override_apt_line %>
 <%
 else
--%> 
+  if platform == 'debian'
+-%>
+#deb [arch=amd64] https://download.docker.com/linux/debian <%= node['lsb']['codename'] %> stable
+deb <%= node['docker-grid']['apt_repo']['url'] %> debian-<%= node['lsb']['codename'] %> main
+<%
+  elsif platform == 'ubuntu'
+-%>
 deb <%= node['docker-grid']['apt_repo']['url'] %> ubuntu-<%= node['lsb']['codename'] %> main
 <%
+  end
 end
 -%>
diff --git a/cookbooks/docker-grid/templates/default/usr/local/bin/docker_images_cleanup b/cookbooks/docker-grid/templates/default/usr/local/bin/docker_images_cleanup
new file mode 100644 (file)
index 0000000..2e13cef
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh\r
+\r
+docker images | awk '$2=="<none>" {print $3}' | xargs --no-run-if-empty docker rmi\r