diff --git a/roles/artemis/defaults/main.yml b/roles/artemis/defaults/main.yml index 9f833ff..106cc70 100644 --- a/roles/artemis/defaults/main.yml +++ b/roles/artemis/defaults/main.yml @@ -249,9 +249,17 @@ hazelcast_address: "{% if is_multinode_install is defined and is_multinode_insta artemis_eureka_urls: "{% if registry.url is defined and registry.url is not none %}http://admin:${jhipster.registry.password}@{{ registry.url }}:8761/eureka/{% endif %}" artemis_eureka_instance_id: "{{ node_id }}" +artemis_redis_client_name: "{% if artemis_redis_client_name is defined %}{{ artemis_redis_client_name }}{% else %}{{ artemis_eureka_instance_id }}{% endif %}" + node_short_name: unnamed-artemis-node node_display_name: Unnamed Artemis Node +#redis: +# host: +# port: +# username: +# password: + ############################################################################## # Iris Configuration ############################################################################## diff --git a/roles/artemis/tasks/artemis_configuration.yml b/roles/artemis/tasks/artemis_configuration.yml index eff6637..37a7517 100644 --- a/roles/artemis/tasks/artemis_configuration.yml +++ b/roles/artemis/tasks/artemis_configuration.yml @@ -123,7 +123,7 @@ state: stopped failed_when: false # e.g. if file exists but service does not changed_when: true # e.g. if service was already stopped - when: (config.changed or permissions.changed or service.changed or ssh_key.changed or artemis_force_restart) and not artemis_force_no_restart # noqa 503 + when: (config.changed or permissions.changed or service.changed or artemis_force_restart) and not artemis_force_no_restart # noqa 503 notify: restart artemis throttle: 1 diff --git a/roles/artemis/tasks/deploy_artemis.yml b/roles/artemis/tasks/deploy_artemis.yml index 332adc4..8461581 100644 --- a/roles/artemis/tasks/deploy_artemis.yml +++ b/roles/artemis/tasks/deploy_artemis.yml @@ -15,4 +15,5 @@ - version_control.localvc is defined and version_control.localvc is not none - version_control.localvc.ssh_key_path is defined and version_control.localvc.ssh_key_path|length > 0 - not (only_update_artemis_config | bool) + - contionous_integration.localci is defined and contionous_integration.localci is not none and contionous_integration.localci.is_core_node is defined and contionous_integration.localci.is_core_node diff --git a/roles/artemis/tasks/docker_deploy_artemis.yml b/roles/artemis/tasks/docker_deploy_artemis.yml index a89488a..d2cb7e2 100644 --- a/roles/artemis/tasks/docker_deploy_artemis.yml +++ b/roles/artemis/tasks/docker_deploy_artemis.yml @@ -8,23 +8,14 @@ - name: Create artemis data directory become: true file: - path: "{{ artemis_working_directory }}/data" - state: directory - mode: '0770' - -- name: Create artemis database directory - become: true - file: - path: "{{ artemis_working_directory }}/data/database" - state: directory - mode: '0770' - -- name: Create artemis data/artemis directory - become: true - file: - path: "{{ artemis_working_directory }}/data/artemis" + path: "{{ artemis_working_directory }}/{{ item }}" state: directory mode: '0770' + loop: + - "data" + - "data/database" + - "data/artemis" + - "data/redis" - name: Set permissions for artemis directory become: true diff --git a/roles/artemis/templates/application-prod.yml.j2 b/roles/artemis/templates/application-prod.yml.j2 index 259966f..3f43f6d 100644 --- a/roles/artemis/templates/application-prod.yml.j2 +++ b/roles/artemis/templates/application-prod.yml.j2 @@ -32,6 +32,17 @@ spring: addresses: "{{ broker.url }}:61613" {% endif %} {% endif %} + +{% if redis is defined and redis is not none %} + data: + redis: + host: {{ redis.host }} + port: {{ redis.port}} + username: {{ redis.username}} + password: {{ redis.password }} + client-name: {{ artemis_redis_client_name }} +{% endif %} + {% if is_multinode_install and hazelcast_address is defined %} hazelcast: interface: "{{ hazelcast_address }}" diff --git a/roles/artemis/templates/artemis.env.j2 b/roles/artemis/templates/artemis.env.j2 index 5582b81..614a4f3 100644 --- a/roles/artemis/templates/artemis.env.j2 +++ b/roles/artemis/templates/artemis.env.j2 @@ -22,6 +22,14 @@ SPRING_WEBSOCKET_BROKER_USERNAME='{{ broker.username }}' SPRING_WEBSOCKET_BROKER_PASSWORD='{{ broker.password }}' SPRING_WEBSOCKET_BROKER_ADDRESSES='{{ broker.url }}:61613' {% endif %} + +{% if redis is defined and redis is not none %} +SPRING_DATA_REDIS_HOST='{{ redis.host }}' +SPRING_DATA_REDIS_PORT='{{ redis.port}}' +SPRING_DATA_REDIS_USERNAME='{{ redis.username}}' +SPRING_DATA_REDIS_PASSWORD='{{ redis.password }}' +SPRING_DATA_REDIS_CLIENTNAME='{{ artemis_redis_client_name }}' +{% endif %} {% if is_multinode_install and hazelcast_address is defined %} SPRING_HAZELCAST_INTERFACE='{{ hazelcast_address }}' {% endif %} diff --git a/roles/artemis/templates/docker.env.j2 b/roles/artemis/templates/docker.env.j2 index 793e5b1..1df5381 100644 --- a/roles/artemis/templates/docker.env.j2 +++ b/roles/artemis/templates/docker.env.j2 @@ -15,6 +15,11 @@ ARTEMIS_DATA_EXPORT_MOUNT='{{ artemis_working_directory }}/data-exports' DATABASE_ENV_FILE='{{ artemis_working_directory }}/database.env' DATABASE_VOLUME_MOUNT='{{ artemis_working_directory }}/data/database' +{% if redis is defined and redis is not none %} +REDIS_DATA_VOLUME='{{ artemis_working_directory }}/data/redis' +REDIS_PASSWORD='{{ redis.password }}' +{% endif %} + # Broker & Registry vars {% if is_multinode_install %} REGISTRY_PASSWORD='{{ artemis_jhipster_registry_password }}' diff --git a/roles/artemis/templates/node.env.j2 b/roles/artemis/templates/node.env.j2 index 13d2469..57ccfd8 100644 --- a/roles/artemis/templates/node.env.j2 +++ b/roles/artemis/templates/node.env.j2 @@ -2,5 +2,8 @@ SPRING_PROFILES_ACTIVE='{{ artemis_spring_profiles }}{% if docker_node_id == 1 % EUREKA_INSTANCE_INSTANCEID='Artemis:{{ docker_node_id }}' EUREKA_INSTANCE_HOSTNAME='artemis-app-node-{{ docker_node_id }}' SPRING_HAZELCAST_INTERFACE='artemis-app-node-{{ docker_node_id }}' +{% if redis is defined and redis is not none %} +SPRING_DATA_REDIS_CLIENTNAME='{{ artemis_redis_client_name }}' +{% endif %} ARTEMIS_CONTINUOUSINTEGRATION_BUILDAGENT_SHORTNAME='artemis-node-{{ docker_node_id }}' ARTEMIS_CONTINUOUSINTEGRATION_BUILDAGENT_DISPLAYNAME='Artemis Node {{ docker_node_id }}' diff --git a/roles/firewall/defaults/main.yml b/roles/firewall/defaults/main.yml index 3575d13..7b4d859 100644 --- a/roles/firewall/defaults/main.yml +++ b/roles/firewall/defaults/main.yml @@ -1,6 +1,6 @@ wireguard_port: 51820 -firewall_hostgroup: # Can be 'registry', 'nodes', 'proxy' or left blank for default rules +firewall_hostgroup: default # Can be 'registry', 'nodes', 'proxy' or left blank for default rules # Management Networks - used to allow SSH / HTTP access to Hosts and services management_network_ipv4: "172.24.152.0/24" diff --git a/roles/redis/README.md b/roles/redis/README.md new file mode 100644 index 0000000..7b545d6 --- /dev/null +++ b/roles/redis/README.md @@ -0,0 +1,19 @@ +Redis +========= + +This role installes Redis in a docker container and configures it for the use with artemis. + +Please install docker before continuing with this role. + +Role Variables +-------------- + +Default variables can be found in the `defaults/main.yml` file. + +You have to configure the follwoing varaibles in your ansible `group_vars`: + +``` +redis: + user: artemis # Also used by the artemis role + password: #FIXME # Also used by the artemis role +``` diff --git a/roles/redis/defaults/main.yml b/roles/redis/defaults/main.yml new file mode 100644 index 0000000..1e2b16d --- /dev/null +++ b/roles/redis/defaults/main.yml @@ -0,0 +1,5 @@ +redis: + user: artemis + password: #FIXME + working_directory: /opt/redis + version: 6.2.6-v18 diff --git a/roles/redis/handlers/main.yml b/roles/redis/handlers/main.yml new file mode 100644 index 0000000..0c8a6c1 --- /dev/null +++ b/roles/redis/handlers/main.yml @@ -0,0 +1,5 @@ +- name: restart redis + become: true + community.docker.docker_compose_v2: + project_src: "{{ redis.working_directory }}" + state: present diff --git a/roles/redis/tasks/main.yml b/roles/redis/tasks/main.yml new file mode 100644 index 0000000..79dbb04 --- /dev/null +++ b/roles/redis/tasks/main.yml @@ -0,0 +1,27 @@ + +- name: Check if redis.password is set + fail: + msg: "No redis password is configured!" + when: + - redis.password is undefined or redis.password is none + +- name: Create working directory + become: true + file: + path: "{{ redis.working_directory }}" + state: directory + mode: '0775' + notify: restart redis + +- name: Copy configuration file + become: true + template: + src: "{{ item.src }}" + dest: "{{ redis.working_directory }}/{{ item.dest }}" + mode: '0600' + notify: restart redis + with_items: + - src: redis.conf.j2 + dest: "redis.conf" + - src: docker-compose.yml.j2 + dest: "docker-compose.yml" diff --git a/roles/redis/templates/docker-compose.yml.j2 b/roles/redis/templates/docker-compose.yml.j2 new file mode 100644 index 0000000..1fcacd5 --- /dev/null +++ b/roles/redis/templates/docker-compose.yml.j2 @@ -0,0 +1,24 @@ +{{ ansible_managed | comment }} + +services: + redis: + image: redis/redis-stack-server:latest + restart: always + ports: + - "6379:6379" + volumes: + - ./redis.conf:/usr/local/etc/redis/redis.conf + - ./redis-data:/data + command: [ + "redis-server", + "/usr/local/etc/redis/redis.conf", + "--requirepass {{ redis.password }}", + "--user {{ redis.user }} on >{{ redis.password }} +@all &* ~*", + "--user default off nopass nocommands", + "--protected-mode no" + ] + healthcheck: + test: ["CMD", "redis-cli", "-a", "{{ redis.password }}", "ping"] + interval: 10s + timeout: 5s + retries: 3 diff --git a/roles/redis/templates/redis.conf.j2 b/roles/redis/templates/redis.conf.j2 new file mode 100644 index 0000000..6addb76 --- /dev/null +++ b/roles/redis/templates/redis.conf.j2 @@ -0,0 +1,3 @@ +{{ ansible_managed | comment }} + +notify-keyspace-events lshKE