blob: a575c5b5645f2a6215064ea993083cecec5fd006 [file] [log] [blame]
---
# ============LICENSE_START=======================================================
# Copyright (C) 2019 The Nordix Foundation. All rights reserved.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================
- name: Get list of k8s container image tarfiles
find:
path: "{{ engine_workspace }}/offline/containers"
patterns: '*.tar'
register: container_image
# NOTE (fdegir): the user may not be member of docker group so we need root
# TODO (fdegir): we can perhaps skip loading already existing images here
- name: Load k8s container images from tarfiles
shell: docker load < {{ item.path }}
loop: "{{ container_image.files }}"
changed_when: false
become: true
# NOTE (fdegir): the escape of curly brackets in ansible is really messy unfortunately
# we also shouldn't attempt to tag and push container images that are already on local registry
# NOTE (fdegir): we do not push any image that is already on engine.local and any image without tag
- name: Get list of loaded k8s container images to push
shell: |
set -o pipefail
docker images --format '{{ '{{' }}.Repository{{ '}}' }}':'{{ '{{' }}.Tag{{ '}}' }}' | grep -v '{{ server_fqdn }}\|<none>' | sort
args:
executable: /bin/bash
changed_when: false
become: true
register: container_images
# (eeiafr) workaround for nexus3.onap.org:10001 because two : not allowed in pushing
- name: Create dict of k8s container images to tag and push
set_fact:
container_images_dict: "{{ ( container_images_dict | default({}) ) |\
combine({item: item | regex_replace('.*?.io/', '') | regex_replace('nexus3.onap.org:10001/', '') }) }}"
loop: "{{ container_images.stdout_lines }}"
# TODO (fdegir): it is messy to use ansible module for tagging and pushing but we can still look into it
# TODO (fdegir): we can perhaps skip tagging & pushing already existing images here
- name: Tag and push k8s container images to local registry
shell: |
docker tag {{ item.key }} {{ server_fqdn }}/{{ item.value }}
docker push {{ server_fqdn }}/{{ item.value }}
with_dict: "{{ container_images_dict }}"
changed_when: false
become: true
# vim: set ts=2 sw=2 expandtab: