From cb43273ad5e4ab4abb8480804ae5151f28e47941 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sat, 25 Jul 2026 14:36:39 +0300 Subject: [PATCH] =?UTF-8?q?homepage:=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 и `pull: always` убраны - compose тянет `homepage-nginx:{{ app_image_tag }}` с pull_policy: never - удалён playbook-homepage-registry.yml и registry-переменные из vars --- files/homepage/docker-compose.template.yml | 7 ++++++- playbook-homepage-registry.yml | 18 ------------------ playbook-homepage.yml | 20 ++++++++++---------- vars/homepage.yml | 8 +++----- 4 files changed, 19 insertions(+), 34 deletions(-) delete mode 100644 playbook-homepage-registry.yml diff --git a/files/homepage/docker-compose.template.yml b/files/homepage/docker-compose.template.yml index 3b34f08..fb37178 100644 --- a/files/homepage/docker-compose.template.yml +++ b/files/homepage/docker-compose.template.yml @@ -1,10 +1,15 @@ +# Образ собирается локально и доставляется на сервер ролью app_image +# (см. playbook-homepage.yml): тег — случайный BUILD_ID каждого прогона, +# в реестре образа нет, поэтому pull_policy: never. + services: homepage_app: # noinspection ComposeUnknownValues - image: "{{ registry_homepage_nginx_image }}" + image: "{{ homepage_image_name }}:{{ app_image_tag }}" container_name: homepage_app restart: unless-stopped + pull_policy: never networks: - "web_proxy_network" diff --git a/playbook-homepage-registry.yml b/playbook-homepage-registry.yml deleted file mode 100644 index eab8eb5..0000000 --- a/playbook-homepage-registry.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- -- name: "Upload local homepage images to registry" - hosts: all - gather_facts: false - - vars_files: - - vars/homepage.yml - - tasks: - - - name: "Push web service image to remote registry" - community.docker.docker_image: - state: present - source: local - name: "{{ homepage_nginx_image }}" - repository: "{{ registry_homepage_nginx_image }}" - push: true - delegate_to: 127.0.0.1 diff --git a/playbook-homepage.yml b/playbook-homepage.yml index c63ea1f..973d80a 100644 --- a/playbook-homepage.yml +++ b/playbook-homepage.yml @@ -6,6 +6,16 @@ - vars/homepage.yml tasks: + # Образ собирается на control-хосте самим репозиторием homepage (контракт — + # `task image`: сборка сайта astro + nginx-образ) и едет на сервер через + # docker save/load, без реестра. Роль выставляет факт app_image_tag. + - name: "Build and deliver application image" + ansible.builtin.import_role: + name: "app_image" + vars: + app_image_name: "{{ homepage_image_name }}" + app_image_src_dir: '{{ (playbook_dir, "..", "homepage") | path_join }}' + - name: "Create user and environment" ansible.builtin.import_role: name: owner @@ -25,15 +35,6 @@ loop: - "{{ base_dir }}" - - 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: "Copy docker compose file" ansible.builtin.template: src: "./files/{{ app_name }}/docker-compose.template.yml" @@ -47,6 +48,5 @@ project_src: "{{ base_dir }}" state: "present" remove_orphans: true - pull: "always" tags: - run-app diff --git a/vars/homepage.yml b/vars/homepage.yml index d0dde75..674cf83 100644 --- a/vars/homepage.yml +++ b/vars/homepage.yml @@ -4,9 +4,7 @@ app_user: "{{ app_name }}" app_owner_uid: 1008 app_owner_gid: 1009 base_dir: "{{ (application_dir, app_name) | path_join }}" -docker_registry_prefix: "cr.yandex/crplfk0168i4o8kd7ade" -homepage_nginx_image: "homepage-nginx:latest" - -# Registry images -registry_homepage_nginx_image: "{{ (docker_registry_prefix, homepage_nginx_image) | path_join }}" +# Имя локально собираемого образа: им приложение тегает сборку (`task image`), +# под ним же роль app_image везёт образ на сервер и его находит docker-compose. +homepage_image_name: "homepage-nginx"