Skip to content

Commit dd44fa7

Browse files
authored
Merge pull request #479 from mageops/dev-opensearch
Add support for opensearch 2
2 parents ca9a780 + fe8c520 commit dd44fa7

File tree

26 files changed

+698
-22
lines changed

26 files changed

+698
-22
lines changed

group_vars/all.yml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,8 @@ aws_logs_slack_notifications: "{{ mageops_notifications_slack_enable }}"
561561

562562
aws_logs_loggers_persistent_default:
563563
syslog: { enabled: yes }
564-
elasticsearch-main: { enabled: "{{ mageops_elasticsearch_create }}" }
564+
elasticsearch-main: { enabled: "{{ mageops_elasticsearch_opensearch_flavor == 'elasticsearch' }}" }
565+
opensearch-main: { enabled: "{{ mageops_elasticsearch_opensearch_flavor == 'opensearch' }}" }
565566
redis-server: { enabled: "{{ redis_valkey_flavor == 'redis' }}" }
566567
redis-sessions-server: { enabled: "{{ mageops_redis_sessions_create }}" }
567568
valkey-server: { enabled: "{{ redis_valkey_flavor == 'valkey' }}" }
@@ -709,9 +710,12 @@ mageops_redis_sessions_create: yes
709710
mageops_redis_sessions_host:
710711
mageops_redis_sessions_port: 6380
711712

712-
# Enable to provision Elasticsearch (or provide host)
713-
mageops_elasticsearch_create: yes
713+
mageops_elasticsearch_opensearch_flavor: elasticsearch
714714
# mageops_elasticsearch_host:
715+
mageops_elasticsearch_http_auth: false
716+
717+
# mageops_opensearch_host:
718+
mageops_opensearch_http_auth: "{{ mageops_elasticsearch_http_auth }}"
715719

716720
# Do not wait for Elasticsearch to be ready, required when aws opensearch serverless is used
717721
# because it required complex authentication that isn't worth implementing
@@ -720,6 +724,9 @@ mageops_skip_elasticsearch_check: no
720724
# Use https for connecting to Elasticsearch
721725
mageops_elasticsearch_https: no
722726

727+
# Use https for connecting to Elasticsearch
728+
mageops_opensearch_https: "{{ mageops_elasticsearch_https }}"
729+
723730
mageops_varnish_purge_logging: yes
724731
mageops_varnish_host: 127.0.0.1
725732
mageops_varnish_port: "{% if mageops_https_termination_enable %}8000{% else %}80{% endif %}"
@@ -952,6 +959,8 @@ magento_gid: "{{ mageops_app_gid }}"
952959
magento_umask: "{{ mageops_app_umask }}"
953960

954961
magento_elasticsearch_index_alias: "{{ mageops_app_name }}"
962+
magento_opensearch_index_alias: "{{ mageops_app_name }}"
963+
955964

956965
mageops_install_magerun: yes
957966
magento_consumer_workers_enable: yes
@@ -1568,7 +1577,17 @@ elasticsearch_plugins:
15681577
- analysis-icu
15691578
- analysis-phonetic
15701579

1580+
# ---------------------------------
1581+
# -------- Opensearch --------
1582+
# ---------------------------------
1583+
1584+
opensearch_cluster_name: "{{ mageops_app_id }}"
1585+
opensearch_node_name: master
15711586

1587+
opensearch_http_port: "{{ elasticsearch_http_port }}"
1588+
opensearch_transport_tcp_port: "{{ elasticsearch_transport_tcp_port }}"
1589+
opensearch_heap_size: "{{ elasticsearch_heap_size }}"
1590+
opensearch_plugins: "{{ elasticsearch_plugins }}"
15721591

15731592

15741593
# -------------------------
@@ -1785,8 +1804,8 @@ firewall_internal_services:
17851804
- mysql
17861805

17871806
firewall_internal_ports:
1788-
- "{{ elasticsearch_http_port }}/tcp"
1789-
- "{{ elasticsearch_transport_tcp_port }}/tcp"
1807+
- "{{ (mageops_elasticsearch_opensearch_flavor == 'elasticsearch') | ternary(elasticsearch_http_port ~ '/tcp', opensearch_http_port ~ '/tcp') }}"
1808+
- "{{ search_transport_tcp_port }}/tcp"
17901809
- "{{ mageops_redis_port }}/tcp"
17911810
firewall_public_services:
17921811
- http

roles/cs.aws-logs/defaults/main.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,13 @@ aws_logs_loggers_default:
8787
retention: 7
8888
multiline: yes
8989
enabled: no
90+
opensearch-main:
91+
group_name: "/opensearch/node.log"
92+
filename: "/var/log/opensearch/{{ opensearch_cluster_name }}.log"
93+
date_format: "[%Y-%m-%dT%H:%M:%S"
94+
retention: 7
95+
multiline: yes
96+
enabled: no
9097
redis-server:
9198
group_name: "/redis/server.log"
9299
filename: "/var/log/redis/redis-server.log"

