Тег Docker и запрос для поставщика облачных услуг в ansible

#docker #ansible

#docker #ansible

Вопрос:

Я создаю контейнер docker с использованием ansible, но мне нужно также пометить этот контейнер для GCP (облачная платформа Google). Я могу сделать это в командной строке с помощью

 docker tag app:latest gcr.io/my-project-12314514/app:latest
  

но я не вижу, как это сделать с помощью ansible. Я использую команду docker_image для создания своего контейнера.

 ---
- hosts: localhost
  connection: local

  tasks:
  - name: Build container
    docker_image:
      name: app
      path: web_app/
      pull: no
      state: build
  

элемент тега перезаписывает только «последний» тег. Я могу

 ---
- hosts: localhost
  connection: local

  tasks:
  - name: Build container
    docker_image:
      name: app
      path: web_app/
      pull: no
      state: build
  - name: Tag for GCP
    docker_image:
      name: gcr.io/my-project-12314514/app
      path: web_app/
      pull: no
      state: build
  

Я скопировал все, чтобы создать контейнер с тегами, и это, кажется, работает, но выглядит неуклюже. Можно ли это сделать более элегантно?

Комментарии:

1. разве tag поле не выполняет то, о чем вы просите? docs.ansible.com/ansible/latest/modules /…

2. насколько я вижу, вы используете его для перезаписи тега. Например. web_app:latest используется по умолчанию, и вы можете изменить его на web_app: v1, установив тег равным v1

3. Почему бы вам не создать свой образ напрямую с правильным именем / тегом (gcp) в первый раз и не использовать его таким образом?

Ответ №1:

Примеры в документации показывают, как вы могли бы это сделать:

https://docs.ansible.com/ansible/latest/modules/docker_image_module.html#examples

 tasks:
- name: Build container
  docker_image:
    name: app
    path: web_app/
    pull: no
    state: build
- name: Tag for GCP
  docker_image:
    name: app
    repository: gcr.io/your-project/your-repo
    tag: your-tag
    push: yes