--- - name: "Setup and deploy homepage service" hosts: all vars_files: - 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 vars: owner_name: "{{ app_user }}" owner_uid: "{{ app_owner_uid }}" owner_gid: "{{ app_owner_gid }}" owner_extra_groups: ["docker"] - name: "Create application internal directories" ansible.builtin.file: path: "{{ item }}" state: "directory" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0750" loop: - "{{ base_dir }}" - name: "Copy docker compose file" ansible.builtin.template: src: "./files/{{ app_name }}/docker-compose.template.yml" dest: "{{ base_dir }}/docker-compose.yml" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" - name: "Run application with docker compose" community.docker.docker_compose_v2: project_src: "{{ base_dir }}" state: "present" remove_orphans: true tags: - run-app