--- - name: "Deploy homepage application" hosts: all vars_files: - vars/ports.yml - vars/vars.yml vars: app_name: "homepage" base_dir: "/home/major/applications/{{ app_name }}/" docker_registry_prefix: "cr.yandex/crplfk0168i4o8kd7ade" homepage_web_image: "{{ homepage_web_image | default(omit) }}" tasks: - name: "Check is web service imape passed" ansible.builtin.assert: that: - "homepage_web_image is defined" fail_msg: 'You must pass variable "homepage_web_image"' - name: "Create full image name with container registry" ansible.builtin.set_fact: registry_homepage_web_image: "{{ (docker_registry_prefix, homepage_web_image) | path_join }}" - name: "Push web service image to remote registry" community.docker.docker_image: state: present source: local name: "{{ homepage_web_image }}" repository: "{{ registry_homepage_web_image }}" push: true delegate_to: 127.0.0.1 - name: "Create application directories" ansible.builtin.file: path: "{{ item }}" state: "directory" mode: "0755" loop: - "{{ base_dir }}" - name: "Copy application files" ansible.builtin.copy: src: "{{ item }}" dest: "{{ base_dir }}" mode: "0644" loop: - "./files/{{ app_name }}/docker-compose.yml" - name: "Set up environment variables for application" ansible.builtin.template: src: "env.j2" dest: '{{ (base_dir, ".env") | path_join }}' mode: "0644" vars: env_dict: WEB_SERVICE_IMAGE: "{{ registry_homepage_web_image }}" WEB_SERVICE_PORT: "{{ homepage_port }}" - name: "Run application with docker compose" community.docker.docker_compose_v2: project_src: "{{ base_dir }}" state: "present"