Skip to content

Commit f7bbaf5

Browse files
author
Carlos León
authored
Merge pull request #36 from paulfantom/remove_script
Remove installation script
2 parents 84d3b07 + 13b41c8 commit f7bbaf5

15 files changed

+111
-146
lines changed

README.md

+2-35
Original file line numberDiff line numberDiff line change
@@ -17,42 +17,9 @@ Default values: (set them in your `docker_config` to overwrite)
1717

1818
### `docker_version`
1919

20-
Specify the version of Docker to install, e.g. `1.12.6`, `17.05`.
20+
Specify the version of Docker to install, e.g. `1.12.6`, `17.05`. It allows to upgrade to latest version by specifying `latest`.
2121

22-
Default value: `17.03`
23-
24-
### `docker_setup_script_md5_sum`
25-
26-
Default value: md5 checksum of default `docker_version` setup script (see `defaults/main.yml` for exact default value)
27-
28-
**If you intend to install a version of Docker other than the default, you must provide an appropriate override value for this variable.**
29-
30-
Either:
31-
32-
1. Generate an md5 checksum for the desired version's install script
33-
1. If you know what you are doing and are not worried about security, set this variable to "no" or "false" to disable checksum verification of the setup script.
34-
35-
### `docker_setup_script_url`
36-
37-
URL pointing to a Docker setup script that will install the specified `docker_version`.
38-
39-
Default value: `https://releases.rancher.com/install-docker/{{ docker_version }}.sh`
40-
41-
The default URL utilizes [Rancher Labs' version-specific, OS-agnostic setup scripts](https://github.com/rancher/install-docker), which in turn just install the appropriate version of `docker-ce` or `docker-engine` from the official Docker `apt` and `yum` repositories.
42-
43-
### `docker_upgrade`
44-
45-
Per default, this role will only download and run the installation script when
46-
Docker is not installed (or more precise: when `dockerd` is not in `$PATH`). Set
47-
`docker_upgrade` to `True` to override this behavior and force the install
48-
script to be run.
49-
50-
So in order to upgrade Docker on managed systems, take the following steps:
51-
52-
0. Either download a newer version of this role (with a more recent default
53-
version) or update `docker_version` and `docker_setup_script_md5_sum` in your
54-
host/group vars.
55-
1. Run your playbook with `-e docker_upgrade=True`
22+
Default value: `17.06`
5623

5724
### `docker_proxy`, `docker_http_proxy`, `docker_https_proxy`, `docker_no_proxy`
5825

defaults/main.yml

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
---
22
dockerpy: no
3+
34
docker_proxy: no
45
docker_http_proxy: ""
56
docker_https_proxy: ""
67
docker_no_proxy: ""
7-
docker_upgrade: false
8-
docker_default_config:
9-
storage-driver: devicemapper
10-
log-level: info
118

129
docker_version: "17.06"
13-
docker_setup_script_url: "https://releases.rancher.com/install-docker/{{ docker_version }}.sh"
10+
#docker_version: "latest"
11+
#docker_upgrade: false
1412

15-
# DANGER! THIS VALUE IS USED TO VERIFY THAT THE DOCKER SETUP SCRIPT IS LEGITIMATE.
16-
# DO NOT MODIFY THIS UNLESS YOU HAVE SPECIFIED A DIFFERENT "docker_version" or "setup_script_url"
17-
# IF YOU HAVE GENERATED AN MD5 CHECKSUM FOR YOUR DESIRED SETUP SCRIPT, STORE IT IN THIS VARIABLE
18-
# IF YOU REALLY DON'T WANT TO VERIFY CHECKSUM, SET THIS VALUE TO "false" or "no"
19-
docker_setup_script_md5_sum: "6be324016277879d49bd0e7f9f91e546"
13+
docker_default_config:
14+
storage-driver: devicemapper
15+
log-level: info

files/repos/Centos-7

-6
This file was deleted.

files/repos/Ubuntu-16.04

-1
This file was deleted.

files/repos/Ubuntu-17.04

-1
This file was deleted.

tasks/configure.yml

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
- name: ensure needed directories are present
3+
file:
4+
path: "{{ item }}"
5+
state: directory
6+
with_items:
7+
- /etc/docker
8+
- /etc/systemd/system
9+
10+
- name: ensure daemon config file is present
11+
copy:
12+
content: |
13+
{{ docker_json | to_nice_json(indent=2) }}
14+
dest: /etc/docker/daemon.json
15+
notify: restart docker
16+
17+
- name: create directory for proxy file
18+
file:
19+
path: /etc/systemd/system/docker.service.d
20+
state: directory
21+
when: docker_proxy
22+
23+
- name: create http-proxy.conf
24+
copy:
25+
content: |
26+
[Service]
27+
Environment="HTTP_PROXY={{ docker_http_proxy }}" "HTTPS_PROXY={{ docker_https_proxy }}" "NO_PROXY={{ docker_no_proxy }}"
28+
dest: /etc/systemd/system/docker.service.d/http-proxy.conf
29+
notify: restart docker
30+
when: docker_proxy
31+
32+
- name: ensure unit file is present & up to date
33+
template:
34+
src: docker.j2.service
35+
dest: /etc/systemd/system/docker.service
36+
notify: restart docker

tasks/install.yml

+54-14
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,57 @@
11
---
2-
- name: Compose md5 checksum
3-
set_fact:
4-
__docker_setup_script_checksum: "md5:{{ docker_setup_script_md5_sum }}"
5-
when: docker_setup_script_md5_sum != ""
2+
- name: install system dependencies
3+
package:
4+
name: "{{ item }}"
5+
state: present
6+
register: __ret
7+
retries: 5
8+
until: __ret is succeeded
9+
with_items: "{{ docker_dependencies }}"
610

7-
- name: Download docker setup script for desired version
8-
get_url:
9-
url: "{{ docker_setup_script_url }}"
10-
dest: "/tmp/docker-setup.sh"
11-
checksum: "{{ __docker_setup_script_checksum|default(omit) }}"
12-
mode: 0755
11+
- name: remove old versions
12+
package:
13+
name: "{{ item }}"
14+
state: absent
15+
with_items:
16+
- lxc-docker
17+
- docker-engine
18+
- docker
19+
- docker.io
1320

14-
- name: Execute docker setup script
15-
shell: "/tmp/docker-setup.sh"
16-
tags:
17-
- skip_ansible_lint
21+
- block:
22+
- name: add GPG key
23+
apt_key:
24+
url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg"
25+
state: present
26+
27+
- name: add docker repository | Debian
28+
apt_repository:
29+
repo: "deb [arch=amd64] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable"
30+
state: present
31+
when: ansible_os_family == "Debian"
32+
33+
- name: add docker repository | RedHat
34+
yum_repository:
35+
name: docker-ce-stable
36+
description: "Docker CE Stable - $basearch"
37+
baseurl: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/$releasever/$basearch/stable"
38+
gpgcheck: true
39+
gpgkey: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg"
40+
when: ansible_os_family == "RedHat" and ansible_distribution != "OracleLinux"
41+
42+
- name: Install docker
43+
package:
44+
name: "{{ docker_package }}"
45+
state: "{{ (docker_version == 'latest') | ternary('latest', 'present') }}"
46+
update_cache: yes
47+
register: __ret
48+
retries: 10
49+
until: __ret is succeeded
50+
notify:
51+
- restart docker
52+
53+
- name: ensure docker-py module is installed
54+
pip:
55+
name: docker-py
56+
version: 1.9.0
57+
when: dockerpy

tasks/main.yml

+2-58
Original file line numberDiff line numberDiff line change
@@ -7,65 +7,9 @@
77

88
- include: preflight.yml
99

10-
- name: ensure docker dependencies are installed
11-
package:
12-
name: "{{ item }}"
13-
state: present
14-
with_items: "{{ docker_dependencies }}"
10+
- include: install.yml
1511

16-
- name: check if docker is installed
17-
command: which dockerd
18-
register: which_dockerd
19-
changed_when: False
20-
ignore_errors: yes
21-
22-
- include: "install.yml"
23-
when: docker_upgrade or (which_dockerd | failed)
24-
25-
- name: ensure config folder is present
26-
file:
27-
path: /etc/docker
28-
state: directory
29-
30-
- name: ensure docker-py module is installed
31-
pip:
32-
name: docker-py
33-
version: 1.9.0
34-
when: dockerpy
35-
36-
- name: create directory for proxy file
37-
file:
38-
path: /etc/systemd/system/docker.service.d
39-
state: directory
40-
when: docker_proxy
41-
42-
- name: create http-proxy.conf
43-
template:
44-
src: http-proxy.j2.conf
45-
dest: /etc/systemd/system/docker.service.d/http-proxy.conf
46-
notify:
47-
- reload unit
48-
- restart docker
49-
when: docker_proxy
50-
51-
- name: ensure daemon config file is present
52-
template:
53-
src: daemon.j2.json
54-
dest: /etc/docker/daemon.json
55-
notify:
56-
- restart docker
57-
58-
- name: ensure unit file folder is present
59-
file:
60-
path: /etc/systemd/system
61-
state: directory
62-
63-
- name: ensure unit file is present & up to date
64-
template:
65-
src: docker.j2.service
66-
dest: /etc/systemd/system/docker.service
67-
notify:
68-
- restart docker
12+
- include: configure.yml
6913

7014
- name: ensure starts on system boot
7115
systemd:

tasks/preflight.yml

+2-12
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
---
22
- name: Set backwards compatibility for docker_upgrade var
33
set_fact:
4-
docker_upgrade: "{{ upgrade_docker }}"
5-
when: upgrade_docker is defined
4+
docker_version: latest
5+
when: upgrade_docker is defined or docker_upgrade is defined
66

77
- name: Set backwards compatibility for default_config
88
set_fact:
99
docker_default_config: "{{ default_docker_config }}"
1010
when: default_docker_config is defined
1111

12-
- name: Set backwards compatibility for setup_script_md5_sum
13-
set_fact:
14-
docker_setup_script_md5_sum: "{{ setup_script_md5_sum }}"
15-
when: setup_script_md5_sum is defined
16-
17-
- name: Set backwards compatibility for setup_script_url
18-
set_fact:
19-
docker_setup_script_url: "{{ setup_script_url }}"
20-
when: setup_script_url is defined
21-
2212
- name: apply default daemon config
2313
set_fact:
2414
docker_json: "{{ docker_default_config | combine(docker_config | default({})) }}"

templates/daemon.j2.json

-1
This file was deleted.

templates/http-proxy.j2.conf

-2
This file was deleted.

tests/playbook.yml

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
roles:
55
- ansible-role-docker
66
vars:
7+
docker_version: latest
78
default_docker_config:
89
storage-driver: vfs
910
log-level: info

tests/test_default.py

+1-6
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,4 @@ def test_service(host):
4646

4747

4848
def test_packages(host):
49-
if host.system_info.distribution == 'ol':
50-
DOCKER = 'docker-engine'
51-
else:
52-
DOCKER = 'docker-ce'
53-
54-
assert host.package(DOCKER).is_installed
49+
assert host.package('docker-ce').is_installed

vars/debian.yml

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
docker_package: "docker-ce{{ (docker_version != 'latest') | ternary('=' ~ docker_version, '') }}"
12
docker_dependencies:
23
- apt-transport-https
34
- ca-certificates
5+
- software-properties-common
6+
- python-pip

vars/redhat.yml

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
grafana_package: "docker-ce{{ (docker_version != 'latest') | ternary('-' ~ docker_version, '') }}"
12
docker_dependencies:
23
- ca-certificates
34
- yum-utils
5+
- epel-release
6+
- e2fsprogs
7+
- python2-pip

0 commit comments

Comments
 (0)