From e5ad8fda8076e80bf785cd32e3f64aa4a8492a0c Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Sun, 13 Apr 2025 10:44:32 +0300 Subject: [PATCH] Add playbook for homepage app deploy --- files/apps/homepage/docker-compose.yml | 6 ++ .../yandex-docker-registry-auth.sh | 0 playbook-app-homepage.yml | 61 +++++++++++++++++++ playbook-configuration.yml | 17 ------ playbook-docker.yml | 4 ++ roles/docker-app/tasks/main.yml | 6 -- 6 files changed, 71 insertions(+), 23 deletions(-) create mode 100644 files/apps/homepage/docker-compose.yml rename {roles/docker-app/files => files}/yandex-docker-registry-auth.sh (100%) create mode 100644 playbook-app-homepage.yml diff --git a/files/apps/homepage/docker-compose.yml b/files/apps/homepage/docker-compose.yml new file mode 100644 index 0000000..3ed9236 --- /dev/null +++ b/files/apps/homepage/docker-compose.yml @@ -0,0 +1,6 @@ +services: + homepage-web: + image: "${WEB_SERVICE_IMAGE}" + ports: + - "127.0.0.1:${WEB_SERVICE_PORT}:80" + restart: unless-stopped diff --git a/roles/docker-app/files/yandex-docker-registry-auth.sh b/files/yandex-docker-registry-auth.sh similarity index 100% rename from roles/docker-app/files/yandex-docker-registry-auth.sh rename to files/yandex-docker-registry-auth.sh diff --git a/playbook-app-homepage.yml b/playbook-app-homepage.yml new file mode 100644 index 0000000..962d6c8 --- /dev/null +++ b/playbook-app-homepage.yml @@ -0,0 +1,61 @@ +--- +- 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' diff --git a/playbook-configuration.yml b/playbook-configuration.yml index b653e46..dbe28a0 100644 --- a/playbook-configuration.yml +++ b/playbook-configuration.yml @@ -9,23 +9,6 @@ # Applications - - import_role: - name: docker-app - vars: - username: homepage - extra_groups: - - docker - ssh_keys: - - '{{ lookup("file", "files/av_id_rsa.pub") }}' - env: - DOCKER_PREFIX: homepage - PROJECT_NAME: homepage - IMAGE_PREFIX: homepage - CONTAINER_PREFIX: homepage - WEB_SERVER_PORT: '127.0.0.1:{{ homepage_port }}' - tags: - - apps - - import_role: name: docker-app vars: diff --git a/playbook-docker.yml b/playbook-docker.yml index dd821a2..be4f0b5 100644 --- a/playbook-docker.yml +++ b/playbook-docker.yml @@ -27,3 +27,7 @@ - name: 'Install rclone plugin' ansible.builtin.import_role: name: docker_rclone_plugin + + - name: 'Login to yandex docker registry.' + ansible.builtin.script: + cmd: 'files/yandex-docker-registry-auth.sh' diff --git a/roles/docker-app/tasks/main.yml b/roles/docker-app/tasks/main.yml index 7f97c8a..068eb67 100644 --- a/roles/docker-app/tasks/main.yml +++ b/roles/docker-app/tasks/main.yml @@ -16,9 +16,3 @@ owner: '{{ username }}' group: '{{ username }}' recurse: True - -- name: 'Login to yandex docker registry.' - ansible.builtin.script: - cmd: 'files/yandex-docker-registry-auth.sh' - become: yes - become_user: '{{ username }}'