Skip to content

Commit 1e8c6d0

Browse files
rm-hullJoanna Sommer
andauthored
1 parent bdd7fd6 commit 1e8c6d0

File tree

10 files changed

+977
-22
lines changed

10 files changed

+977
-22
lines changed

README.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,53 @@ Please see [the documentation](./docs/index.md#AWS-authentication) for details.
286286
go build -o /path/to/binary/terraform-provider-elasticsearch
287287
```
288288

289+
### Running tests locally
290+
291+
Start an instance of ElasticSearch locally with the following:
292+
293+
```sh
294+
./script/install-tools
295+
export OSS_IMAGE="opensearchproject/opensearch:1.2.0"
296+
export ES_OPENDISTRO_IMAGE="opensearchproject/opensearch:1.2.0"
297+
export ES_COMMAND=""
298+
export ES_KIBANA_IMAGE=""
299+
export OPENSEARCH_PREFIX="plugins.security"
300+
export OSS_ENV_VAR="plugins.security.disabled=true"
301+
export XPACK_IMAGE="docker.elastic.co/elasticsearch/elasticsearch:7.10.1"
302+
docker-compose up -d
303+
docker-compose ps -a
304+
```
305+
306+
When running tests, ensure that your test/debug profile has environmental variables as below:
307+
308+
- `ELASTICSEARCH_URL=http://localhost:9200_`
309+
- `TF_ACC=1`
310+
311+
312+
313+
### Debugging this provider
314+
315+
Build the executable, and start in debug mode:
316+
317+
```console
318+
$ go build
319+
$ ./terraform-provider-elasticsearch -debuggable # or start in debug mode in your IDE
320+
{"@level":"debug","@message":"plugin address","@timestamp":"2022-05-17T10:10:04.331668+01:00","address":"/var/folders/32/3mbbgs9x0r5bf991ltrl3p280000gs/T/plugin1346340234","network":"unix"}
321+
Provider started, to attach Terraform set the TF_REATTACH_PROVIDERS env var:
322+
323+
TF_REATTACH_PROVIDERS='{"registry.terraform.io/phillbaker/elasticsearch":{"Protocol":"grpc","ProtocolVersion":5,"Pid":79075,"Test":true,"Addr":{"Network":"unix","String":"/var/folders/32/3mbbgs9x0r5bf991ltrl3p280000gs/T/plugin1346340234"}}}'
324+
```
325+
326+
In another terminal, you can test your terraform code:
327+
328+
```console
329+
$ cd <my-project/terraform>
330+
$ export TF_REATTACH_PROVIDERS=<env var above>
331+
$ terraform apply
332+
```
333+
334+
The local provider will be used instead, and you should see debug information printed to the terminal.
335+
289336
## Licence
290337

291338
See LICENSE.
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
---
2+
# generated by https://github.com/hashicorp/terraform-plugin-docs
3+
page_title: "elasticsearch_opensearch_audit_config Resource - terraform-provider-elasticsearch"
4+
subcategory: "Elasticsearch Opensource"
5+
description: |-
6+
Audit config lets you configure the security plugin audit log settings. See the guide https://opensearch.org/docs/latest/security-plugin/audit-logs/index/ and AWS specific information https://docs.aws.amazon.com/opensearch-service/latest/developerguide/audit-logs.html.
7+
---
8+
9+
# elasticsearch_opensearch_audit_config (Resource)
10+
11+
Audit config lets you configure the security plugin audit log settings. See the guide https://opensearch.org/docs/latest/security-plugin/audit-logs/index/ and AWS specific information https://docs.aws.amazon.com/opensearch-service/latest/developerguide/audit-logs.html.
12+
13+
Note that when using with a managed AWS OpenSearch cluster, some values and permutations are not
14+
allowed, and will result in a HTTP 409 (Conflict) error being returned. See the comments in the
15+
example below for some know scenario's where this may occur.
16+
17+
## Example Usage
18+
19+
```terraform
20+
resource "elasticsearch_opensearch_audit_config" "test" {
21+
enabled = true
22+
23+
audit {
24+
enable_rest = true
25+
disabled_rest_categories = ["GRANTED_PRIVILEGES", "AUTHENTICATED"]
26+
27+
enable_transport = true
28+
disabled_transport_categories = ["GRANTED_PRIVILEGES", "AUTHENTICATED"]
29+
30+
resolve_bulk_requests = true
31+
log_request_body = true
32+
resolve_indices = true
33+
34+
# Note: if set false, AWS OpenSearch will return HTTP 409 (Conflict)
35+
exclude_sensitive_headers = true
36+
37+
ignore_users = ["kibanaserver"]
38+
ignore_requests = ["SearchRequest", "indices:data/read/*", "/_cluster/health"]
39+
}
40+
41+
compliance {
42+
enabled = true
43+
44+
# Note: if both internal/external are set true, AWS OpenSearch will return HTTP 409 (Conflict)
45+
internal_config = true
46+
external_config = false
47+
48+
read_metadata_only = true
49+
read_ignore_users = ["read-ignore-1"]
50+
51+
read_watched_field {
52+
index = "read-index-1"
53+
fields = ["field-1", "field-2"]
54+
}
55+
56+
read_watched_field {
57+
index = "read-index-2"
58+
fields = ["field-3"]
59+
}
60+
61+
write_metadata_only = true
62+
write_log_diffs = false
63+
write_watched_indices = ["write-index-1", "write-index-2", "log-*", "*"]
64+
write_ignore_users = ["write-ignore-1"]
65+
}
66+
}
67+
```
68+
69+
70+
<!-- schema generated by tfplugindocs -->
71+
## Schema
72+
73+
### Required
74+
75+
- **enabled** (Boolean)
76+
77+
### Optional
78+
79+
- **audit** (Block Set) (see [below for nested schema](#nestedblock--audit))
80+
- **compliance** (Block Set) (see [below for nested schema](#nestedblock--compliance))
81+
- **id** (String) The ID of this resource.
82+
83+
<a id="nestedblock--audit"></a>
84+
### Nested Schema for `audit`
85+
86+
Optional:
87+
88+
- **disabled_rest_categories** (Set of String)
89+
- **disabled_transport_categories** (Set of String)
90+
- **enable_rest** (Boolean)
91+
- **enable_transport** (Boolean)
92+
- **exclude_sensitive_headers** (Boolean)
93+
- **ignore_requests** (Set of String)
94+
- **ignore_users** (Set of String)
95+
- **log_request_body** (Boolean)
96+
- **resolve_bulk_requests** (Boolean)
97+
- **resolve_indices** (Boolean)
98+
99+
100+
<a id="nestedblock--compliance"></a>
101+
### Nested Schema for `compliance`
102+
103+
Optional:
104+
105+
- **enabled** (Boolean)
106+
- **external_config** (Boolean)
107+
- **internal_config** (Boolean)
108+
- **read_ignore_users** (Set of String)
109+
- **read_metadata_only** (Boolean)
110+
- **read_watched_fields** (Map of Set of String)
111+
- **write_ignore_users** (Set of String)
112+
- **write_log_diffs** (Boolean)
113+
- **write_metadata_only** (Boolean)
114+
- **write_watched_indices** (Set of String)
115+
116+

es/provider.go

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -219,40 +219,41 @@ func Provider() *schema.Provider {
219219
},
220220

221221
ResourcesMap: map[string]*schema.Resource{
222-
"elasticsearch_index": resourceElasticsearchIndex(),
223-
"elasticsearch_index_template": resourceElasticsearchIndexTemplate(),
224222
"elasticsearch_cluster_settings": resourceElasticsearchClusterSettings(),
225-
"elasticsearch_composable_index_template": resourceElasticsearchComposableIndexTemplate(),
226223
"elasticsearch_component_template": resourceElasticsearchComponentTemplate(),
224+
"elasticsearch_composable_index_template": resourceElasticsearchComposableIndexTemplate(),
227225
"elasticsearch_data_stream": resourceElasticsearchDataStream(),
226+
"elasticsearch_index_template": resourceElasticsearchIndexTemplate(),
227+
"elasticsearch_index": resourceElasticsearchIndex(),
228228
"elasticsearch_ingest_pipeline": resourceElasticsearchIngestPipeline(),
229229
"elasticsearch_kibana_alert": resourceElasticsearchKibanaAlert(),
230230
"elasticsearch_kibana_object": resourceElasticsearchKibanaObject(),
231-
"elasticsearch_snapshot_repository": resourceElasticsearchSnapshotRepository(),
232231
"elasticsearch_opendistro_destination": resourceElasticsearchOpenDistroDestination(),
233-
"elasticsearch_opensearch_destination": resourceOpenSearchDestination(),
234-
"elasticsearch_opendistro_ism_policy": resourceElasticsearchOpenDistroISMPolicy(),
235-
"elasticsearch_opensearch_ism_policy": resourceOpenSearchISMPolicy(),
236232
"elasticsearch_opendistro_ism_policy_mapping": resourceElasticsearchOpenDistroISMPolicyMapping(),
237-
"elasticsearch_opensearch_ism_policy_mapping": resourceOpenSearchISMPolicyMapping(),
233+
"elasticsearch_opendistro_ism_policy": resourceElasticsearchOpenDistroISMPolicy(),
234+
"elasticsearch_opendistro_kibana_tenant": resourceElasticsearchOpenDistroKibanaTenant(),
238235
"elasticsearch_opendistro_monitor": resourceElasticsearchOpenDistroMonitor(),
239-
"elasticsearch_opensearch_monitor": resourceOpenSearchMonitor(),
240-
"elasticsearch_opendistro_roles_mapping": resourceElasticsearchOpenDistroRolesMapping(),
241-
"elasticsearch_opensearch_roles_mapping": resourceOpenSearchRolesMapping(),
242236
"elasticsearch_opendistro_role": resourceElasticsearchOpenDistroRole(),
243-
"elasticsearch_opensearch_role": resourceOpenSearchRole(),
237+
"elasticsearch_opendistro_roles_mapping": resourceElasticsearchOpenDistroRolesMapping(),
244238
"elasticsearch_opendistro_user": resourceElasticsearchOpenDistroUser(),
245-
"elasticsearch_opensearch_user": resourceOpenSearchUser(),
246-
"elasticsearch_opendistro_kibana_tenant": resourceElasticsearchOpenDistroKibanaTenant(),
239+
"elasticsearch_opensearch_audit_config": resourceOpenSearchAuditConfig(),
240+
"elasticsearch_opensearch_destination": resourceOpenSearchDestination(),
241+
"elasticsearch_opensearch_ism_policy_mapping": resourceOpenSearchISMPolicyMapping(),
242+
"elasticsearch_opensearch_ism_policy": resourceOpenSearchISMPolicy(),
247243
"elasticsearch_opensearch_kibana_tenant": resourceOpenSearchKibanaTenant(),
244+
"elasticsearch_opensearch_monitor": resourceOpenSearchMonitor(),
245+
"elasticsearch_opensearch_role": resourceOpenSearchRole(),
246+
"elasticsearch_opensearch_roles_mapping": resourceOpenSearchRolesMapping(),
247+
"elasticsearch_opensearch_user": resourceOpenSearchUser(),
248+
"elasticsearch_script": resourceElasticsearchScript(),
249+
"elasticsearch_snapshot_repository": resourceElasticsearchSnapshotRepository(),
248250
"elasticsearch_xpack_index_lifecycle_policy": resourceElasticsearchXpackIndexLifecyclePolicy(),
249251
"elasticsearch_xpack_license": resourceElasticsearchXpackLicense(),
250-
"elasticsearch_xpack_role": resourceElasticsearchXpackRole(),
251252
"elasticsearch_xpack_role_mapping": resourceElasticsearchXpackRoleMapping(),
253+
"elasticsearch_xpack_role": resourceElasticsearchXpackRole(),
252254
"elasticsearch_xpack_snapshot_lifecycle_policy": resourceElasticsearchXpackSnapshotLifecyclePolicy(),
253255
"elasticsearch_xpack_user": resourceElasticsearchXpackUser(),
254256
"elasticsearch_xpack_watch": resourceElasticsearchXpackWatch(),
255-
"elasticsearch_script": resourceElasticsearchScript(),
256257
},
257258

258259
DataSourcesMap: map[string]*schema.Resource{

0 commit comments

Comments
 (0)