From 3bce66d856c7a1b3e0415a227915f58e04e7ef12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Leo=CC=81n?= Date: Mon, 31 Oct 2016 18:00:53 +0100 Subject: [PATCH 1/6] Remove support for docker_rc --- README.md | 24 +++++++++++++++--------- defaults/main.yml | 1 - files/docker-testing.repo | 6 ------ tasks/main.yml | 5 ----- 4 files changed, 15 insertions(+), 21 deletions(-) delete mode 100644 files/docker-testing.repo diff --git a/README.md b/README.md index 63dcd80..a491dd2 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,7 @@ None Role Variables -------------- -``` -- vars: - docker_rc: no # no by default. Set to yes to install the latest Docker version (release candidates and such) -``` +None Dependencies ------------ @@ -25,18 +22,27 @@ None Example Playbook ---------------- -Install vanilla Docker +Install Docker ``` - hosts: servers roles: - mongrelion.docker ``` -Install testing release of Docker +Testing +------- +For development, we use Vagrant. +Bring the VM up with + +``` +$ vagrant up +``` + +This will automatically run the playbooks against the virtual machine once it's up. +After making changes to any playbook, you can test the provisioning with + ``` -- hosts: servers - roles: - - { role: mongrelion.docker, docker_rc: yes } +$ vagrant provision ``` License diff --git a/defaults/main.yml b/defaults/main.yml index 3d42aff..42fda61 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,4 +1,3 @@ --- -docker_rc: no docker_clusterstore: no consul_ip: 127.0.0.1 diff --git a/files/docker-testing.repo b/files/docker-testing.repo deleted file mode 100644 index f9bd388..0000000 --- a/files/docker-testing.repo +++ /dev/null @@ -1,6 +0,0 @@ -[docker-testing-repo] -name=Docker testing Repository -baseurl=https://yum.dockerproject.org/repo/testing/centos/7 -enabled=1 -gpgcheck=1 -gpgkey=https://yum.dockerproject.org/gpg diff --git a/tasks/main.yml b/tasks/main.yml index 0c5e6be..5cdbc98 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,11 +1,6 @@ --- - name: ensure repo is present copy: src=files/docker.repo dest=/etc/yum.repos.d/docker.repo - when: not docker_rc - -- name: ensure testing repo is present - copy: src=files/docker-testing.repo dest=/etc/yum.repos.d/docker-testing.repo - when: docker_rc - name: ensure docker is installed yum: name=docker-engine state=present From 8e1c463e6e5f24ef7821422f8c92e6020ab44f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Leo=CC=81n?= Date: Mon, 31 Oct 2016 18:07:20 +0100 Subject: [PATCH 2/6] Fix systemd unit file --- files/docker.service | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/files/docker.service b/files/docker.service index e806792..0f938ef 100644 --- a/files/docker.service +++ b/files/docker.service @@ -1,15 +1,14 @@ [Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com -After=network.target docker.socket -Requires=docker.socket +After=network.target [Service] Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker -ExecStart=/usr/bin/docker daemon -H fd:// +ExecStart=/usr/bin/docker daemon -H unix:///var/run/docker.sock ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=1048576 LimitNPROC=1048576 From 13439010558937e158fceee33f01f7c43d9b2133 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Leo=CC=81n?= Date: Mon, 31 Oct 2016 18:31:04 +0100 Subject: [PATCH 3/6] Remove step for adding vagrant user to the docker group The vagrant user is only used for testing. There is no need to include this in production code. --- tasks/main.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/tasks/main.yml b/tasks/main.yml index 5cdbc98..244e3e8 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -23,6 +23,3 @@ - name: ensure starts on system boot service: name=docker enabled=yes - -- name: ensure vagrant user can run docker commands - user: name=vagrant groups=docker append=yes From cbf14692b47bb75654b9e44a455c415f7f7c42ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Leo=CC=81n?= Date: Mon, 31 Oct 2016 18:34:04 +0100 Subject: [PATCH 4/6] Move CentOS specifics to its own file --- files/{docker.repo => docker.yum.repo} | 0 tasks/main.yml | 6 +----- tasks/os/RedHat.yml | 6 ++++++ 3 files changed, 7 insertions(+), 5 deletions(-) rename files/{docker.repo => docker.yum.repo} (100%) create mode 100644 tasks/os/RedHat.yml diff --git a/files/docker.repo b/files/docker.yum.repo similarity index 100% rename from files/docker.repo rename to files/docker.yum.repo diff --git a/tasks/main.yml b/tasks/main.yml index 244e3e8..fe9d22e 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,9 +1,5 @@ --- -- name: ensure repo is present - copy: src=files/docker.repo dest=/etc/yum.repos.d/docker.repo - -- name: ensure docker is installed - yum: name=docker-engine state=present +- include: "os/{{ ansible_os_family }}.yml" - name: ensure config folder is present file: path=/etc/docker state=directory diff --git a/tasks/os/RedHat.yml b/tasks/os/RedHat.yml new file mode 100644 index 0000000..5e49333 --- /dev/null +++ b/tasks/os/RedHat.yml @@ -0,0 +1,6 @@ +--- +- name: ensure repo is present + copy: src=files/docker.yum.repo dest=/etc/yum.repos.d/docker.repo + +- name: ensure docker is installed + yum: name=docker-engine state=present From 52ca21dbeb28f878ed1de6055f5771d0833ca899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Leo=CC=81n?= Date: Mon, 31 Oct 2016 19:01:15 +0100 Subject: [PATCH 5/6] Add support for Debian Jessie --- Vagrantfile | 18 +++++++++++++++--- files/docker.apt.repo | 1 + meta/main.yml | 3 +++ tasks/main.yml | 3 +++ tasks/os/Debian.yml | 19 +++++++++++++++++++ 5 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 files/docker.apt.repo create mode 100644 tasks/os/Debian.yml diff --git a/Vagrantfile b/Vagrantfile index 1e14d4c..f6cca82 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,12 +2,24 @@ # vi: set ft=ruby : Vagrant.configure(2) do |config| - config.vm.box = "centos/7" config.vm.provider "virtualbox" do |vb| vb.memory = "512" end - config.vm.provision "ansible" do |ansible| - ansible.playbook = "tests/vagrant.yml" + config.vm.define "centos" do |machine| + machine.vm.box = "minimal/centos7" + machine.vm.provision "shell", inline: "yum update -y" + machine.vm.provision "ansible" do |ansible| + ansible.playbook = "tests/vagrant.yml" + end end + + config.vm.define "debian" do |machine| + machine.vm.box = "minimal/jessie64" + machine.vm.provision "shell", inline: "apt-get update && apt-get install -y python" + machine.vm.provision "ansible" do |ansible| + ansible.playbook = "tests/vagrant.yml" + end + end + end diff --git a/files/docker.apt.repo b/files/docker.apt.repo new file mode 100644 index 0000000..37bccd1 --- /dev/null +++ b/files/docker.apt.repo @@ -0,0 +1 @@ +deb https://apt.dockerproject.org/repo debian-jessie main diff --git a/meta/main.yml b/meta/main.yml index 23f7c66..b8d1ecc 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -8,6 +8,9 @@ galaxy_info: - name: EL versions: - 7 + - name: Debian + versions: + - jessie galaxy_tags: - docker - swarm diff --git a/tasks/main.yml b/tasks/main.yml index fe9d22e..485635e 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -9,6 +9,9 @@ notify: - restart docker +- name: ensure base folder for unit file is present + file: path=/usr/lib/systemd/system state=directory + - name: ensure unit file is present & up to date copy: src=files/docker.service dest=/usr/lib/systemd/system/docker.service notify: diff --git a/tasks/os/Debian.yml b/tasks/os/Debian.yml new file mode 100644 index 0000000..dc108d1 --- /dev/null +++ b/tasks/os/Debian.yml @@ -0,0 +1,19 @@ +--- +- name: ensure docker dependencies are installed + apt: name={{ item }} state=present + with_items: + - apt-transport-https + - ca-certificates + +- name: ensure Docker GPG key is present + apt_key: id=58118E89F3A912897C070ADBF76221572C52609D keyserver=hkp://p80.pool.sks-keyservers.net:80 + +- name: ensure repo is present + copy: src=files/docker.apt.repo dest=/etc/apt/sources.list.d/docker.list + register: repofile + +- name: ensure apt cache is updated + apt: update_cache=yes + +- name: ensure docker is installed + apt: name=docker-engine state=present From 116b35d9f6b6046923dc4107e2ab333d060c742e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Leo=CC=81n?= Date: Tue, 1 Nov 2016 14:57:02 +0100 Subject: [PATCH 6/6] Add support for docker-py module --- defaults/main.yml | 3 ++- tasks/main.yml | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/defaults/main.yml b/defaults/main.yml index 42fda61..c612b29 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,3 +1,4 @@ --- -docker_clusterstore: no consul_ip: 127.0.0.1 +docker_clusterstore: no +dockerpy: no diff --git a/tasks/main.yml b/tasks/main.yml index 485635e..a3b639a 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -4,6 +4,10 @@ - name: ensure config folder is present file: path=/etc/docker state=directory +- name: ensure docker-py module is installed + pip: name=docker-py version=1.9.0 + when: dockerpy + - name: ensure daemon config file is present template: src=daemon.j2.json dest=/etc/docker/daemon.json notify: