diff --git a/defaults/main.yml b/defaults/main.yml index d4e1fd4..ab1b52b 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,15 +1,45 @@ --- -ariadne_portal_compose_dir: '/srv/ariadne_portal_dev' -ariadne_portal_docker_stack_name: 'ariadne-portal-dev' -ariadne_portal_docker_service_client_name: 'client' -ariadne_portal_docker_client_image: 'ariadneplusportal/www-portal-dev:latest' -ariadne_portal_behind_haproxy: True -ariadne_portal_haproxy_public_net: 'haproxy-public' +ariadne_portal_dev_compose_dir: '/srv/ariadne_portal_dev' +ariadne_portal_dev_docker_stack_name: 'ariadne-portal-dev' +ariadne_portal_dev_docker_service_client_name: 'client' +ariadne_portal_dev_docker_client_image: 'ariadneplusportal/www-portal-dev:latest' +ariadne_portal_dev_behind_haproxy: True +ariadne_portal_dev_haproxy_public_net: 'haproxy-public' -ariadne_portal_smtp: False -ariadne_portal_smtp_host: 'localhost' -ariadne_portal_smtp_port: 587 -ariadne_portal_smtp_channel: 'starttls' -ariadne_portal_smtp_user: '' +ariadne_portal_dev_smtp: False +ariadne_portal_dev_smtp_host: 'localhost' +ariadne_portal_dev_smtp_port: 587 +ariadne_portal_dev_smtp_channel: 'starttls' +ariadne_portal_dev_smtp_user: '' # Put it into a vault file -ariadne_portal_smtp_password: '' +ariadne_portal_dev_smtp_password: '' + +ariadne_portal_staging_compose_dir: '/srv/ariadne_portal_staging' +ariadne_portal_staging_docker_stack_name: 'ariadne-portal-staging' +ariadne_portal_staging_docker_service_client_name: 'client' +ariadne_portal_staging_docker_client_image: 'ariadneplusportal/www-portal-staging:latest' +ariadne_portal_staging_behind_haproxy: True +ariadne_portal_staging_haproxy_public_net: 'haproxy-public' + +ariadne_portal_staging_smtp: False +ariadne_portal_staging_smtp_host: 'localhost' +ariadne_portal_staging_smtp_port: 587 +ariadne_portal_staging_smtp_channel: 'starttls' +ariadne_portal_staging_smtp_user: '' +# Put it into a vault file +ariadne_portal_staging_smtp_password: '' + +ariadne_portal_production_compose_dir: '/srv/ariadne_portal_production' +ariadne_portal_production_docker_stack_name: 'ariadne-portal-production' +ariadne_portal_production_docker_service_client_name: 'client' +ariadne_portal_production_docker_client_image: 'ariadneplusportal/www-portal-public:latest' +ariadne_portal_production_behind_haproxy: True +ariadne_portal_production_haproxy_public_net: 'haproxy-public' + +ariadne_portal_production_smtp: False +ariadne_portal_production_smtp_host: 'localhost' +ariadne_portal_production_smtp_port: 587 +ariadne_portal_production_smtp_channel: 'starttls' +ariadne_portal_production_smtp_user: '' +# Put it into a vault file +ariadne_portal_production_smtp_password: '' diff --git a/tasks/ariadne_dev_portal.yml b/tasks/ariadne_dev_portal.yml new file mode 100644 index 0000000..a97e4a0 --- /dev/null +++ b/tasks/ariadne_dev_portal.yml @@ -0,0 +1,19 @@ +--- +- name: Manage the installation of the Ariadne+ Dev Portal + block: + - name: Create the docker compose directory of the Ariadne+ Portal, {{ ariadne_portal_dev_docker_stack_name }} + file: dest={{ ariadne_portal_dev_compose_dir }} state=directory owner=root group=root mode='0750' + + - name: Install the docker compose file of the Ariadne+ Portal, {{ ariadne_portal_dev_docker_stack_name }} + template: src={{ ariadne_portal_dev_docker_stack_name }}-docker-compose.yml.j2 dest={{ ariadne_portal_dev_compose_dir }}/docker-{{ ariadne_portal_dev_docker_stack_name }}-stack.yml owner=root group=root mode='0400' + + - name: Start the Ariadne+ portal stack, {{ ariadne_portal_dev_docker_stack_name }} + docker_stack: + name: '{{ ariadne_portal_dev_docker_stack_name }}' + state: present + compose: + - '{{ ariadne_portal_dev_compose_dir }}/docker-{{ ariadne_portal_dev_docker_stack_name }}-stack.yml' + + run_once: True + when: docker_swarm_manager_main_node is defined and docker_swarm_manager_main_node | bool + tags: [ 'ariadne_portal', 'ariadne_portal_dev_swarm', 'ariadne_portal_dev' ] diff --git a/tasks/ariadne_production_portal.yml b/tasks/ariadne_production_portal.yml new file mode 100644 index 0000000..f6b2e0a --- /dev/null +++ b/tasks/ariadne_production_portal.yml @@ -0,0 +1,19 @@ +--- +- name: Manage the installation of the Ariadne+ Production Portal + block: + - name: Create the docker compose directory of the Ariadne+ Portal, {{ ariadne_portal_production_docker_stack_name }} + file: dest={{ ariadne_portal_production_compose_dir }} state=directory owner=root group=root mode='0750' + + - name: Install the docker compose file of the Ariadne+ Portal, {{ ariadne_portal_production_docker_stack_name }} + template: src={{ ariadne_portal_production_docker_stack_name }}-docker-compose.yml.j2 dest={{ ariadne_portal_production_compose_dir }}/docker-{{ ariadne_portal_production_docker_stack_name }}-stack.yml owner=root group=root mode='0400' + + - name: Start the Ariadne+ portal stack, {{ ariadne_portal_production_docker_stack_name }} + docker_stack: + name: '{{ ariadne_portal_production_docker_stack_name }}' + state: present + compose: + - '{{ ariadne_portal_production_compose_dir }}/docker-{{ ariadne_portal_production_docker_stack_name }}-stack.yml' + + run_once: True + when: docker_swarm_manager_main_node is defined and docker_swarm_manager_main_node | bool + tags: [ 'ariadne_portal', 'ariadne_portal_production_swarm', 'ariadne_portal_production' ] diff --git a/tasks/ariadne_staging_portal.yml b/tasks/ariadne_staging_portal.yml new file mode 100644 index 0000000..db3e0ed --- /dev/null +++ b/tasks/ariadne_staging_portal.yml @@ -0,0 +1,19 @@ +--- +- name: Manage the installation of the Ariadne+ Staging Portal + block: + - name: Create the docker compose directory of the Ariadne+ Portal, {{ ariadne_portal_staging_docker_stack_name }} + file: dest={{ ariadne_portal_staging_compose_dir }} state=directory owner=root group=root mode='0750' + + - name: Install the docker compose file of the Ariadne+ Portal, {{ ariadne_portal_staging_docker_stack_name }} + template: src={{ ariadne_portal_staging_docker_stack_name }}-docker-compose.yml.j2 dest={{ ariadne_portal_staging_compose_dir }}/docker-{{ ariadne_portal_staging_docker_stack_name }}-stack.yml owner=root group=root mode='0400' + + - name: Start the Ariadne+ portal stack, {{ ariadne_portal_staging_docker_stack_name }} + docker_stack: + name: '{{ ariadne_portal_staging_docker_stack_name }}' + state: present + compose: + - '{{ ariadne_portal_staging_compose_dir }}/docker-{{ ariadne_portal_staging_docker_stack_name }}-stack.yml' + + run_once: True + when: docker_swarm_manager_main_node is defined and docker_swarm_manager_main_node | bool + tags: [ 'ariadne_portal', 'ariadne_portal_staging_swarm', 'ariadne_portal_staging' ] diff --git a/tasks/main.yml b/tasks/main.yml index f99eb48..e40c8b9 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,20 +1,4 @@ --- -- name: Manage the installation of the Ariadne+ Portal - block: - - name: Create the docker compose directory of the Ariadne+ Portal, {{ ariadne_portal_docker_stack_name }} - file: dest={{ ariadne_portal_compose_dir }} state=directory owner=root group=root mode='0750' - - - name: Install the docker compose file of the Ariadne+ Portal, {{ ariadne_portal_docker_stack_name }} - template: src=ariadne-portal-docker-compose.yml.j2 dest={{ ariadne_portal_compose_dir }}/docker-{{ ariadne_portal_docker_stack_name }}-stack.yml owner=root group=root mode='0400' - - - name: Start the Ariadne+ portal stack, {{ ariadne_portal_docker_stack_name }} - docker_stack: - name: '{{ ariadne_portal_docker_stack_name }}' - state: present - compose: - - '{{ ariadne_portal_compose_dir }}/docker-{{ ariadne_portal_docker_stack_name }}-stack.yml' - - run_once: True - when: docker_swarm_manager_main_node is defined and docker_swarm_manager_main_node | bool - tags: [ 'ariadne_portal', 'ariadne_portal_swarm', 'ariadne_portal_staging' ] - +- import_tasks: ariadne_dev_portal.yml +- import_tasks: ariadne_staging_portal.yml +- import_tasks: ariadne_production_portal.yml diff --git a/templates/ariadne-portal-dev-docker-compose.yml.j2 b/templates/ariadne-portal-dev-docker-compose.yml.j2 new file mode 100644 index 0000000..e1c723d --- /dev/null +++ b/templates/ariadne-portal-dev-docker-compose.yml.j2 @@ -0,0 +1,37 @@ +version: '3.6' + +networks: +{% if ariadne_portal_dev_behind_haproxy %} + haproxy-public: + external: true +{% endif %} + +services: + {{ ariadne_portal_dev_docker_service_client_name }}: + image: {{ ariadne_portal_dev_docker_client_image }} +{% if ariadne_portal_dev_behind_haproxy %} + networks: + - haproxy-public +{% endif %} +{% if ariadne_portal_dev_smtp %} + environment: + - SMTP_HOST={{ ariadne_portal_dev_smtp_host }} + - SMTP_PORT={{ ariadne_portal_dev_smtp_port }} + - SMTP_CHANNEL={{ ariadne_portal_dev_smtp_channel }} + - SMTP_PROTOCOL=smtp + - SMTP_USER={{ ariadne_portal_dev_smtp_user }} + - SMTP_PASS={{ ariadne_portal_dev_smtp_password }} +{% endif %} + deploy: + mode: replicated + replicas: 1 + endpoint_mode: dnsrr + placement: + constraints: [node.role == worker] + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + logging: + driver: 'journald' diff --git a/templates/ariadne-portal-docker-compose.yml.j2 b/templates/ariadne-portal-docker-compose.yml.j2 deleted file mode 100644 index d9f9ae9..0000000 --- a/templates/ariadne-portal-docker-compose.yml.j2 +++ /dev/null @@ -1,37 +0,0 @@ -version: '3.6' - -networks: -{% if ariadne_portal_behind_haproxy %} - haproxy-public: - external: true -{% endif %} - -services: - {{ ariadne_portal_docker_service_client_name }}: - image: {{ ariadne_portal_docker_client_image }} -{% if ariadne_portal_behind_haproxy %} - networks: - - haproxy-public -{% endif %} -{% if ariadne_portal_smtp %} - environment: - - SMTP_HOST={{ ariadne_portal_smtp_host }} - - SMTP_PORT={{ ariadne_portal_smtp_port }} - - SMTP_CHANNEL={{ ariadne_portal_smtp_channel }} - - SMTP_PROTOCOL=smtp - - SMTP_USER={{ ariadne_portal_smtp_user }} - - SMTP_PASS={{ ariadne_portal_smtp_password }} -{% endif %} - deploy: - mode: replicated - replicas: 1 - endpoint_mode: dnsrr - placement: - constraints: [node.role == worker] - restart_policy: - condition: on-failure - delay: 5s - max_attempts: 3 - window: 120s - logging: - driver: 'journald' diff --git a/templates/ariadne-portal-production-docker-compose.yml.j2 b/templates/ariadne-portal-production-docker-compose.yml.j2 new file mode 100644 index 0000000..523b3c7 --- /dev/null +++ b/templates/ariadne-portal-production-docker-compose.yml.j2 @@ -0,0 +1,37 @@ +version: '3.6' + +networks: +{% if ariadne_portal_production_behind_haproxy %} + haproxy-public: + external: true +{% endif %} + +services: + {{ ariadne_portal_production_docker_service_client_name }}: + image: {{ ariadne_portal_production_docker_client_image }} +{% if ariadne_portal_production_behind_haproxy %} + networks: + - haproxy-public +{% endif %} +{% if ariadne_portal_production_smtp %} + environment: + - SMTP_HOST={{ ariadne_portal_production_smtp_host }} + - SMTP_PORT={{ ariadne_portal_production_smtp_port }} + - SMTP_CHANNEL={{ ariadne_portal_production_smtp_channel }} + - SMTP_PROTOCOL=smtp + - SMTP_USER={{ ariadne_portal_production_smtp_user }} + - SMTP_PASS={{ ariadne_portal_production_smtp_password }} +{% endif %} + deploy: + mode: replicated + replicas: 1 + endpoint_mode: dnsrr + placement: + constraints: [node.role == worker] + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + logging: + driver: 'journald' diff --git a/templates/ariadne-portal-staging-docker-compose.yml.j2 b/templates/ariadne-portal-staging-docker-compose.yml.j2 new file mode 100644 index 0000000..52a4a57 --- /dev/null +++ b/templates/ariadne-portal-staging-docker-compose.yml.j2 @@ -0,0 +1,37 @@ +version: '3.6' + +networks: +{% if ariadne_portal_staging_behind_haproxy %} + haproxy-public: + external: true +{% endif %} + +services: + {{ ariadne_portal_staging_docker_service_client_name }}: + image: {{ ariadne_portal_staging_docker_client_image }} +{% if ariadne_portal_staging_behind_haproxy %} + networks: + - haproxy-public +{% endif %} +{% if ariadne_portal_staging_smtp %} + environment: + - SMTP_HOST={{ ariadne_portal_staging_smtp_host }} + - SMTP_PORT={{ ariadne_portal_staging_smtp_port }} + - SMTP_CHANNEL={{ ariadne_portal_staging_smtp_channel }} + - SMTP_PROTOCOL=smtp + - SMTP_USER={{ ariadne_portal_staging_smtp_user }} + - SMTP_PASS={{ ariadne_portal_staging_smtp_password }} +{% endif %} + deploy: + mode: replicated + replicas: 1 + endpoint_mode: dnsrr + placement: + constraints: [node.role == worker] + restart_policy: + condition: on-failure + delay: 5s + max_attempts: 3 + window: 120s + logging: + driver: 'journald'