From af3fd29f1fb4540690c57677bd9954fc9cc64ca9 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Sun, 14 Mar 2021 22:19:05 +0100 Subject: [PATCH] Add pastebin legacy service --- deploy.yaml | 5 +++++ init.yaml | 11 ++++++----- services/legacy/config/Dockerfile.j2 | 6 +++++- services/legacy/sites/pastebin.conf | 19 +++++++++++++++++++ services/legacy/tasks/_docker.yml | 7 +++++++ services/legacy/tasks/config.yml | 10 ++++++++++ services/legacy/tasks/setup.yml | 2 +- services/traefik/config/dynamic/pastebin.yaml | 6 ++++++ tasks/deploy.yml | 6 ++++++ vars/services.yml | 5 +++++ 10 files changed, 70 insertions(+), 7 deletions(-) create mode 100644 services/legacy/sites/pastebin.conf create mode 100644 services/traefik/config/dynamic/pastebin.yaml diff --git a/deploy.yaml b/deploy.yaml index 0d39ff3..93831a8 100644 --- a/deploy.yaml +++ b/deploy.yaml @@ -15,3 +15,8 @@ loop: "{{ services }}" tags: - always + + handlers: + - name: Restart services + loop: "{{ services_to_restart | unique }}" + shell: "docker service update {{ item }} --force" diff --git a/init.yaml b/init.yaml index 70728a7..c8d09a9 100644 --- a/init.yaml +++ b/init.yaml @@ -19,9 +19,10 @@ user: "{{ ansible_user }}" groups: docker append: yes + - name: "Add acl package" + apt: + name: acl + state: present - - name: Deploy services - include_tasks: tasks/deploy.yml - vars: - service: "{{ item }}" - loop: "{{ services }}" +- name: Deploy services + import_playbook: deploy.yaml diff --git a/services/legacy/config/Dockerfile.j2 b/services/legacy/config/Dockerfile.j2 index eb81c68..5408d04 100644 --- a/services/legacy/config/Dockerfile.j2 +++ b/services/legacy/config/Dockerfile.j2 @@ -1,5 +1,9 @@ FROM php:{{ version }}-fpm-alpine -COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ +LABEL maintainer="Kacper Donat " +COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ RUN install-php-extensions {{ php_extensions|join(" ") }} + +RUN apk update && apk add acl +COPY --from=composer:latest /usr/bin/composer /usr/bin/composer diff --git a/services/legacy/sites/pastebin.conf b/services/legacy/sites/pastebin.conf new file mode 100644 index 0000000..3fdbb2d --- /dev/null +++ b/services/legacy/sites/pastebin.conf @@ -0,0 +1,19 @@ +server { + listen 80; + root /var/www/pastebin/current/web/; + server_name bin.{{ main_domain }}; + + index index.php; + + location / { + try_files $uri $uri/ /index.php?$args; + } + + # pass the PHP scripts to FastCGI server listening on php-71:9000 x + location ~ \.php$ { + fastcgi_pass php-71:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } +} diff --git a/services/legacy/tasks/_docker.yml b/services/legacy/tasks/_docker.yml index 3584d0a..9e27945 100644 --- a/services/legacy/tasks/_docker.yml +++ b/services/legacy/tasks/_docker.yml @@ -19,3 +19,10 @@ source: build force_source: "{{ dockerfile.changed or update_images|default(false) }}" force_tag: "{{ dockerfile.changed or update_images|default(false) }}" + register: image + notify: Restart services + +- name: "Restart services if needed" + when: image.changed + set_fact: + services_to_restart: "{{ services_to_restart + ['legacy_php-' + version|replace('.', '')] }}" diff --git a/services/legacy/tasks/config.yml b/services/legacy/tasks/config.yml index f543cce..97bec09 100644 --- a/services/legacy/tasks/config.yml +++ b/services/legacy/tasks/config.yml @@ -14,6 +14,16 @@ with_fileglob: "{{ service_path }}/sites/*" loop_control: loop_var: file + notify: + - Restart services + tags: + - config + register: legacy_sites + +- name: Force nginx restart after play + set_fact: + services_to_restart: "{{ services_to_restart + ['legacy_nginx'] }}" + when: legacy_sites.changed tags: - config diff --git a/services/legacy/tasks/setup.yml b/services/legacy/tasks/setup.yml index 8626297..fdd0776 100644 --- a/services/legacy/tasks/setup.yml +++ b/services/legacy/tasks/setup.yml @@ -14,7 +14,7 @@ - name: Add users to www-data group user: user: "{{ user }}" - groups: docker + groups: www-data append: yes loop: "{{ www_data_users }}" loop_control: diff --git a/services/traefik/config/dynamic/pastebin.yaml b/services/traefik/config/dynamic/pastebin.yaml new file mode 100644 index 0000000..170f6ef --- /dev/null +++ b/services/traefik/config/dynamic/pastebin.yaml @@ -0,0 +1,6 @@ +--- +http: + routers: + pastebin: + rule: Host(`bin.{{ main_domain }}`) + service: legacy@docker diff --git a/tasks/deploy.yml b/tasks/deploy.yml index cd9bf76..d90891a 100644 --- a/tasks/deploy.yml +++ b/tasks/deploy.yml @@ -45,10 +45,16 @@ community.docker.docker_stack: name: "{{ service }}" prune: yes + resolve_image: "always" compose: - "{{ remote_service_path }}/stack.yml" - version: "{{ compose_version }}" networks: "{{ dict(swarm_global_networks | map(attribute='name') | zip_longest([], fillvalue={ 'external': True })) }}" + register: stack tags: - deploy + +- name: "Mark updated services as restarted" + set_fact: + services_to_restart: "{{ services_to_restart | difference((stack.stack_spec_diff | default('{}') | from_json).keys()) }}" diff --git a/vars/services.yml b/vars/services.yml index aaa9960..2a94ad5 100644 --- a/vars/services.yml +++ b/vars/services.yml @@ -15,6 +15,8 @@ main_domain: kadet.local database_mysql_host: "{{ swarm_host_address }}" +services_to_restart: [] + service_config: traefik: dashboard_users: @@ -35,3 +37,6 @@ service_config: legacy: www_data_users: ["{{ ansible_user }}"] + +www_data_users: + - vagrant