
# Copyright 2017-present Open Networking Foundation
#
# 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.


- name: Directories are present
  file:
    path: "{{ item }}"
    state: directory
    recurse: yes
  with_items:
    - /data/registry-mirror/conf
  tags: [registry]

- name: Configuration is copied
  copy:
    src: mirror-config.yml
    dest: /data/registry-mirror/conf/config.yml
  tags: [registry]

- name: Registry container is running
  docker_container:
    name: registry
    image: registry:2.4.0
    ports:
      - "5000:5000"
    volumes:
      - /vagrant/registry:/var/lib/registry/docker/registry
      - /data/registry/conf:/conf
  tags: [registry]

- name: Mirror container is running
  docker_container:
    name: registry-mirror
    image: registry:2.4.0
    ports:
      - "5001:5000"
    volumes:
      - /vagrant/registry-mirror:/var/lib/registry/docker/registry
      - /data/registry-mirror/conf:/conf
    command: /conf/config.yml
  tags: [registry]
