--- - name: "Deploy transcriber application" hosts: all vars_files: - vars/ports.yml - vars/secrets.yml vars: app_name: "transcriber" app_user: "{{ app_name }}" base_dir: "/home/{{ app_user }}" config_dir: "{{ (base_dir, 'config') | path_join }}" config_file: "{{ (config_dir, 'config.toml') | path_join }}" data_dir: "{{ (base_dir, 'data') | path_join }}" backups_dir: "{{ (base_dir, 'backups') | path_join }}" docker_registry_prefix: "cr.yandex/crplfk0168i4o8kd7ade" # transcriber_image: "{{ transcriber_image | default(omit) }}" tasks: - name: "Create user and environment" ansible.builtin.import_role: name: owner vars: owner_name: "{{ app_user }}" 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: - "{{ config_dir }}" - "{{ data_dir }}" - "{{ backups_dir }}" - name: "Copy configuration files (templates)" ansible.builtin.copy: src: "files/{{ app_name }}/config.secrets.toml" dest: "{{ config_file }}" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0600" - name: "Login to yandex docker registry." ansible.builtin.script: cmd: "files/yandex-docker-registry-auth.sh" - name: "Deploy service" when: transcriber_image is defined block: # - name: "Check is web service image passed" # ansible.builtin.assert: # that: # - "transcriber_image is defined" # fail_msg: 'You must pass variable "transcriber_image"' - name: "Create full image name with container registry" ansible.builtin.set_fact: registry_transcriber_image: "{{ (docker_registry_prefix, transcriber_image) | path_join }}" - name: "Push web service image to remote registry" community.docker.docker_image: state: present source: local name: "{{ transcriber_image }}" repository: "{{ registry_transcriber_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