From 5dc199f3ce5125b6d7b96514b7689ead15d3571f Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sat, 25 Jul 2026 14:06:30 +0300 Subject: [PATCH] =?UTF-8?q?remembos:=20=D0=B4=D0=B5=D0=BF=D0=BB=D0=BE?= =?UTF-8?q?=D0=B9=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=BB=D0=BE=D0=BA?= =?UTF-8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=83=D1=8E=20=D1=81=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=D0=BA=D1=83=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=D0=B0=20=D0=B2?= =?UTF-8?q?=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20Yandex=20Registry?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - плейбук зовёт роль app_image, docker_login в cr.yandex удалён - compose тянет `{{ app_name }}:{{ app_image_tag }}` с pull_policy: never вместо зашитого тега из реестра --- docs/backlog/local-image-build.md | 11 +++++++---- files/remembos/docker-compose.template.yml | 7 ++++++- playbook-remembos.yml | 19 ++++++++++--------- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/docs/backlog/local-image-build.md b/docs/backlog/local-image-build.md index 10936d0..9f1ffd6 100644 --- a/docs/backlog/local-image-build.md +++ b/docs/backlog/local-image-build.md @@ -23,13 +23,16 @@ remembos. Схема одинаковая — образ собирается л Шаги: -- завендорить роль `app_image` — в `roles/` сейчас только `owner`, `eget`, - `secrets`; механика переноса — [shared-roles-sync](shared-roles-sync.md) +- ~~завендорить роль `app_image`~~ — **сделано**: подписка в `SYNCED_ROLES`, + копия в `roles/app_image`; механика переноса — [shared-roles-sync](shared-roles-sync.md) - homepage: завести в Taskfile таск `image` с тегом из `$BUILD_ID`, перевести плейбук на роль, удалить `playbook-homepage-registry.yml` и registry-переменные из `vars/homepage.yml` -- remembos: контракта сборки нет (есть Dockerfile, нет Taskfile) — завести таск - `image`, убрать зашитый тег из compose +- ~~remembos: контракта сборки нет (есть Dockerfile, нет Taskfile) — завести таск + `image`, убрать зашитый тег из compose~~ — **сделано**: в репозитории remembos + появился `Taskfile.yml` с таском `image`, плейбук зовёт роль, compose тянет + `remembos:{{ app_image_tag }}` с `pull_policy: never`; `docker_login` из + плейбука убран - transcriber: исходников на этой машине нет — до начала решить, живой ли сервис и откуда его собирать; иначе он останется единственным держателем registry и токен из оборота не выйдет diff --git a/files/remembos/docker-compose.template.yml b/files/remembos/docker-compose.template.yml index d6d5893..e2d953a 100644 --- a/files/remembos/docker-compose.template.yml +++ b/files/remembos/docker-compose.template.yml @@ -1,9 +1,14 @@ +# Образ собирается локально и доставляется на сервер ролью app_image +# (см. playbook-remembos.yml): тег — случайный BUILD_ID каждого прогона, +# в реестре образа нет, поэтому pull_policy: never. + services: remembos_app: - image: "{{ yc_container_registry_repository }}/remembos:v0.2.0" + image: "{{ app_name }}:{{ app_image_tag }}" container_name: remembos_app restart: unless-stopped + pull_policy: never user: "{{ owner_create_result.uid }}:{{ owner_create_result.group }}" environment: - PUID={{ owner_create_result.uid }} diff --git a/playbook-remembos.yml b/playbook-remembos.yml index 2b451e6..b13d110 100644 --- a/playbook-remembos.yml +++ b/playbook-remembos.yml @@ -13,6 +13,16 @@ config_file: "{{ (config_dir, 'config.toml') | path_join }}" tasks: + # Образ собирается на control-хосте самим репозиторием remembos (контракт — + # `task image`) и едет на сервер через docker save/load, без реестра. + # Роль выставляет факт app_image_tag — его подхватывает docker-compose. + - name: "Build and deliver application image" + ansible.builtin.import_role: + name: "app_image" + vars: + app_image_name: "{{ app_name }}" + app_image_src_dir: '{{ (playbook_dir, "..", "remembos") | path_join }}' + - name: "Create user and environment" ansible.builtin.import_role: name: owner @@ -53,15 +63,6 @@ group: "{{ app_user }}" mode: "0640" - - name: 'Login to Yandex Container Registry' - community.docker.docker_login: - registry_url: '{{ yc_container_registry }}' - username: 'oauth' - password: '{{ yc_oauth_token }}' - # Токен — аргумент модуля: по умолчанию не печатается, но всплывает - # при -v и в отчёте о падении задачи. - no_log: true - - name: "Run application with docker compose" community.docker.docker_compose_v2: project_src: "{{ base_dir }}"