Skip to content

Commit

Permalink
Fixes #86
Browse files Browse the repository at this point in the history
  • Loading branch information
haxorof committed Feb 3, 2019
1 parent 96a666d commit b1f0b3f
Show file tree
Hide file tree
Showing 10 changed files with 116 additions and 21 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
### Added

- Support removal of Docker CE packages and related configuration ([#82](../../issues/82))
- Replace docker_pkg_name with docker_version ([#86](../../issues/86))

### Deprecated

- Variable `docker_remove_pre_ce` will be removed in future major release ([#80](../../issues/80))
- Variable `docker_pkg_name` will be removed in future major release ([#86](../../issues/86))

## [2.1.1](../../releases/tag/2.1.1) - 2019-02-01

Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,13 @@ docker_channel: stable
# Always ensure latest version of Docker CE
docker_latest_version: true
# Docker package to install. Change this if you want a specific version of Docker
# DEPRECATED! use docker_version instead
docker_pkg_name: docker-ce
# Docker version
# ex. 18.06.1.ce-3.el7
docker_version: ''
# If below variable is set to true it will remove older Docker installation before Docker CE.
# DEPRECATED! nothing replaces this feature
docker_remove_pre_ce: false
# CAUTION! If below variable is set to true it will try to completely remove Docker CE
# installation and all related files and configuation.
Expand Down
5 changes: 5 additions & 0 deletions defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,13 @@ docker_channel: stable
# Always ensure latest version of Docker CE
docker_latest_version: true
# Docker package to install. Change this if you want a specific version of Docker
# DEPRECATED! use docker_version instead
docker_pkg_name: docker-ce
# Docker version
# ex. 18.06.1.ce-3.el7
docker_version: ''
# If below variable is set to true it will remove older Docker installation before Docker CE.
# DEPRECATED! nothing replaces this feature
docker_remove_pre_ce: false
# CAUTION! If below variable is set to true it will try to completely remove Docker CE
# installation and all related files and configuation.
Expand Down
20 changes: 17 additions & 3 deletions tasks/install-docker.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,28 @@
---
- name: Set docker-ce package state to latest
- name: Set version string
set_fact:
_docker_version_string: "{{ docker_os_pkg_version_separator[_docker_os_dist] }}{{ docker_version }}"
when: docker_version != ''

- name: Set packages state to latest
set_fact:
_docker_pkg_state: 'latest'
when: docker_latest_version | bool

- name: Ensure docker-ce is installed
- name: Filter out packages to match older Docker CE versions
set_fact:
_docker_packages:
- docker-ce
when:
- docker_version != ''
- docker_version | match('17.') or docker_version | match('18.03') or docker_version | match('18.06')

- name: Ensure Docker CE is installed
become: true
package:
name: "{{ docker_pkg_name }}"
name: "{{ (item | search('docker')) | ternary((item + _docker_version_string | default('')), item) }}"
state: "{{ _docker_pkg_state | default('present') }}"
with_items: "{{ _docker_packages | default(docker_packages) }}"
register: _pkg_result
until: _pkg_result|succeeded
notify: restart docker
6 changes: 6 additions & 0 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@
- docker_enable_ce_edge
tags: ["always"]

- name: Temporary handling of deprecated variable docker_pkg_name
set_fact:
docker_version: "{{ docker_pkg_name | regex_replace('^docker-ce.(.+)$', '\\1') }}"
when: docker_pkg_name | match('docker-ce' + docker_os_pkg_version_separator[_docker_os_dist])
tags: ["always"]

- name: Compatibility and distribution checks
include_tasks: checks.yml
when: docker_do_checks | bool
Expand Down
4 changes: 2 additions & 2 deletions tasks/uninstall-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
package:
name: "{{ item }}"
state: absent
with_items: "{{ docker_packages.versioned + docker_packages.dependencies }}"
with_items: "{{ docker_packages }}"
register: _pkg_result
until: _pkg_result|succeeded
when: _docker_os_dist != "Ubuntu" and
Expand All @@ -24,7 +24,7 @@
name: "{{ item }}"
state: absent
purge: yes
with_items: "{{ docker_packages.versioned + docker_packages.dependencies }}"
with_items: "{{ docker_packages }}"
register: _pkg_result
until: _pkg_result|succeeded
when: _docker_os_dist == "Ubuntu" or
Expand Down
1 change: 0 additions & 1 deletion tests/generateConf.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,3 @@ if [[ "$arg_1" == "--nop" ]]; then
else
GenerateTestCaseConfig $arg_1 $arg_2
fi
echo "==> Done!"
57 changes: 51 additions & 6 deletions tests/test_config_nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,64 @@
roles:
- haxorof.docker-ce

- name: Verify that Docker CE Engine is from nightly channel
- name: Verify that Docker CE Engine and CLI is from nightly channel
hosts: test-host
tasks:
- name: Get Docker engine version
become: true
shell: "{{ _cmd }}"
register: _docker_version_cmd
register: _docker_server_version_cmd
changed_when: no
vars:
_cmd: !unsafe 'docker version --format="{{ .Server.Version }}"'

- debug:
var: _docker_version_cmd
- name: Get Docker CLI version
become: true
shell: "{{ _cmd }}"
register: _docker_client_version_cmd
changed_when: no
vars:
_cmd: !unsafe 'docker version --format="{{ .Client.Version }}"'

- fail:
msg: "Expected nightly Docker Engine (Actual: {{ _docker_server_version_cmd.stdout }})"
when: not _docker_server_version_cmd.stdout | search("0.0.0")

- fail:
msg: Docker Engine is not a nightly build
when: not _docker_version_cmd.stdout | search("0.0.0")
msg: "Expected nightly Docker CLI (Actual: {{ _docker_client_version_cmd.stdout }})"
when: not _docker_client_version_cmd.stdout | search("0.0.0")

# - name: Test to install Docker CE switch back to stable channel
# hosts: test-host
# vars:
# docker_users:
# - vagrant
# roles:
# - haxorof.docker-ce

# - name: Verify that Docker CE Engine and CLI is from stable channel
# hosts: test-host
# tasks:
# - name: Get Docker engine version
# become: true
# shell: "{{ _cmd }}"
# register: _docker_server_version_cmd
# changed_when: no
# vars:
# _cmd: !unsafe 'docker version --format="{{ .Server.Version }}"'

# - name: Get Docker CLI version
# become: true
# shell: "{{ _cmd }}"
# register: _docker_client_version_cmd
# changed_when: no
# vars:
# _cmd: !unsafe 'docker version --format="{{ .Client.Version }}"'

# - fail:
# msg: "Expected stable Docker Engine (Actual: {{ _docker_server_version_cmd.stdout }})"
# when: _docker_server_version_cmd.stdout | search("0.0.0")

# - fail:
# msg: "Expected stable Docker CLI (Actual: {{ _docker_client_version_cmd.stdout }})"
# when: _docker_client_version_cmd.stdout | search("0.0.0")
22 changes: 18 additions & 4 deletions tests/test_old_version.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
---
- hosts: test-host
vars:
docker_pkg_name: docker-ce-17.06.0.ce-1.el7.centos
roles:
- haxorof.docker-ce
tasks:
- name: Install Docker CE 17.06 (using docker_pkg_name)
include_role:
name: haxorof.docker-ce
vars:
docker_pkg_name: docker-ce-17.06.0.ce-1.el7.centos

- name: Remove Docker CE
include_role:
name: haxorof.docker-ce
vars:
docker_remove: true

- name: Install Docker CE 18.06 (using docker_version)
include_role:
name: haxorof.docker-ce
vars:
docker_version: 18.06.1.ce-3.el7
15 changes: 10 additions & 5 deletions vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,16 @@ docker_envs_dir:
Debian: /etc/default

docker_packages:
versioned:
- docker-ce-cli
- docker-ce
dependencies:
- containerd.io
- docker-ce-cli
- docker-ce
- containerd.io

docker_os_pkg_version_separator:
CentOS: '-'
RedHat: '-'
Fedora: '-'
Ubuntu: '='
Debian: '='

docker_old_packages:
CentOS:
Expand Down

0 comments on commit b1f0b3f

Please sign in to comment.