Use zuul's install-docker role

This allows us to remove the sudo from the tox molecule environment, since
the install-docker role correctly adds the zuul user to the docker group.

Change-Id: Ib7abd22c0caf793a8a59d38a4f63df7e60a7b69e
This commit is contained in:
Mark Goddard 2018-11-12 10:58:34 +00:00
parent ac79d0d09a
commit 74cdf09d1a
3 changed files with 2 additions and 86 deletions

View File

@ -1,4 +1,4 @@
--- ---
- hosts: all - hosts: all
roles: roles:
- role: docker-engine - role: install-docker

View File

@ -1,79 +0,0 @@
---
# Docker community edition installation procedure for Ubuntu taken from
# https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1.
# TODO: Configure docker to use the registry mirror provided by OpenStack
# infra. Kolla-ansible has code referencing
# http://{{ zuul_site_mirror_fqdn }}:8081/registry-1.docker/, but this did not
# seem to work.
- name: Fail if OS family is not supported
fail:
msg: "OS family {{ ansible_os_family }} is not supported"
when: ansible_os_family not in ["Debian"]
- name: Update apt package cache
apt:
update_cache: true
become: true
- name: Ensure dependencies are installed
apt:
name: "{{ item }}"
state: installed
with_items:
- apt-transport-https
- ca-certificates
- curl
- software-properties-common
become: true
- name: Ensure docker apt gpg key is installed
apt_key:
url: "https://download.docker.com/linux/ubuntu/gpg"
id: "0EBFCD88"
state: present
become: true
- name: Ensure docker CE stable repository is present
apt_repository:
repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_lsb.codename }} stable"
state: present
become: true
- name: Update apt package cache
apt:
update_cache: true
become: true
- name: Ensure docker-ce is installed
apt:
name: docker-ce
state: installed
become: true
- name: Ensure docker group exists
group:
name: docker
become: true
- name: Add user to docker group
user:
name: "{{ ansible_user_id }}"
append: yes
groups: docker
register: group_result
become: true
# NOTE(mgoddard): We need to reset the SSH connection to pick up the new group
# membership. For Ansible 2.3+, ideally we'd use a meta task with the
# reset_connection option but due to
# https://github.com/ansible/ansible/issues/27520 this does not work (checked
# in Ansible 2.3.2.0). Various methods have been attempted, but none have been
# found to work. Instead, we use sudo when executing tox.
# Attempted solutions:
# * reset_connection - see above.
# * kill local ssh/remove control socket - Zuul blocks running local commands.
# * kill remote sshd - causes the task to fail, error cannot be ignored.
# * pause for SSH connection timeout - fails due to
# https://github.com/ansible/ansible/issues/31694.

View File

@ -60,17 +60,12 @@ commands =
basepython = python2 basepython = python2
whitelist_externals = whitelist_externals =
bash bash
sudo
commands = commands =
# Install ansible role dependencies from Galaxy. # Install ansible role dependencies from Galaxy.
ansible-galaxy install \ ansible-galaxy install \
-r {toxinidir}/requirements.yml \ -r {toxinidir}/requirements.yml \
-p {toxinidir}/ansible/roles -p {toxinidir}/ansible/roles
# NOTE(mgoddard): We are executing the molecule command using sudo. This is bash -c "source {envdir}/bin/activate && {toxinidir}/tools/test-molecule.sh {posargs}"
# to work around the inability to reset the SSH connection in order to pick
# up the Linux group membership change for the docker group. See the
# docker-engine role for further details.
sudo bash -c "source {envdir}/bin/activate && {toxinidir}/tools/test-molecule.sh {posargs}"
[testenv:alint] [testenv:alint]
basepython = python3 basepython = python3