--- # Play 1: Setup environment for the application - name: "Setup environment for homepage application" hosts: all vars_files: - vars/ports.yml - vars/vars.yml - vars/homepage.yml tags: - setup tasks: - name: "Create user and environment" ansible.builtin.import_role: name: owner vars: owner_name: "{{ app_user }}" owner_extra_groups: - "docker" owner_ssh_keys: - "{{ lookup('file', 'files/av_id_rsa.pub') }}" - name: "Login to yandex docker registry." ansible.builtin.script: cmd: "files/yandex-docker-registry-auth.sh" # Play 2: Deploy the application - name: "Deploy homepage application" hosts: all vars_files: - vars/ports.yml - vars/vars.yml - vars/homepage.yml tags: - deploy tasks: - name: "Check is web service image 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: "Copy docker compose file" ansible.builtin.template: src: "./files/{{ app_name }}/docker-compose.yml.j2" 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