@@ -19,21 +19,30 @@ set -o pipefail
19
19
: ${ES_PASSWORD:= ' _unset_' }
20
20
21
21
: ${ES_INDEX:= ' cloudflare-test' }
22
- : ${ES_INDEX_SHARDS:= 6}
23
- : ${ES_INDEX_REPLICAS:= 0}
24
- : ${ES_INDEX_REFRESH:= ' 5s' }
25
- : ${ES_INDEX_JSON_ENABLED:= ' true' }
26
22
23
+ : ${ES_TEMPLATE_ENABLED:= ' true' }
24
+ : ${ES_TEMPLATE_OVERWRITE:= ' true' }
25
+ : ${ES_TEMPLATE_INDEX_SHARDS:= 6}
26
+ : ${ES_TEMPLATE_INDEX_REPLICAS:= 0}
27
+ : ${ES_TEMPLATE_INDEX_REFRESH:= ' 10s' }
28
+
29
+ : ${ES_TEMPLATE_JSON_ENABLED:= ' true' }
30
+ : ${ES_TEMPLATE_JSON_FILE:= ' /opt/filebeat/index-template.json' }
31
+
32
+ : ${ES_ILM_ENABLED:= ' true' }
33
+ : ${ES_ILM_OVERWRITE:= ' true' }
34
+ : ${ES_ILM_POLICY_FILE:= ' _unset_' }
27
35
: ${ES_ILM_DEFAULT_POLICY_FILE:= ' /opt/filebeat/ilm-default-policy.json' }
28
36
: ${ES_ILM_DEFAULT_POLICY_ENABLED:= ' true' }
29
37
30
- : ${ES_INDEX_DEFAULT_PIPELINE:= ' cloudflare' }
31
- : ${ES_INDEX_DEFAULT_PIPELINE_FILE:= ' /opt/filebeat/ingest-default-pipeline.json' }
32
- : ${ES_INDEX_DEFAULT_PIPELINE_ENABLED:= ' true' }
38
+ : ${ES_PIPELINE_ENABLED:= ' true' }
39
+ : ${ES_PIPELINE_DEFAULT:= ' cloudflare' }
40
+ : ${ES_PIPELINE_DEFAULT_FILE:= ' /opt/filebeat/ingest-default-pipeline.json' }
41
+ : ${ES_PIPELINE_DEFAULT_ENABLED:= ' true' }
33
42
34
43
export TZ=' UTC'
35
44
export CF_AUTH_EMAIL CF_AUTH_KEY CF_ZONE_ID CF_LOGS_DIRECTORY
36
- export FILEBEAT_CONFIG ES_INDEX_JSON_ENABLED
45
+ export FILEBEAT_CONFIG
37
46
export ES_INDEX ES_INDEX_SHARDS ES_INDEX_REPLICAS ES_INDEX_REFRESH
38
47
39
48
rawurlencode () {
@@ -55,31 +64,31 @@ rawurlencode() {
55
64
56
65
install_pipeline () {
57
66
local ES_CREDENTIALS
58
- if [[ ! -r " ${ES_INDEX_DEFAULT_PIPELINE_FILE } " ]]; then
59
- echo >&2 " ERROR: default index pipeline cannot be read at \" ${ES_INDEX_DEFAULT_PIPELINE_FILE } \" "
67
+ if [[ ! -r " ${ES_PIPELINE_DEFAULT_FILE } " ]]; then
68
+ echo >&2 " ERROR: default index pipeline cannot be read at \" ${ES_PIPELINE_DEFAULT_FILE } \" "
60
69
exit 1
61
70
fi
62
71
if [[ " ${ES_USERNAME} " != " _unset_" ]] && [[ " ${ES_PASSWORD} " != " _unset_" ]]; then
63
72
ES_CREDENTIALS=" $( rawurlencode " ${ES_USERNAME} " ) :$( rawurlencode " ${ES_PASSWORD} " ) @"
64
73
fi
65
- local ES_URL=" ${ES_HOST%%/* } //${ES_CREDENTIALS:- }${ES_HOST##*/ } /_ingest/pipeline/${ES_INDEX_DEFAULT_PIPELINE } "
74
+ local ES_URL=" ${ES_HOST%%/* } //${ES_CREDENTIALS:- }${ES_HOST##*/ } /_ingest/pipeline/${ES_PIPELINE_DEFAULT } "
66
75
curl \
67
76
-sS \
68
77
-X PUT \
69
78
-H " Content-Type: application/json" \
70
- -d @" ${ES_INDEX_DEFAULT_PIPELINE_FILE } " \
79
+ -d @" ${ES_PIPELINE_DEFAULT_FILE } " \
71
80
" ${ES_URL} "
72
81
}
73
82
74
83
generate_index_template () {
75
84
jq \
76
85
--arg idx " ${ES_INDEX} " \
77
86
--arg ip " ${ES_INDEX} -*" \
78
- --arg shards " ${ES_INDEX_SHARDS } " \
79
- --arg replicas " ${ES_INDEX_REPLICAS } " \
80
- --arg refresh_interval " ${ES_INDEX_REFRESH } " \
81
- --arg default_pipeline " ${ES_INDEX_DEFAULT_PIPELINE } " \
82
- --arg default_pipeline_enabled " ${ES_INDEX_DEFAULT_PIPELINE_ENABLED } " \
87
+ --arg shards " ${ES_TEMPLATE_INDEX_SHARDS } " \
88
+ --arg replicas " ${ES_TEMPLATE_INDEX_REPLICAS } " \
89
+ --arg refresh_interval " ${ES_TEMPLATE_INDEX_REFRESH } " \
90
+ --arg default_pipeline " ${ES_PIPELINE_DEFAULT } " \
91
+ --arg default_pipeline_enabled " ${ES_PIPELINE_DEFAULT_ENABLED } " \
83
92
'
84
93
.index_patterns = $ip |
85
94
.settings.index.lifecycle.name = $idx |
@@ -93,7 +102,7 @@ generate_index_template() {
93
102
.
94
103
end' \
95
104
" ${INDEX_TEMPLATE_FILE} " \
96
- > /opt/filebeat/index-template.json
105
+ > " ${ES_TEMPLATE_JSON_FILE} "
97
106
}
98
107
99
108
init_message () {
@@ -138,9 +147,9 @@ cat <<EOM
138
147
"EdgeResponseStatus": 200,
139
148
"EdgeServerIP": "127.0.0.1",
140
149
"EdgeStartTimestamp": 0000000010000000000,
141
- "FirewallMatchesActions": [],
142
- "FirewallMatchesRuleIDs": [],
143
- "FirewallMatchesSources": [],
150
+ "FirewallMatchesActions": [ "simulate", "challenge" ],
151
+ "FirewallMatchesRuleIDs": [ "47b718f2f84149e4a2973d6271c4aa6a", "1cb257e2891d4c108c0a9b527ab2a76d" ],
152
+ "FirewallMatchesSources": [ "firewallRules", "firewallRules" ],
144
153
"OriginIP": "127.0.0.1",
145
154
"OriginResponseBytes": 0,
146
155
"OriginResponseHTTPExpires": "Thu, 01 Jan 1970 01:00:00 GMT",
@@ -215,34 +224,66 @@ else
215
224
echo >&2
216
225
setup_cron
217
226
218
- if [[ " ${ES_ILM_DEFAULT_POLICY_ENABLED } " == " true" ]]; then
219
- echo >&2 ' ### using default ilm policy '
227
+ if [[ " ${ES_ILM_ENABLED } " == " true" ]]; then
228
+ echo >&2 ' ## ilm setup enabled '
220
229
echo >&2
221
- ilm_policy_file_arg=" -E setup.ilm.policy_file='${ES_ILM_DEFAULT_POLICY_FILE} '"
230
+ if [[ " ${ES_ILM_DEFAULT_POLICY_ENABLED} " == " true" ]]; then
231
+ echo >&2 ' ### using default ilm policy'
232
+ echo >&2
233
+ ilm_policy_file_arg=" -E setup.ilm.policy_file='${ES_ILM_DEFAULT_POLICY_FILE} '"
234
+ elif [[ " ${ES_ILM_POLICY_FILE} " != " _unset_" ]]; then
235
+ echo >&2 " ### using custom ilm policy from \" ${ES_ILM_POLICY_FILE} \" "
236
+ echo >&2
237
+ if [[ ! -r " {ES_ILM_POLICY_FILE}" ]]; then
238
+ echo >&2 " ERROR: unable to read policy file \" ${ES_ILM_POLICY_FILE} \" "
239
+ exit 1
240
+ fi
241
+ ilm_policy_file_arg=" -E setup.ilm.policy_file='${ES_ILM_POLICY_FILE} '"
242
+ else
243
+ echo >&2 ' ### ilm policy is not specified'
244
+ echo >&2
245
+ fi
246
+ else
247
+ echo >&2 ' ## ilm setup disabled'
222
248
fi
223
249
224
- if [[ " ${ES_INDEX_DEFAULT_PIPELINE_ENABLED} " == " true " ]]; then
225
- echo >&2 ' ## installing default pipeline'
250
+ if [[ " ${ES_PIPELINE_ENABLED} " ]]; then
251
+ echo >&2 ' ## ingest pipeline enabled '
226
252
echo >&2
227
- install_pipeline
253
+ if [[ " ${ES_PIPELINE_DEFAULT_ENABLED} " == " true" ]]; then
254
+ echo >&2 ' ### installing default pipeline'
255
+ echo >&2
256
+ install_pipeline
257
+ else
258
+ echo >&2 ' ### custom ingest pipeline is not supported at the moment'
259
+ echo >&2 ' ### though you could overwrite $ES_PIPELINE_DEFAULT_FILE value'
260
+ exit 1
261
+ fi
228
262
fi
229
263
230
- if [[ " ${ES_INDEX_JSON_ENABLED} " == " true" ]]; then
231
- echo >&2 ' ## generating index template'
264
+ if [[ " ${ES_TEMPLATE_ENABLED} " == " true" ]]; then
265
+ echo >&2 ' ## template setup enabled'
266
+ echo >&2
267
+ if [[ " ${ES_TEMPLATE_JSON_ENABLED} " == " true" ]]; then
268
+ echo >&2 ' ### generating index template'
269
+ echo >&2
270
+ generate_index_template
271
+ fi
272
+ else
273
+ echo >&2 ' ## template setup disabled'
232
274
echo >&2
233
- generate_index_template
234
275
fi
235
276
236
277
echo >&2 ' ## running Filebeat setup'
237
278
echo >&2
238
279
filebeat \
239
280
-c " ${FILEBEAT_CONFIG} " \
240
- -E setup.ilm.enabled=true \
241
- -E setup.ilm.overwrite=true \
281
+ -E setup.ilm.enabled=${ES_ILM_ENABLED} \
282
+ -E setup.ilm.overwrite=${ES_ILM_OVERWRITE} \
242
283
${ilm_policy_file_arg:- } \
243
- -E setup.template.enabled=true \
244
- -E setup.template.overwrite=true \
245
- -E setup.template.json.enabled=${ES_INDEX_JSON_ENABLED } \
284
+ -E setup.template.enabled=${ES_TEMPLATE_ENABLED} \
285
+ -E setup.template.overwrite=${ES_TEMPLATE_OVERWRITE} \
286
+ -E setup.template.json.enabled=${ES_TEMPLATE_JSON_ENABLED } \
246
287
setup --index-management
247
288
248
289
echo >&2
0 commit comments