--- - 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_push: name: '{{ registry_homepage_web_image }}' 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/apps/{{ 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'