From b7728ea8907a6e7ccd7decf56d3fc7b0365619dd Mon Sep 17 00:00:00 2001 From: Dincer Celik Date: Thu, 12 Dec 2019 13:57:17 +0300 Subject: [PATCH] Adds Docker image pruning command This change introduces prune-images command. Uses docker_prune module of Ansible that comes with version 2.8. Depends-On: https://review.opendev.org/#/c/699333/ Implements: blueprint docker-image-pruning Change-Id: Icbf374dd50e1cc1f1604bb4fa779b34279efd50c --- ansible/prune-images.yml | 9 +++++++++ ansible/roles/prune-images/defaults/main.yml | 2 ++ ansible/roles/prune-images/tasks/main.yml | 4 ++++ ansible/roles/prune-images/tasks/prune_images.yml | 8 ++++++++ .../prune-images/tasks/validate_docker_execute.yml | 3 +++ doc/source/user/operating-kolla.rst | 3 +++ .../docker-image-pruning-fffcffa7e99c6e63.yaml | 7 +++++++ tools/kolla-ansible | 14 ++++++++++++++ 8 files changed, 50 insertions(+) create mode 100644 ansible/prune-images.yml create mode 100644 ansible/roles/prune-images/defaults/main.yml create mode 100644 ansible/roles/prune-images/tasks/main.yml create mode 100644 ansible/roles/prune-images/tasks/prune_images.yml create mode 100644 ansible/roles/prune-images/tasks/validate_docker_execute.yml create mode 100644 releasenotes/notes/docker-image-pruning-fffcffa7e99c6e63.yaml diff --git a/ansible/prune-images.yml b/ansible/prune-images.yml new file mode 100644 index 0000000000..2b6a3adae3 --- /dev/null +++ b/ansible/prune-images.yml @@ -0,0 +1,9 @@ +--- +- import_playbook: gather-facts.yml + +- name: Apply role prune-images + hosts: baremetal + serial: '{{ kolla_serial|default("0") }}' + gather_facts: false + roles: + - prune-images diff --git a/ansible/roles/prune-images/defaults/main.yml b/ansible/roles/prune-images/defaults/main.yml new file mode 100644 index 0000000000..1cfdd158fb --- /dev/null +++ b/ansible/roles/prune-images/defaults/main.yml @@ -0,0 +1,2 @@ +--- +docker_image_prune_timeout: 300 diff --git a/ansible/roles/prune-images/tasks/main.yml b/ansible/roles/prune-images/tasks/main.yml new file mode 100644 index 0000000000..e6ba545914 --- /dev/null +++ b/ansible/roles/prune-images/tasks/main.yml @@ -0,0 +1,4 @@ +--- +- include_tasks: validate_docker_execute.yml + +- include_tasks: prune_images.yml diff --git a/ansible/roles/prune-images/tasks/prune_images.yml b/ansible/roles/prune-images/tasks/prune_images.yml new file mode 100644 index 0000000000..154e5e5f04 --- /dev/null +++ b/ansible/roles/prune-images/tasks/prune_images.yml @@ -0,0 +1,8 @@ +--- +- name: Pruning Kolla images + become: true + docker_prune: + images: yes + images_filters: + label: kolla_version + timeout: "{{ docker_image_prune_timeout }}" diff --git a/ansible/roles/prune-images/tasks/validate_docker_execute.yml b/ansible/roles/prune-images/tasks/validate_docker_execute.yml new file mode 100644 index 0000000000..0e85832c65 --- /dev/null +++ b/ansible/roles/prune-images/tasks/validate_docker_execute.yml @@ -0,0 +1,3 @@ +--- +- name: Ensure the docker service is running + script: ../tools/validate-docker-execute.sh diff --git a/doc/source/user/operating-kolla.rst b/doc/source/user/operating-kolla.rst index 77cafd18e3..18f9465906 100644 --- a/doc/source/user/operating-kolla.rst +++ b/doc/source/user/operating-kolla.rst @@ -191,6 +191,9 @@ tests. ``kolla-ansible -i INVENTORY deploy-containers`` is used to check and if necessary update containers, without generating configuration. +``kolla-ansible -i INVENTORY prune-images`` is used to prune orphaned Docker +images on hosts. + .. note:: In order to do smoke tests, requires ``kolla_enable_sanity_checks=yes``. diff --git a/releasenotes/notes/docker-image-pruning-fffcffa7e99c6e63.yaml b/releasenotes/notes/docker-image-pruning-fffcffa7e99c6e63.yaml new file mode 100644 index 0000000000..b2a576a1ae --- /dev/null +++ b/releasenotes/notes/docker-image-pruning-fffcffa7e99c6e63.yaml @@ -0,0 +1,7 @@ +--- +features: + - | + Adds command ``prune-images`` for Docker image pruning on hosts. See + `blueprint + `__ + for details. diff --git a/tools/kolla-ansible b/tools/kolla-ansible index 733c69c89e..7f4022a79f 100755 --- a/tools/kolla-ansible +++ b/tools/kolla-ansible @@ -88,6 +88,7 @@ Commands: upgrade Upgrades existing OpenStack Environment upgrade-bifrost Upgrades an existing bifrost container genconfig Generate configuration files for enabled OpenStack services + prune-images Prune orphaned Kolla images EOF } @@ -126,6 +127,7 @@ certificates upgrade upgrade-bifrost genconfig +prune-images EOF } @@ -391,6 +393,18 @@ EOF ACTION="Generate configuration files for enabled OpenStack services" EXTRA_OPTS="$EXTRA_OPTS -e kolla_action=config" ;; +(prune-images) + ACTION="Prune orphaned Kolla images" + PLAYBOOK="${BASEDIR}/ansible/prune-images.yml" + if [[ "${DANGER_CONFIRM}" != "--yes-i-really-really-mean-it" ]]; then + cat << EOF +WARNING: + This will PERMANENTLY DELETE all orphaned kolla images. To confirm, please add the following option: + --yes-i-really-really-mean-it +EOF + exit 1 + fi + ;; (bash-completion) bash_completion exit 0