#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