From 2464f2c863362a06e7349178560627b81a178203 Mon Sep 17 00:00:00 2001 From: Dat Phan Date: Fri, 9 Jun 2017 10:34:51 +0700 Subject: [PATCH 1/4] @#295 | add docker login --- main-cookbooks/teracy-dev/metadata.rb | 1 + main-cookbooks/teracy-dev/recipes/default.rb | 1 + .../teracy-dev/recipes/docker_registry.rb | 52 +++++++++++++++++++ provisioners/shells/clean-docker-auth.sh | 8 +++ provisioners/shells/setup-docker-auth.sh | 9 ++++ vagrant_config.json | 13 +++++ 6 files changed, 84 insertions(+) create mode 100644 main-cookbooks/teracy-dev/recipes/docker_registry.rb create mode 100644 provisioners/shells/clean-docker-auth.sh create mode 100644 provisioners/shells/setup-docker-auth.sh diff --git a/main-cookbooks/teracy-dev/metadata.rb b/main-cookbooks/teracy-dev/metadata.rb index 01cc2149..8f9e87e7 100644 --- a/main-cookbooks/teracy-dev/metadata.rb +++ b/main-cookbooks/teracy-dev/metadata.rb @@ -16,6 +16,7 @@ recipe 'teracy-dev::directories', 'Manage directories.' recipe 'teracy-dev::env_vars', 'Configures environment variables.' recipe 'teracy-dev::docker', 'Installs Docker, docker-compose' +recipe 'teracy-dev::docker_registry', "Docker registry's tasks: login, ..." recipe 'teracy-dev::docker_machine', 'Installs docker-machine' recipe 'teracy-dev::inotify', 'Modify inotify, useful for development watching a lot of files' recipe 'teracy-dev::proxy', 'Create a reverse proxy with nginx' diff --git a/main-cookbooks/teracy-dev/recipes/default.rb b/main-cookbooks/teracy-dev/recipes/default.rb index dc6ad82c..dada2394 100644 --- a/main-cookbooks/teracy-dev/recipes/default.rb +++ b/main-cookbooks/teracy-dev/recipes/default.rb @@ -35,6 +35,7 @@ include_recipe 'teracy-dev::aliases' include_recipe 'teracy-dev::env_vars' include_recipe 'teracy-dev::docker' +include_recipe 'teracy-dev::docker_registry' include_recipe 'teracy-dev::docker_machine' include_recipe 'teracy-dev::inotify' include_recipe 'teracy-dev::proxy' diff --git a/main-cookbooks/teracy-dev/recipes/docker_registry.rb b/main-cookbooks/teracy-dev/recipes/docker_registry.rb new file mode 100644 index 00000000..270be1ae --- /dev/null +++ b/main-cookbooks/teracy-dev/recipes/docker_registry.rb @@ -0,0 +1,52 @@ +# Author:: Hoat Le +# Cookbook:: teracy-dev +# Recipe:: docker_registry +# Login into the Docker registries + +docker_conf = node['docker'] + +docker_registry_conf = node['docker_registry'] + +if docker_conf['enabled'] == true + execute 'rm ~/.docker/config.json' do + command "rm /home/vagrant/.docker/config.json || true" + only_if { + docker_registry_conf['force'] == true and + File.exist?('/home/vagrant/.docker/config.json') + } + end + + docker_registry_conf['entries'].each.with_index do |entry, index| + # private registry login + + username = entry['username'] ? entry['username'] : "" + + password = entry['password'] ? entry['password'] : "" + + if not username.empty? and not password.empty? + opt = [ + "-u #{username}", + "-p #{password}" + ].join(' '); + + execute 'docker login' do + command "docker login #{entry['host']} #{opt}" + # because we need root to execute docker-compose, not 'vagrant' + only_if { + docker_registry_conf['force'] == true or + not File.exist?('/root/.docker/config.json') + } + end + end + end + + execute 'copy /root/.docker/config.json to ~/.docker/config.json' do + command "cp /root/.docker/config.json /home/vagrant/.docker/config.json" + only_if { + File.exist?('/root/.docker/config.json') and ( + docker_registry_conf['force'] == true or + not File.exist?('/home/vagrant/.docker/config.json') + ) + } + end +end diff --git a/provisioners/shells/clean-docker-auth.sh b/provisioners/shells/clean-docker-auth.sh new file mode 100644 index 00000000..e33ec5a9 --- /dev/null +++ b/provisioners/shells/clean-docker-auth.sh @@ -0,0 +1,8 @@ +#! /bin/bash + +#! /bin/bash +source ~/.profile + +echo "unset DOCKER_USERNAME_$1" >> ~/.profile + +echo "unset DOCKER_PASSWORD_$1" >> ~/.profile \ No newline at end of file diff --git a/provisioners/shells/setup-docker-auth.sh b/provisioners/shells/setup-docker-auth.sh new file mode 100644 index 00000000..36106402 --- /dev/null +++ b/provisioners/shells/setup-docker-auth.sh @@ -0,0 +1,9 @@ +#! /bin/bash +source ~/.profile + +echo "export DOCKER_USERNAME_$1=$2" >> ~/.profile + +echo "export DOCKER_PASSWORD_$1=$3" >> ~/.profile + +echo $DOCKER_USERNAME_0 +echo $DOCKER_USERNAME_1 \ No newline at end of file diff --git a/vagrant_config.json b/vagrant_config.json index f280312b..a010e3c1 100644 --- a/vagrant_config.json +++ b/vagrant_config.json @@ -113,6 +113,19 @@ "members": ["vagrant"], // to append this member to "docker" group "action": "create" // one of create, delete. Default: create }, + "docker_registry": { + // set true to force re-login with all the defined entries, default: false (login once) + "force": true, + "entries": [{ + // default docker hub: "host": "https://index.docker.io/v1/", + "username": "", + "password": "" + },{ + "host": "registry.gitlab.com", + "username": "", + "password": "" + }] + }, "docker_compose": { "release": "1.11.2", // more: https://github.com/docker/compose/releases/ "enabled": true // "docker" must be enabled to get this From 482593a3dd0a188f47c057c2967c1a2b8a278ed2 Mon Sep 17 00:00:00 2001 From: Dat Phan Date: Mon, 19 Jun 2017 17:02:50 +0700 Subject: [PATCH 2/4] @#295 | add docker host --- provisioners/shells/clean-docker-auth.sh | 8 -------- provisioners/shells/setup-docker-auth.sh | 9 --------- vagrant_config.json | 4 ++-- 3 files changed, 2 insertions(+), 19 deletions(-) delete mode 100644 provisioners/shells/clean-docker-auth.sh delete mode 100644 provisioners/shells/setup-docker-auth.sh diff --git a/provisioners/shells/clean-docker-auth.sh b/provisioners/shells/clean-docker-auth.sh deleted file mode 100644 index e33ec5a9..00000000 --- a/provisioners/shells/clean-docker-auth.sh +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/bash - -#! /bin/bash -source ~/.profile - -echo "unset DOCKER_USERNAME_$1" >> ~/.profile - -echo "unset DOCKER_PASSWORD_$1" >> ~/.profile \ No newline at end of file diff --git a/provisioners/shells/setup-docker-auth.sh b/provisioners/shells/setup-docker-auth.sh deleted file mode 100644 index 36106402..00000000 --- a/provisioners/shells/setup-docker-auth.sh +++ /dev/null @@ -1,9 +0,0 @@ -#! /bin/bash -source ~/.profile - -echo "export DOCKER_USERNAME_$1=$2" >> ~/.profile - -echo "export DOCKER_PASSWORD_$1=$3" >> ~/.profile - -echo $DOCKER_USERNAME_0 -echo $DOCKER_USERNAME_1 \ No newline at end of file diff --git a/vagrant_config.json b/vagrant_config.json index a010e3c1..d5490766 100644 --- a/vagrant_config.json +++ b/vagrant_config.json @@ -115,9 +115,9 @@ }, "docker_registry": { // set true to force re-login with all the defined entries, default: false (login once) - "force": true, + "force": false, "entries": [{ - // default docker hub: "host": "https://index.docker.io/v1/", + "host": "https://index.docker.io/v1/", "username": "", "password": "" },{ From eebb77232772e7fee13765c295b052c3161f771f Mon Sep 17 00:00:00 2001 From: Dat Phan Date: Thu, 13 Jul 2017 11:04:18 +0700 Subject: [PATCH 3/4] @#295 | fix tests --- main-cookbooks/teracy-dev/recipes/docker_registry.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main-cookbooks/teracy-dev/recipes/docker_registry.rb b/main-cookbooks/teracy-dev/recipes/docker_registry.rb index 270be1ae..3bf20266 100644 --- a/main-cookbooks/teracy-dev/recipes/docker_registry.rb +++ b/main-cookbooks/teracy-dev/recipes/docker_registry.rb @@ -9,7 +9,7 @@ if docker_conf['enabled'] == true execute 'rm ~/.docker/config.json' do - command "rm /home/vagrant/.docker/config.json || true" + command 'rm /home/vagrant/.docker/config.json || true' only_if { docker_registry_conf['force'] == true and File.exist?('/home/vagrant/.docker/config.json') @@ -19,9 +19,9 @@ docker_registry_conf['entries'].each.with_index do |entry, index| # private registry login - username = entry['username'] ? entry['username'] : "" + username = entry['username'] ? entry['username'] : '' - password = entry['password'] ? entry['password'] : "" + password = entry['password'] ? entry['password'] : '' if not username.empty? and not password.empty? opt = [ @@ -41,7 +41,7 @@ end execute 'copy /root/.docker/config.json to ~/.docker/config.json' do - command "cp /root/.docker/config.json /home/vagrant/.docker/config.json" + command 'cp /root/.docker/config.json /home/vagrant/.docker/config.json' only_if { File.exist?('/root/.docker/config.json') and ( docker_registry_conf['force'] == true or From 32bd8c7a561337767e47df7d1dfb35904e0a9e1a Mon Sep 17 00:00:00 2001 From: Dat Phan Date: Wed, 19 Jul 2017 11:30:37 +0700 Subject: [PATCH 4/4] @#295 | default is empty --- vagrant_config.json | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/vagrant_config.json b/vagrant_config.json index d5490766..e5755101 100644 --- a/vagrant_config.json +++ b/vagrant_config.json @@ -116,15 +116,20 @@ "docker_registry": { // set true to force re-login with all the defined entries, default: false (login once) "force": false, - "entries": [{ - "host": "https://index.docker.io/v1/", - "username": "", - "password": "" - },{ - "host": "registry.gitlab.com", - "username": "", - "password": "" - }] + "entries": [] + // example: + // "entries": [ + // { + // "host": "https://index.docker.io/v1/", + // "username": "", + // "password": "" + // }, + // { + // "host": "registry.gitlab.com", + // "username": "", + // "password": "" + // } + // ] }, "docker_compose": { "release": "1.11.2", // more: https://github.com/docker/compose/releases/