@@ -31,7 +31,11 @@ KIBANA_SYSTEM_USERNAME ?= kibana_system
31
31
KIBANA_SYSTEM_PASSWORD ?= password
32
32
KIBANA_API_KEY_NAME ?= kibana-api-key
33
33
34
+ FLEET_NAME ?= terraform-elasticstack-fleet
35
+ FLEET_ENDPOINT ?= https://$(FLEET_NAME ) :8220
36
+
34
37
SOURCE_LOCATION ?= $(shell pwd)
38
+ , := ,
35
39
36
40
export GOBIN = $(shell pwd) /bin
37
41
@@ -72,7 +76,7 @@ retry = until [ $$(if [ -z "$$attempt" ]; then echo -n "0"; else echo -n "$$atte
72
76
# To run specific test (e.g. TestAccResourceActionConnector) execute `make docker-testacc TESTARGS='-run ^TestAccResourceActionConnector$$'`
73
77
# To enable tracing (or debugging), execute `make docker-testacc TF_LOG=TRACE`
74
78
.PHONY : docker-testacc
75
- docker-testacc : docker-elasticsearch docker-kibana # # Run acceptance tests in the docker container
79
+ docker-testacc : docker-elasticsearch docker-kibana docker-fleet # # Run acceptance tests in the docker container
76
80
@ docker run --rm \
77
81
-e ELASTICSEARCH_ENDPOINTS=" $( ELASTICSEARCH_ENDPOINTS) " \
78
82
-e KIBANA_ENDPOINT=" $( KIBANA_ENDPOINT) " \
@@ -163,6 +167,30 @@ docker-kibana-with-tls: docker-network docker-elasticsearch set-kibana-password
163
167
docker.elastic.co/kibana/kibana:$(STACK_VERSION); \
164
168
fi)
165
169
170
+ .PHONY : docker-fleet
171
+ docker-fleet : docker-network docker-elasticsearch docker-kibana setup-kibana-fleet # # Start Fleet node in docker container
172
+ @ docker rm -f $(FLEET_NAME ) & > /dev/null || true
173
+ @ $(call retry, 5, if ! docker ps --format '{{.Names}}' | grep -w $(FLEET_NAME ) > /dev/null 2>&1 ; then \
174
+ docker run -d \
175
+ -p 8220:8220 \
176
+ -e SERVER_NAME=fleet \
177
+ -e FLEET_ENROLL=1 \
178
+ -e FLEET_URL=$(FLEET_ENDPOINT) \
179
+ -e FLEET_INSECURE=true \
180
+ -e FLEET_SERVER_ENABLE=1 \
181
+ -e FLEET_SERVER_POLICY_ID=fleet-server \
182
+ -e FLEET_SERVER_ELASTICSEARCH_HOST=$(ELASTICSEARCH_ENDPOINTS) \
183
+ -e FLEET_SERVER_ELASTICSEARCH_INSECURE=true \
184
+ -e FLEET_SERVER_INSECURE_HTTP=true \
185
+ -e KIBANA_HOST=$(KIBANA_ENDPOINT) \
186
+ -e KIBANA_FLEET_SETUP=1 \
187
+ -e KIBANA_FLEET_USERNAME=$(ELASTICSEARCH_USERNAME) \
188
+ -e KIBANA_FLEET_PASSWORD=$(ELASTICSEARCH_PASSWORD) \
189
+ --name $(FLEET_NAME) \
190
+ --network $(ELASTICSEARCH_NETWORK) \
191
+ docker.elastic.co/beats/elastic-agent:$(STACK_VERSION); \
192
+ fi)
193
+
166
194
167
195
.PHONY : docker-network
168
196
docker-network : # # Create a dedicated network for ES and test runs
@@ -172,19 +200,25 @@ docker-network: ## Create a dedicated network for ES and test runs
172
200
173
201
.PHONY : set-kibana-password
174
202
set-kibana-password : # # Sets the ES KIBANA_SYSTEM_USERNAME's password to KIBANA_SYSTEM_PASSWORD. This expects Elasticsearch to be available at localhost:9200
175
- @ $(call retry, 10, curl -X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" http://localhost:9200/_security/user/$(KIBANA_SYSTEM_USERNAME ) /_password -d "{\ "password\":\ "$(KIBANA_SYSTEM_PASSWORD ) \"}" | grep -q "^{}")
203
+ @ $(call retry, 10, curl -sS - X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" http://localhost:9200/_security/user/$(KIBANA_SYSTEM_USERNAME ) /_password -d '{ "password": "$(KIBANA_SYSTEM_PASSWORD ) "}' | grep -q "^{}")
176
204
177
205
.PHONY : create-es-api-key
178
206
create-es-api-key : # # Creates and outputs a new API Key. This expects Elasticsearch to be available at localhost:9200
179
- @ $(call retry, 10, curl -X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" http://localhost:9200/_security/api_key -d "{\ "name\":\ "$(KIBANA_API_KEY_NAME ) \"}" )
207
+ @ $(call retry, 10, curl -sS - X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" http://localhost:9200/_security/api_key -d '{ "name": "$(KIBANA_API_KEY_NAME ) "}' )
180
208
181
209
.PHONY : create-es-bearer-token
182
- create-es-bearer-token :
183
- @ $(call retry, 10, curl -X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" http://localhost:9200/_security/oauth2/token -d "{\"grant_type\": \"client_credentials\"}")
210
+ create-es-bearer-token : # # Creates and outputs a new OAuth bearer token. This expects Elasticsearch to be available at localhost:9200
211
+ @ $(call retry, 10, curl -sS -X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" http://localhost:9200/_security/oauth2/token -d '{"grant_type":"client_credentials"}')
212
+
213
+ .PHONY : setup-kibana-fleet
214
+ setup-kibana-fleet : # # Creates the agent and integration policies required to run Fleet. This expects Kibana to be available at localhost:5601
215
+ @ $(call retry, 10, curl -sS --fail-with-body -X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" -H "kbn-xsrf: true" http://localhost:5601/api/fleet/fleet_server_hosts -d '{"name":"default"$(, ) "host_urls":["$(FLEET_ENDPOINT ) "]$(, ) "is_default":true}')
216
+ @ $(call retry, 10, curl -sS --fail-with-body -X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" -H "kbn-xsrf: true" http://localhost:5601/api/fleet/agent_policies -d '{"id":"fleet-server"$(, ) "name":"Fleet Server"$(, ) "namespace":"default"$(, ) "monitoring_enabled":["logs"$(, ) "metrics"]}')
217
+ @ $(call retry, 10, curl -sS --fail-with-body -X POST -u $(ELASTICSEARCH_USERNAME ) :$(ELASTICSEARCH_PASSWORD ) -H "Content-Type: application/json" -H "kbn-xsrf: true" http://localhost:5601/api/fleet/package_policies -d '{"name":"fleet-server"$(, ) "namespace":"default"$(, ) "policy_id":"fleet-server"$(, ) "enabled":true$(, ) "inputs":[{"type":"fleet-server"$(, ) "enabled":true$(, ) "streams":[]$(, ) "vars":{}}]$(, ) "package":{"name":"fleet_server"$(, ) "version":"1.5.0"}}')
184
218
185
219
.PHONY : docker-clean
186
220
docker-clean : # # Try to remove provisioned nodes and assigned network
187
- @ docker rm -f $(ELASTICSEARCH_NAME ) $(KIBANA_NAME ) || true
221
+ @ docker rm -f $(ELASTICSEARCH_NAME ) $(KIBANA_NAME ) $( FLEET_NAME ) || true
188
222
@ docker network rm $(ELASTICSEARCH_NETWORK ) || true
189
223
190
224
0 commit comments