roles/cs.aws-node-facts/tasks/main.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@
5959
mageops_elasticsearch_host: "{{ aws_nodes_info.elasticsearch.private_ip_address }}"
6060
when: not mageops_elasticsearch_host | default(false, true) and aws_nodes_info.elasticsearch
6161

62+
- name: Set opensearch host if not predefined
63+
set_fact:
64+
mageops_opensearch_host: "{{ aws_nodes_info.elasticsearch.private_ip_address }}"
65+
when: not mageops_opensearch_host | default(false, true) and aws_nodes_info.elasticsearch
66+
67+
6268
# TODO: Find RabbitMQ through tags, right now we don't have option to separate it anyway
6369
- name: Set RabbitMQ host if not predefined
6470
set_fact:

roles/cs.aws-node-persistent/tasks/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
aws_tags_default | combine(
2020
aws_tags_role_persistent,
2121
aws_tags_node_persistent,
22-
mageops_elasticsearch_create | ternary(aws_tags_role_elasticsearch, {}),
22+
(mageops_elasticsearch_opensearch_flavor in ['elasticsearch','opensearch']) | ternary(aws_tags_role_elasticsearch, {}),
2323
mageops_rabbitmq_create | ternary(aws_tags_role_rabbitmq_message_queue, {}),
2424
(redis_valkey_flavor in ['redis', 'valkey']) | ternary(aws_tags_role_redis_cache, {}),
2525
aws_persistent_node_name_tags

roles/cs.aws-security-group/defaults/main.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
aws_security_group_rds_create: no
32
aws_security_group_redis_create: no
43
aws_security_group_elasticsearch_create: no

roles/cs.aws-security-group/tasks/main.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -154,25 +154,25 @@
154154
register: aws_security_group_redis
155155
when: aws_security_group_redis_create
156156

157-
- name: Create security group for Elastic
157+
- name: Create security group for Search
158158
ec2_group:
159159
name: "{{ aws_security_group_elasticsearch_name }}"
160-
description: "{{ mageops_app_name }} Elasticsearch security group"
160+
description: "{{ mageops_app_name }} search security group"
161161
region: "{{ aws_region }}"
162162
rules:
163163
- proto: tcp
164-
ports: "{{ elasticsearch_http_port }}"
164+
ports: "{{ (mageops_elasticsearch_opensearch_flavor == 'elasticsearch') | ternary(elasticsearch_http_port , opensearch_http_port) }}"
165165
group_name: "{{ aws_security_group_app_name }}"
166166
- proto: tcp
167-
ports: "{{ elasticsearch_http_port }}"
167+
ports: "{{ (mageops_elasticsearch_opensearch_flavor == 'elasticsearch') | ternary(elasticsearch_http_port, opensearch_http_port) }}"
168168
cidr_ip: "{{ mageops_trusted_cidr_blocks }}"
169169
vpc_id: "{{ aws_vpc_id }}"
170170
tags: "{{ aws_tags_default | combine(ec2_sg_tags) }}"
171171
vars:
172172
ec2_sg_tags:
173173
Name: "{{ aws_security_group_elasticsearch_name }}"
174-
register: aws_security_group_elastic
175-
when: aws_security_group_elasticsearch_create
174+
register: aws_security_group_search
175+
when: aws_security_group_elastic_create
176176

177177
- name: Create security group for EFS
178178
ec2_group:

roles/cs.elasticsearch/tasks/main.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
uri:
5353
url: "http://{{ elasticsearch_network_host }}:{{ elasticsearch_http_port }}"
5454
return_content: yes
55+
url_password: "{{ mageops_elasticsearch_username | default(omit) }}"
56+
url_username: "{{ mageops_elasticsearch_password | default(omit) }}"
5557
register: elasticsearch_get_running_version
5658
failed_when: false
5759
changed_when: false
@@ -147,6 +149,13 @@
147149
loop: "{{ elasticsearch_plugins }}"
148150
notify: Restart elasticsearch
149151

152+
- name: Ensure opensearch is stopped and disabled
153+
service:
154+
name: opensearch
155+
state: stopped
156+
enabled: no
157+
ignore_errors: true
158+
150159
- name: Ensure elasticsearch is started and enabled
151160
service:
152161
name: elasticsearch
@@ -165,7 +174,7 @@
165174

166175
- name: Fix deprecation indexes settings
167176
shell: >-
168-
curl -XPUT -k "http://localhost:9200/_component_template/.deprecation-indexing-settings" -H 'Content-Type: application/json' -d '{"template":{"settings":{"index":{"lifecycle":{"name":".deprecation-indexing-ilm-policy"},"codec":"best_compression","hidden":"true","number_of_replicas":"0","auto_expand_replicas":"0-1","query":{"default_field":["message"]}}}},"version":1,"_meta":{"managed":true,"description":"default settings for Stack deprecation logs index template installed by x-pack"}}}'
177+
curl -XPUT -k "http://localhost:{{elasticsearch_http_port}}/_component_template/.deprecation-indexing-settings" -H 'Content-Type: application/json' -d '{"template":{"settings":{"index":{"lifecycle":{"name":".deprecation-indexing-ilm-policy"},"codec":"best_compression","hidden":"true","number_of_replicas":"0","auto_expand_replicas":"0-1","query":{"default_field":["message"]}}}},"version":1,"_meta":{"managed":true,"description":"default settings for Stack deprecation logs index template installed by x-pack"}}}'
169178
when: elasticsearch_version_number is version('7.0.0', '>=')
170179

171180
- name: Install elasticsearch-hprof

roles/cs.elasticsearch/templates/elasticsearch.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,12 @@ discovery.type: single-node
1212

1313
{% if elasticsearch_version_number is version('7.16.0', '>=') %}
1414
cluster.deprecation_indexing.enabled: false
15+
{% if mageops_elasticsearch_http_auth %}
16+
xpack.security.enabled: true
17+
{% else %}
1518
xpack.security.enabled: false
1619
{% endif %}
20+
{% endif %}
1721

1822
path.data: /var/lib/elasticsearch
1923
path.logs: /var/log/elasticsearch

roles/cs.magento-configure/defaults/main/app-etc.yml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,28 @@ magento_app_etc_config_elasticsuite:
103103
es_client:
104104
servers: "{{ mageops_elasticsearch_host }}:{{ elasticsearch_http_port }}"
105105
enable_https_mode: "{{ mageops_elasticsearch_https }}"
106-
http_auth_user: ""
107-
http_auth_pwd: ""
108-
enable_http_auth: false
106+
http_auth_user: "{{ mageops_elasticsearch_username | default('') }}"
107+
http_auth_pwd: "{{ mageops_elasticsearch_password | default('') }}"
108+
enable_http_auth: "{{ mageops_elasticsearch_http_auth | default(false) }}"
109+
force_basic_auth: "{{ mageops_elasticsearch_http_auth | ternary(true, omit) }}"
109110
indices_settings:
110111
alias: "{{ magento_elasticsearch_index_alias }}"
111112

113+
# Optional elasticsuite config with opensearch
114+
magento_app_etc_config_opensearch:
115+
system:
116+
default:
117+
smile_elasticsuite_core_base_settings:
118+
es_client:
119+
servers: "{{ mageops_opensearch_host }}:{{ opensearch_http_port }}"
120+
enable_https_mode: "{{ mageops_opensearch_https }}"
121+
http_auth_user: "{{ mageops_opensearch_username | default('') }}"
122+
http_auth_pwd: "{{ mageops_opensearch_password | default('') }}"
123+
enable_http_auth: "{{ mageops_opensearch_http_auth | default(false) }}"
124+
force_basic_auth: "{{ mageops_opensearch_http_auth | ternary(true, omit) }}"
125+
indices_settings:
126+
alias: "{{ magento_opensearch_index_alias }}"
127+
112128
# Optional redis cache config
113129
magento_app_etc_config_cache_default_redis:
114130
cache:

roles/cs.magento-configure/tasks/037-wait-for-services.yml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
# TODO: This needs to be done on the final app node before setup:upgrade / cache:flush
22

33
- name: Wait for Elasticsearch
4-
shell: curl -sfk 'http://{{ mageops_elasticsearch_host }}:{{ elasticsearch_http_port }}'
4+
shell: curl -u {{ mageops_elasticsearch_username | default('elastic')}}:{{mageops_elasticsearch_password | default('changeme')}} -sfk 'http://{{ mageops_elasticsearch_host }}:{{ elasticsearch_http_port }}'
55
args:
66
warn: no
77
retries: 15
88
delay: 5
99
register: result
1010
until: result.rc == 0
11-
when: mageops_elasticsearch_host | default(false, true) and not mageops_skip_elasticsearch_check
11+
when: mageops_elasticsearch_host | default(false, true) and not mageops_skip_elasticsearch_check and mageops_elasticsearch_opensearch_flavor == "elasticsearch"
12+
13+
- name: Wait for Opensearch
14+
shell: curl -u {{ mageops_opensearch_username | default('elastic')}}:{{mageops_elasticsearch_password | default('changeme')}} -sfk 'http://{{ mageops_opensearch_host }}:{{ opensearch_http_port }}'
15+
args:
16+
warn: no
17+
retries: 15
18+
delay: 5
19+
register: result
20+
until: result.rc == 0
21+
when: mageops_openearch_host | default(false, true) and mageops_elasticsearch_opensearch_flavor == "opensearch"
1222

1323
- name: Wait for Redis cache host
1424
shell: echo -ne "PING\r\n" | nc {{ mageops_redis_host }} {{ mageops_redis_port }}

0 commit comments

Comments
 (0)