atlas-init 0.1.1__py3-none-any.whl → 0.1.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- atlas_init/__init__.py +3 -3
- atlas_init/atlas_init.yaml +18 -1
- atlas_init/cli.py +62 -70
- atlas_init/cli_cfn/app.py +40 -117
- atlas_init/cli_cfn/{cfn.py → aws.py} +129 -14
- atlas_init/cli_cfn/cfn_parameter_finder.py +89 -6
- atlas_init/cli_cfn/example.py +203 -0
- atlas_init/cli_cfn/files.py +63 -0
- atlas_init/cli_helper/run.py +18 -2
- atlas_init/cli_helper/tf_runner.py +4 -6
- atlas_init/cli_root/__init__.py +0 -0
- atlas_init/cli_root/trigger.py +153 -0
- atlas_init/cli_tf/app.py +211 -4
- atlas_init/cli_tf/changelog.py +103 -0
- atlas_init/cli_tf/debug_logs.py +221 -0
- atlas_init/cli_tf/debug_logs_test_data.py +253 -0
- atlas_init/cli_tf/github_logs.py +229 -0
- atlas_init/cli_tf/go_test_run.py +194 -0
- atlas_init/cli_tf/go_test_run_format.py +31 -0
- atlas_init/cli_tf/go_test_summary.py +144 -0
- atlas_init/cli_tf/hcl/__init__.py +0 -0
- atlas_init/cli_tf/hcl/cli.py +161 -0
- atlas_init/cli_tf/hcl/cluster_mig.py +348 -0
- atlas_init/cli_tf/hcl/parser.py +140 -0
- atlas_init/cli_tf/schema.py +222 -18
- atlas_init/cli_tf/schema_go_parser.py +236 -0
- atlas_init/cli_tf/schema_table.py +150 -0
- atlas_init/cli_tf/schema_table_models.py +155 -0
- atlas_init/cli_tf/schema_v2.py +599 -0
- atlas_init/cli_tf/schema_v2_api_parsing.py +298 -0
- atlas_init/cli_tf/schema_v2_sdk.py +361 -0
- atlas_init/cli_tf/schema_v3.py +222 -0
- atlas_init/cli_tf/schema_v3_sdk.py +279 -0
- atlas_init/cli_tf/schema_v3_sdk_base.py +68 -0
- atlas_init/cli_tf/schema_v3_sdk_create.py +216 -0
- atlas_init/humps.py +253 -0
- atlas_init/repos/cfn.py +6 -1
- atlas_init/repos/path.py +3 -3
- atlas_init/settings/config.py +14 -4
- atlas_init/settings/env_vars.py +16 -1
- atlas_init/settings/path.py +12 -1
- atlas_init/settings/rich_utils.py +2 -0
- atlas_init/terraform.yaml +77 -1
- atlas_init/tf/.terraform.lock.hcl +59 -83
- atlas_init/tf/always.tf +7 -0
- atlas_init/tf/main.tf +3 -0
- atlas_init/tf/modules/aws_s3/provider.tf +1 -1
- atlas_init/tf/modules/aws_vars/aws_vars.tf +2 -0
- atlas_init/tf/modules/aws_vpc/provider.tf +4 -1
- atlas_init/tf/modules/cfn/cfn.tf +47 -33
- atlas_init/tf/modules/cfn/kms.tf +54 -0
- atlas_init/tf/modules/cfn/resource_actions.yaml +1 -0
- atlas_init/tf/modules/cfn/variables.tf +31 -0
- atlas_init/tf/modules/cloud_provider/cloud_provider.tf +1 -0
- atlas_init/tf/modules/cloud_provider/provider.tf +1 -1
- atlas_init/tf/modules/cluster/cluster.tf +34 -24
- atlas_init/tf/modules/cluster/provider.tf +1 -1
- atlas_init/tf/modules/federated_vars/federated_vars.tf +3 -0
- atlas_init/tf/modules/federated_vars/provider.tf +1 -1
- atlas_init/tf/modules/project_extra/project_extra.tf +15 -1
- atlas_init/tf/modules/stream_instance/stream_instance.tf +1 -1
- atlas_init/tf/modules/vpc_peering/vpc_peering.tf +1 -1
- atlas_init/tf/modules/vpc_privatelink/versions.tf +1 -1
- atlas_init/tf/outputs.tf +11 -3
- atlas_init/tf/providers.tf +2 -1
- atlas_init/tf/variables.tf +12 -0
- atlas_init/typer_app.py +76 -0
- {atlas_init-0.1.1.dist-info → atlas_init-0.1.8.dist-info}/METADATA +36 -18
- atlas_init-0.1.8.dist-info/RECORD +91 -0
- {atlas_init-0.1.1.dist-info → atlas_init-0.1.8.dist-info}/WHEEL +1 -1
- atlas_init-0.1.1.dist-info/RECORD +0 -62
- /atlas_init/tf/modules/aws_vpc/{aws-vpc.tf → aws_vpc.tf} +0 -0
- {atlas_init-0.1.1.dist-info → atlas_init-0.1.8.dist-info}/entry_points.txt +0 -0
atlas_init/terraform.yaml
CHANGED
@@ -15,7 +15,7 @@ resources:
|
|
15
15
|
- tags
|
16
16
|
attributes:
|
17
17
|
aliases:
|
18
|
-
groupId:
|
18
|
+
groupId: project_id
|
19
19
|
create:
|
20
20
|
path: /api/atlas/v2/groups
|
21
21
|
method: POST
|
@@ -28,3 +28,79 @@ resources:
|
|
28
28
|
delete:
|
29
29
|
path: /api/atlas/v2/groups/{groupId}
|
30
30
|
method: DELETE
|
31
|
+
- name: streamprocessor
|
32
|
+
extensions:
|
33
|
+
- type: rename_attribute
|
34
|
+
from_name: _id
|
35
|
+
to_name: id
|
36
|
+
- type: ignore_nested
|
37
|
+
path: "*.links"
|
38
|
+
- type: change_attribute_type
|
39
|
+
path: processor_name
|
40
|
+
new_value: required
|
41
|
+
- type: change_attribute_type
|
42
|
+
path: project_id
|
43
|
+
new_value: required
|
44
|
+
- type: skip_validators
|
45
|
+
provider_spec_attributes: []
|
46
|
+
schema:
|
47
|
+
ignores:
|
48
|
+
- name
|
49
|
+
- pretty
|
50
|
+
- envelope
|
51
|
+
- links
|
52
|
+
attributes: # (only works on path attributes)
|
53
|
+
aliases:
|
54
|
+
# _id: id
|
55
|
+
# name: processor_name
|
56
|
+
groupId: project_id
|
57
|
+
tenantName: instance_name
|
58
|
+
create:
|
59
|
+
path: /api/atlas/v2/groups/{groupId}/streams/{tenantName}/processor
|
60
|
+
method: POST
|
61
|
+
read:
|
62
|
+
path: /api/atlas/v2/groups/{groupId}/streams/{tenantName}/processor/{processorName}
|
63
|
+
method: GET
|
64
|
+
delete:
|
65
|
+
path: /api/atlas/v2/groups/{groupId}/streams/{tenantName}/processor/{processorName}
|
66
|
+
method: DELETE
|
67
|
+
# update: not implemented yet
|
68
|
+
# path: api/atlas/v2/groups/{groupId}/streams/{tenantName}/processor
|
69
|
+
# method: PATCH
|
70
|
+
data_sources:
|
71
|
+
- name: stream_processor
|
72
|
+
extensions:
|
73
|
+
- type: rename_attribute
|
74
|
+
from_name: _id
|
75
|
+
to_name: id
|
76
|
+
- type: rename_attribute
|
77
|
+
from_name: tenant_name
|
78
|
+
to_name: instance_name
|
79
|
+
- type: ignore_nested
|
80
|
+
path: "*.links"
|
81
|
+
- type: change_attribute_type
|
82
|
+
path: processor_name
|
83
|
+
new_value: required
|
84
|
+
- type: change_attribute_type
|
85
|
+
path: project_id
|
86
|
+
new_value: required
|
87
|
+
- type: skip_validators
|
88
|
+
# pagination attributes
|
89
|
+
# generating test files
|
90
|
+
read:
|
91
|
+
path: /api/atlas/v2/groups/{groupId}/streams/{tenantName}/processor/{processorName}
|
92
|
+
method: GET
|
93
|
+
schema:
|
94
|
+
ignores:
|
95
|
+
- name
|
96
|
+
- pretty
|
97
|
+
- envelope
|
98
|
+
- links
|
99
|
+
attributes: # (only works on path attributes)
|
100
|
+
aliases:
|
101
|
+
groupId: project_id
|
102
|
+
- name: stream_processors
|
103
|
+
read:
|
104
|
+
# unable to extract the description here
|
105
|
+
path: /api/atlas/v2/groups/{groupId}/streams/{tenantName}/processors
|
106
|
+
method: GET
|
@@ -2,29 +2,25 @@
|
|
2
2
|
# Manual edits may be lost in future updates.
|
3
3
|
|
4
4
|
provider "registry.terraform.io/hashicorp/aws" {
|
5
|
-
version = "5.
|
5
|
+
version = "5.67.0"
|
6
6
|
constraints = "~> 5.0"
|
7
7
|
hashes = [
|
8
|
-
"h1:
|
9
|
-
"
|
10
|
-
"
|
11
|
-
"
|
12
|
-
"
|
13
|
-
"zh:
|
14
|
-
"zh:
|
15
|
-
"zh:
|
16
|
-
"zh:
|
17
|
-
"zh:5c72ed211d9234edd70eac9d77c3cafc7bbf819d1c28332a6d77acf227c9a23c",
|
18
|
-
"zh:7786d1a9781f8e8c0079bf58f4ed4aeddec0caf54ad7ddcf43c47936d545a04f",
|
19
|
-
"zh:82133e7d39787ee91ed41988da71beecc2ecb900b5da94b3f3d77fbc4d4dc722",
|
20
|
-
"zh:8cdb1c154dead85be8352afd30eaf41c59249de9e7e0a8eb4ab8e625b90a4922",
|
8
|
+
"h1:8wkuQvQiqjjm2+gQepy6xFBfimGoesKz1BPcVKWvED8=",
|
9
|
+
"zh:1259c8106c0a3fc0ed3b3eb814ab88d6a672e678b533f47d1bbbe3107949f43e",
|
10
|
+
"zh:226414049afd6d334cc16ff5d6cef23683620a9b56da67a21422a113d9cce4ab",
|
11
|
+
"zh:3c89b103aea20ef82a84e889abaeb971cb168de8292b61b34b83e807c40085a9",
|
12
|
+
"zh:3dd88e994fb7d7a6c6eafd3c01393274e4f776021176acea2e980f73fbd4acbc",
|
13
|
+
"zh:487e0dda221c84a20a143904c1cee4e63fce6c5c57c21368ea79beee87b108da",
|
14
|
+
"zh:7693bdcec8181aafcbda2c41c35b1386997e2c92b6f011df058009e4c8b300e1",
|
15
|
+
"zh:82679536250420f9e8e6edfd0fa9a1bab99a7f31fe5f049ac7a2e0d8c287b56f",
|
16
|
+
"zh:8685218dae921740083820c52afa66cdf14cf130539da1efd7d9a78bfb6ade64",
|
21
17
|
"zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425",
|
22
|
-
"zh:
|
23
|
-
"zh:
|
24
|
-
"zh:
|
25
|
-
"zh:
|
26
|
-
"zh:
|
27
|
-
"zh:
|
18
|
+
"zh:9e553a3ec05eedea779d393447fc316689ba6c4d4d8d569b986898e6dbe58fee",
|
19
|
+
"zh:a36c24acd3c75bac8211fefde58c459778021eb871ff8339be1c26ad8fd67ee1",
|
20
|
+
"zh:ce48bd1e35d6f996f1a09d8f99e8084469b7fec5611e67a50a63e96375b87ebe",
|
21
|
+
"zh:d6c76a24205513725269e4783da14be9648e9086fb621496052f4b37d52d785e",
|
22
|
+
"zh:d95a31745affb178ea48fa8e0be94691a8f7507ea55c0d0a4b6e0a8ef6fcb929",
|
23
|
+
"zh:f061ce59fac1bc425c1092e6647ed4bb1b61824416041b46dbf336e01a63ad89",
|
28
24
|
]
|
29
25
|
}
|
30
26
|
|
@@ -32,10 +28,6 @@ provider "registry.terraform.io/hashicorp/http" {
|
|
32
28
|
version = "3.4.2"
|
33
29
|
constraints = "3.4.2"
|
34
30
|
hashes = [
|
35
|
-
"h1:Te941FhpXymGvOraU9IQiMrvDVCMAF4gwjvyVZuvRtk=",
|
36
|
-
"h1:YxJewcIIT5sF2h8N+F7eZMsdEimpDpveAOzq/RUiUEo=",
|
37
|
-
"h1:eqo0hkFNrixeaT93PC5NiU893s7rUwwOMeqnCjjj3u0=",
|
38
|
-
"h1:v6Hn+15SfN2SI281Sp+uNXdWhD197ycP07fnaoGpPcc=",
|
39
31
|
"h1:vaoPfsLm6mOk6avKTrWi35o+9p4fEeZAY3hzYoXVTfo=",
|
40
32
|
"zh:0ba051c9c8659ce0fec94a3d50926745f11759509c4d6de0ad5f5eb289f0edd9",
|
41
33
|
"zh:23e6760e8406fef645913bf47bfab1ca984c1c5805d2bb0ef8310b16913d29cd",
|
@@ -56,11 +48,7 @@ provider "registry.terraform.io/hashicorp/local" {
|
|
56
48
|
version = "2.4.1"
|
57
49
|
constraints = "2.4.1"
|
58
50
|
hashes = [
|
59
|
-
"h1:7lfUMKAsu/HRUUs02tJxBle9XvSuNKkpTOqcFqMe5JI=",
|
60
|
-
"h1:FzraUapGrJoH3ZOWiUT2m6QpZAD+HmU+JmqZgM4/o2Y=",
|
61
|
-
"h1:V2G4qygMV0uHy+QTMlrjSyYgzpYmYyB6gWuE09+5CPI=",
|
62
51
|
"h1:gpp25uNkYJYzJVnkyRr7RIBVfwLs9GSq2HNnFpTRBg0=",
|
63
|
-
"h1:kgA44Hg57WNSNH/tEzpOSLEk7U3fkAkYxActZEvX0Q4=",
|
64
52
|
"zh:244b445bf34ddbd167731cc6c6b95bbed231dc4493f8cc34bd6850cfe1f78528",
|
65
53
|
"zh:3c330bdb626123228a0d1b1daa6c741b4d5d484ab1c7ae5d2f48d4c9885cc5e9",
|
66
54
|
"zh:5ff5f9b791ddd7557e815449173f2db38d338e674d2d91800ac6e6d808de1d1d",
|
@@ -77,73 +65,61 @@ provider "registry.terraform.io/hashicorp/local" {
|
|
77
65
|
}
|
78
66
|
|
79
67
|
provider "registry.terraform.io/hashicorp/null" {
|
80
|
-
version = "3.2.
|
68
|
+
version = "3.2.3"
|
81
69
|
hashes = [
|
82
|
-
"h1:
|
83
|
-
"
|
84
|
-
"
|
85
|
-
"
|
86
|
-
"
|
87
|
-
"zh:
|
88
|
-
"zh:32b1aaa1c3013d33c245493f4a65465eab9436b454d250102729321a44c8ab9a",
|
89
|
-
"zh:38eff7e470acb48f66380a73a5c7cdd76cc9b9c9ba9a7249c7991488abe22fe3",
|
90
|
-
"zh:4c2f1faee67af104f5f9e711c4574ff4d298afaa8a420680b0cb55d7bbc65606",
|
91
|
-
"zh:544b33b757c0b954dbb87db83a5ad921edd61f02f1dc86c6186a5ea86465b546",
|
92
|
-
"zh:696cf785090e1e8cf1587499516b0494f47413b43cb99877ad97f5d0de3dc539",
|
93
|
-
"zh:6e301f34757b5d265ae44467d95306d61bef5e41930be1365f5a8dcf80f59452",
|
70
|
+
"h1:I0Um8UkrMUb81Fxq/dxbr3HLP2cecTH2WMJiwKSrwQY=",
|
71
|
+
"zh:22d062e5278d872fe7aed834f5577ba0a5afe34a3bdac2b81f828d8d3e6706d2",
|
72
|
+
"zh:23dead00493ad863729495dc212fd6c29b8293e707b055ce5ba21ee453ce552d",
|
73
|
+
"zh:28299accf21763ca1ca144d8f660688d7c2ad0b105b7202554ca60b02a3856d3",
|
74
|
+
"zh:55c9e8a9ac25a7652df8c51a8a9a422bd67d784061b1de2dc9fe6c3cb4e77f2f",
|
75
|
+
"zh:756586535d11698a216291c06b9ed8a5cc6a4ec43eee1ee09ecd5c6a9e297ac1",
|
94
76
|
"zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
|
95
|
-
"zh:
|
96
|
-
"zh:
|
97
|
-
"zh:
|
98
|
-
"zh:
|
77
|
+
"zh:9d5eea62fdb587eeb96a8c4d782459f4e6b73baeece4d04b4a40e44faaee9301",
|
78
|
+
"zh:a6355f596a3fb8fc85c2fb054ab14e722991533f87f928e7169a486462c74670",
|
79
|
+
"zh:b5a65a789cff4ada58a5baffc76cb9767dc26ec6b45c00d2ec8b1b027f6db4ed",
|
80
|
+
"zh:db5ab669cf11d0e9f81dc380a6fdfcac437aea3d69109c7aef1a5426639d2d65",
|
81
|
+
"zh:de655d251c470197bcbb5ac45d289595295acb8f829f6c781d4a75c8c8b7c7dd",
|
82
|
+
"zh:f5c68199f2e6076bce92a12230434782bf768103a427e9bb9abee99b116af7b5",
|
99
83
|
]
|
100
84
|
}
|
101
85
|
|
102
86
|
provider "registry.terraform.io/hashicorp/random" {
|
103
|
-
version = "3.6.
|
87
|
+
version = "3.6.3"
|
104
88
|
hashes = [
|
105
|
-
"h1:
|
106
|
-
"
|
107
|
-
"
|
108
|
-
"
|
109
|
-
"
|
110
|
-
"zh:
|
111
|
-
"zh:
|
112
|
-
"zh:58f09948c608e601bd9d0a9e47dcb78e2b2c13b4bda4d8f097d09152ea9e91c5",
|
113
|
-
"zh:5c2a297146ed6fb3fe934c800e78380f700f49ff24dbb5fb5463134948e3a65f",
|
89
|
+
"h1:zG9uFP8l9u+yGZZvi5Te7PV62j50azpgwPunq2vTm1E=",
|
90
|
+
"zh:04ceb65210251339f07cd4611885d242cd4d0c7306e86dda9785396807c00451",
|
91
|
+
"zh:448f56199f3e99ff75d5c0afacae867ee795e4dfda6cb5f8e3b2a72ec3583dd8",
|
92
|
+
"zh:4b4c11ccfba7319e901df2dac836b1ae8f12185e37249e8d870ee10bb87a13fe",
|
93
|
+
"zh:4fa45c44c0de582c2edb8a2e054f55124520c16a39b2dfc0355929063b6395b1",
|
94
|
+
"zh:588508280501a06259e023b0695f6a18149a3816d259655c424d068982cbdd36",
|
95
|
+
"zh:737c4d99a87d2a4d1ac0a54a73d2cb62974ccb2edbd234f333abd079a32ebc9e",
|
114
96
|
"zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3",
|
115
|
-
"zh:
|
116
|
-
"zh:
|
117
|
-
"zh:
|
118
|
-
"zh:
|
119
|
-
"zh:
|
120
|
-
"zh:cfe27faa0bc9556391c8803ade135a5856c34a3fe85b9ae3bdd515013c0c87c1",
|
121
|
-
"zh:e4aabf3184bbb556b89e4b195eab1514c86a2914dd01c23ad9813ec17e863a8a",
|
97
|
+
"zh:a357ab512e5ebc6d1fda1382503109766e21bbfdfaa9ccda43d313c122069b30",
|
98
|
+
"zh:c51bfb15e7d52cc1a2eaec2a903ac2aff15d162c172b1b4c17675190e8147615",
|
99
|
+
"zh:e0951ee6fa9df90433728b96381fb867e3db98f66f735e0c3e24f8f16903f0ad",
|
100
|
+
"zh:e3cdcb4e73740621dabd82ee6a37d6cfce7fee2a03d8074df65086760f5cf556",
|
101
|
+
"zh:eff58323099f1bd9a0bec7cb04f717e7f1b2774c7d612bf7581797e1622613a0",
|
122
102
|
]
|
123
103
|
}
|
124
104
|
|
125
105
|
provider "registry.terraform.io/mongodb/mongodbatlas" {
|
126
|
-
version = "1.
|
127
|
-
constraints = "
|
106
|
+
version = "1.19.0"
|
107
|
+
constraints = "1.19.0"
|
128
108
|
hashes = [
|
129
|
-
"h1:
|
130
|
-
"
|
131
|
-
"
|
132
|
-
"
|
133
|
-
"
|
134
|
-
"zh:
|
135
|
-
"zh:
|
136
|
-
"zh:
|
137
|
-
"zh:
|
138
|
-
"zh:
|
139
|
-
"zh:
|
140
|
-
"zh:
|
141
|
-
"zh:
|
142
|
-
"zh:
|
143
|
-
"zh:
|
144
|
-
"zh:b88b4368b501aa0159c3804d82b61e5ef71c380dd6889424003a4ca37c5aff5f",
|
145
|
-
"zh:c9a98c72d1b6183dec7555a90ad0ed8a3741820d998332c33cd9a08ea26e78b4",
|
146
|
-
"zh:d2f1f716cd8a3de58f23f384254847aa06eb3e0b0fe5d7ffe13aec7ada3d69ef",
|
147
|
-
"zh:d70d14be3db7a1d8bb2528d8761bb8dc02ca4a06ee14657e57d2b2cec6217e13",
|
109
|
+
"h1:zzKWs4GzWXo+ImMQud/b0ECObJmbtB2wCrK3b98z1ms=",
|
110
|
+
"zh:3a8198e83b9b2dd1c461049f19464e82ce3f24d9fa7508e0e6dd642e2be70f73",
|
111
|
+
"zh:3a89a8395624a8e8516c6147b1612798f05e59ed3f13c1f6d8878099c9ca5f6e",
|
112
|
+
"zh:41ff89b10d5f1069d4bfa093e2d9297f1670863716f60d7b874f076bc37bc2ac",
|
113
|
+
"zh:5baf75906ccfc658be79b4c02c86032943af18c159f9c80a067ed696f23db527",
|
114
|
+
"zh:697aa8aebc5f4f8b6c42ba33bd1fec5ab8244555905bf6c6482ebf4733fe7976",
|
115
|
+
"zh:6d7fe4c2bca1e34e0c881266a463bbe16dd9a2934b7fa6d116c711a56b895f6f",
|
116
|
+
"zh:6dca00e357d04fbaeab6d2fa336c6704e289c076beef250a3cfe948a901bc4d4",
|
117
|
+
"zh:877a40cabcc49ee9fb40143dcbd6253d0c08ac1603a71e2cf2dde2d1fbfde574",
|
118
|
+
"zh:8a43a657196f4917f32f07ea91f056a2be6e7adb8a1fb7df4517ad9b71362c30",
|
119
|
+
"zh:91ef30b6020da3d5c5781ea6718b5f785c1eb3c7f4677343b31af2297d9f3558",
|
120
|
+
"zh:9bbc42509526c942db3979eaacd15b96ad454777993a0b002f908f9e9fcef51c",
|
121
|
+
"zh:b11fd160fcdd9cf7423283af7e0c3f0970b391b5a62ec30fe699ffdd54351896",
|
122
|
+
"zh:c297a0a188141741f14578cd8db41c309361e37b1b0904e635a7ebd0993e86f7",
|
123
|
+
"zh:c8af40986dbc42e77d0e34af7ea2d730cb87aa0471236392dbea0926ab95159a",
|
148
124
|
]
|
149
125
|
}
|
atlas_init/tf/always.tf
CHANGED
@@ -36,6 +36,8 @@ resource "mongodbatlas_project" "project" {
|
|
36
36
|
org_id = var.org_id
|
37
37
|
|
38
38
|
tags = local.tags
|
39
|
+
region_usage_restrictions = var.is_mongodbgov_cloud ? "GOV_REGIONS_ONLY" : null
|
40
|
+
project_owner_id = length(var.user_id) > 0 ? var.user_id : null
|
39
41
|
}
|
40
42
|
|
41
43
|
resource "mongodbatlas_project_ip_access_list" "mongo-access" {
|
@@ -43,3 +45,8 @@ resource "mongodbatlas_project_ip_access_list" "mongo-access" {
|
|
43
45
|
project_id = mongodbatlas_project.project.id
|
44
46
|
cidr_block = "${chomp(data.http.myip[0].response_body)}/32"
|
45
47
|
}
|
48
|
+
|
49
|
+
data "mongodbatlas_atlas_user" "this" {
|
50
|
+
count = length(var.user_id) > 0 ? 1 : 0
|
51
|
+
user_id = var.user_id
|
52
|
+
}
|
atlas_init/tf/main.tf
CHANGED
@@ -24,6 +24,9 @@ module "cfn" {
|
|
24
24
|
atlas_private_key = var.atlas_private_key
|
25
25
|
cfn_profile = local.cfn_profile
|
26
26
|
tags = local.tags
|
27
|
+
aws_account_id = local.aws_account_id
|
28
|
+
use_kms_key = var.cfn_config.use_kms_key
|
29
|
+
aws_region = var.cfn_config.region
|
27
30
|
}
|
28
31
|
|
29
32
|
module "cluster" {
|
@@ -14,5 +14,7 @@ output "env_vars" {
|
|
14
14
|
AWS_ACCESS_KEY_ID = var.aws_access_key_id
|
15
15
|
AWS_SECRET_ACCESS_KEY = var.aws_secret_access_key
|
16
16
|
AWS_REGION = var.aws_region
|
17
|
+
AWS_REGION_LOWERCASE = var.aws_region
|
18
|
+
AWS_REGION_UPPERCASE = replace(upper(var.aws_region), "-", "_")
|
17
19
|
}
|
18
20
|
}
|
atlas_init/tf/modules/cfn/cfn.tf
CHANGED
@@ -1,22 +1,3 @@
|
|
1
|
-
variable "cfn_profile" {
|
2
|
-
type = string
|
3
|
-
}
|
4
|
-
variable "atlas_public_key" {
|
5
|
-
type = string
|
6
|
-
}
|
7
|
-
|
8
|
-
variable "atlas_private_key" {
|
9
|
-
type = string
|
10
|
-
}
|
11
|
-
|
12
|
-
variable "atlas_base_url" {
|
13
|
-
type = string
|
14
|
-
}
|
15
|
-
|
16
|
-
variable "tags" {
|
17
|
-
type = map(string)
|
18
|
-
}
|
19
|
-
|
20
1
|
terraform {
|
21
2
|
required_providers {
|
22
3
|
aws = {
|
@@ -30,22 +11,52 @@ locals {
|
|
30
11
|
resource_actions_yaml = file("${path.module}/resource_actions.yaml")
|
31
12
|
services = yamldecode(local.services_yaml)
|
32
13
|
resource_actions = yamldecode(local.resource_actions_yaml)
|
14
|
+
role_name = "cfn-execution-role-${var.cfn_profile}"
|
15
|
+
iam_policy_statement = {
|
16
|
+
Sid = "Original"
|
17
|
+
Action = local.resource_actions
|
18
|
+
Effect = "Allow"
|
19
|
+
Resource = "*"
|
20
|
+
}
|
21
|
+
iam_policy_statement_kms = {
|
22
|
+
Sid = "Extra"
|
23
|
+
Action = ["kms:Decrypt"]
|
24
|
+
Effect = "Allow"
|
25
|
+
Resource = try(aws_kms_key.this[0].arn, "invalid-arn-not-used")
|
26
|
+
}
|
27
|
+
iam_policy_statement_cloudwatch = {
|
28
|
+
Sid = "CloudwatchLogs"
|
29
|
+
Action = ["logs:*"]
|
30
|
+
Effect = "Allow"
|
31
|
+
Resource = "*"
|
32
|
+
}
|
33
|
+
iam_policy_statements = var.use_kms_key ? [local.iam_policy_statement, local.iam_policy_statement_kms, local.iam_policy_statement_cloudwatch] : [local.iam_policy_statement, local.iam_policy_statement_cloudwatch]
|
34
|
+
iam_role_policy_json = jsonencode({
|
35
|
+
Version = "2012-10-17"
|
36
|
+
Statement = local.iam_policy_statements
|
37
|
+
})
|
33
38
|
}
|
34
39
|
|
35
40
|
resource "aws_secretsmanager_secret" "cfn" {
|
36
41
|
name = "cfn/atlas/profile/${var.cfn_profile}"
|
42
|
+
description = "Secrets for the cfn ${var.cfn_profile} profile"
|
37
43
|
recovery_window_in_days = 0 # allow force deletion
|
38
44
|
tags = var.tags
|
45
|
+
kms_key_id = var.use_kms_key ? aws_kms_key.this[0].arn : null
|
39
46
|
}
|
47
|
+
|
40
48
|
resource "aws_secretsmanager_secret_version" "cfn" {
|
41
49
|
secret_id = aws_secretsmanager_secret.cfn.id
|
42
50
|
secret_string = jsonencode({
|
43
|
-
BaseUrl
|
44
|
-
PublicKey
|
45
|
-
PrivateKey
|
51
|
+
BaseUrl = var.atlas_base_url
|
52
|
+
PublicKey = var.atlas_public_key
|
53
|
+
PrivateKey = var.atlas_private_key
|
54
|
+
DebugClient = true
|
46
55
|
})
|
47
56
|
}
|
48
57
|
|
58
|
+
data "aws_caller_identity" "this" {}
|
59
|
+
|
49
60
|
data "aws_iam_policy_document" "assume_role" {
|
50
61
|
statement {
|
51
62
|
actions = ["sts:AssumeRole"]
|
@@ -54,27 +65,22 @@ data "aws_iam_policy_document" "assume_role" {
|
|
54
65
|
type = "Service"
|
55
66
|
identifiers = local.services
|
56
67
|
}
|
68
|
+
principals {
|
69
|
+
type = "AWS"
|
70
|
+
identifiers = [data.aws_caller_identity.this.arn] # Allow the terraform creator account to assume the role
|
71
|
+
}
|
57
72
|
}
|
58
73
|
}
|
59
74
|
|
60
75
|
resource "aws_iam_role" "execution_role" {
|
61
|
-
name =
|
76
|
+
name = local.role_name
|
62
77
|
assume_role_policy = data.aws_iam_policy_document.assume_role.json
|
63
78
|
max_session_duration = 8400
|
64
79
|
|
65
80
|
inline_policy {
|
66
81
|
name = "ResourceTypePolicy"
|
67
82
|
|
68
|
-
policy =
|
69
|
-
Version = "2012-10-17"
|
70
|
-
Statement = [
|
71
|
-
{
|
72
|
-
Action = local.resource_actions
|
73
|
-
Effect = "Allow"
|
74
|
-
Resource = "*"
|
75
|
-
},
|
76
|
-
]
|
77
|
-
})
|
83
|
+
policy = local.iam_role_policy_json
|
78
84
|
|
79
85
|
}
|
80
86
|
}
|
@@ -89,3 +95,11 @@ output "env_vars" {
|
|
89
95
|
CFN_EXAMPLE_EXECUTION_ROLE = aws_iam_role.execution_role.arn
|
90
96
|
}
|
91
97
|
}
|
98
|
+
|
99
|
+
|
100
|
+
output "info" {
|
101
|
+
value = {
|
102
|
+
kms_key_policy_json = local.kms_key_policy_json
|
103
|
+
iam_role_policy_json = local.iam_role_policy_json
|
104
|
+
}
|
105
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
locals {
|
2
|
+
account_principal = {
|
3
|
+
AWS = var.aws_account_id
|
4
|
+
}
|
5
|
+
kms_secretsmanager_condition = {
|
6
|
+
StringEquals = {
|
7
|
+
"kms:CallerAccount" = var.aws_account_id
|
8
|
+
"kms:ViaService" = "secretsmanager.${var.aws_region}.amazonaws.com"
|
9
|
+
}
|
10
|
+
}
|
11
|
+
kms_key_policy_json = jsonencode({
|
12
|
+
Version = "2012-10-17",
|
13
|
+
Statement = [
|
14
|
+
{
|
15
|
+
Sid = "Enable IAM User Permissions",
|
16
|
+
Effect = "Allow",
|
17
|
+
Principal = local.account_principal,
|
18
|
+
Action = "kms:*",
|
19
|
+
Resource = "*"
|
20
|
+
},
|
21
|
+
{
|
22
|
+
Sid = "Enable IAM User Permissions for Role",
|
23
|
+
Effect = "Allow",
|
24
|
+
Principal = {
|
25
|
+
AWS = "*"
|
26
|
+
}
|
27
|
+
Action = "kms:Decrypt",
|
28
|
+
Resource = "*"
|
29
|
+
Condition = {
|
30
|
+
StringEquals = {
|
31
|
+
"aws:PrincipalArn" = "arn:aws:iam::${var.aws_account_id}:role/${local.role_name}"
|
32
|
+
}
|
33
|
+
}
|
34
|
+
},
|
35
|
+
# { useful to check our example guide
|
36
|
+
# "Sid" : "Allow access through AWS Secrets Manager for all principals in the account that are authorized to use AWS Secrets Manager",
|
37
|
+
# "Effect" : "Allow",
|
38
|
+
# # "Principal" : { "AWS" : [aws_iam_role.execution_role.arn] },
|
39
|
+
# "Principal" : { "AWS" : "*" },
|
40
|
+
# "Action" : [
|
41
|
+
# "kms:Decrypt",
|
42
|
+
# ],
|
43
|
+
# "Resource" : "*",
|
44
|
+
# "Condition" : local.kms_secretsmanager_condition
|
45
|
+
# },
|
46
|
+
]
|
47
|
+
})
|
48
|
+
}
|
49
|
+
resource "aws_kms_key" "this" {
|
50
|
+
count = var.use_kms_key ? 1 : 0
|
51
|
+
description = "KMS key for ${var.cfn_profile}"
|
52
|
+
deletion_window_in_days = 7
|
53
|
+
policy = local.kms_key_policy_json
|
54
|
+
}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
variable "cfn_profile" {
|
2
|
+
type = string
|
3
|
+
}
|
4
|
+
variable "atlas_public_key" {
|
5
|
+
type = string
|
6
|
+
}
|
7
|
+
|
8
|
+
variable "atlas_private_key" {
|
9
|
+
type = string
|
10
|
+
}
|
11
|
+
|
12
|
+
variable "atlas_base_url" {
|
13
|
+
type = string
|
14
|
+
}
|
15
|
+
|
16
|
+
variable "tags" {
|
17
|
+
type = map(string)
|
18
|
+
}
|
19
|
+
|
20
|
+
variable "use_kms_key" {
|
21
|
+
type = bool
|
22
|
+
default = false
|
23
|
+
}
|
24
|
+
|
25
|
+
variable "aws_account_id" {
|
26
|
+
type = string
|
27
|
+
}
|
28
|
+
|
29
|
+
variable "aws_region" {
|
30
|
+
type = string
|
31
|
+
}
|
@@ -28,42 +28,51 @@ variable "cloud_backup" {
|
|
28
28
|
|
29
29
|
locals {
|
30
30
|
use_free_cluster = var.instance_size == "M0"
|
31
|
-
cluster = try(
|
32
|
-
container_id = local.cluster.container_id
|
31
|
+
cluster = try(mongodbatlas_advanced_cluster.project_cluster_free[0], mongodbatlas_advanced_cluster.project_cluster[0])
|
32
|
+
container_id = one(values(local.cluster.replication_specs[0].container_id))
|
33
|
+
mongodb_url = "mongodb+srv://${var.mongo_user}:${var.mongo_password}@${replace(local.cluster.connection_strings[0].standard_srv, "mongodb+srv://", "")}/?retryWrites=true"
|
33
34
|
}
|
34
|
-
resource "
|
35
|
+
resource "mongodbatlas_advanced_cluster" "project_cluster_free" {
|
35
36
|
count = local.use_free_cluster ? 1 : 0
|
36
37
|
project_id = var.project_id
|
37
38
|
name = var.cluster_name
|
39
|
+
cluster_type = "REPLICASET"
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
replication_specs {
|
42
|
+
region_configs {
|
43
|
+
auto_scaling {
|
44
|
+
disk_gb_enabled = false
|
45
|
+
}
|
46
|
+
priority = 7
|
47
|
+
provider_name = "TENANT"
|
48
|
+
backing_provider_name = "AWS"
|
49
|
+
region_name = var.region
|
50
|
+
electable_specs {
|
51
|
+
instance_size = var.instance_size
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
43
55
|
}
|
44
56
|
|
45
|
-
resource "
|
57
|
+
resource "mongodbatlas_advanced_cluster" "project_cluster" {
|
46
58
|
count = local.use_free_cluster ? 0 : 1
|
47
59
|
project_id = var.project_id
|
48
60
|
name = var.cluster_name
|
49
|
-
|
61
|
+
backup_enabled = var.cloud_backup
|
50
62
|
cluster_type = "REPLICASET"
|
63
|
+
|
51
64
|
replication_specs {
|
52
|
-
|
53
|
-
regions_config {
|
54
|
-
region_name = var.region
|
55
|
-
electable_nodes = 3
|
65
|
+
region_configs {
|
56
66
|
priority = 7
|
57
|
-
|
67
|
+
provider_name = "AWS"
|
68
|
+
region_name = var.region
|
69
|
+
electable_specs {
|
70
|
+
node_count = 3
|
71
|
+
instance_size = var.instance_size
|
72
|
+
disk_size_gb = 10
|
73
|
+
}
|
58
74
|
}
|
59
75
|
}
|
60
|
-
auto_scaling_disk_gb_enabled = false
|
61
|
-
mongo_db_major_version = "5.0"
|
62
|
-
|
63
|
-
# Provider Settings "block"
|
64
|
-
provider_name = "AWS"
|
65
|
-
disk_size_gb = 10
|
66
|
-
provider_instance_size_name = var.instance_size
|
67
76
|
}
|
68
77
|
|
69
78
|
resource "mongodbatlas_database_user" "mongo-user" {
|
@@ -90,11 +99,11 @@ output "info" {
|
|
90
99
|
sensitive = true
|
91
100
|
value = {
|
92
101
|
standard_srv = local.cluster.connection_strings[0].standard_srv
|
93
|
-
mongo_url =
|
102
|
+
mongo_url = local.mongodb_url
|
94
103
|
mongo_username = var.mongo_user
|
95
104
|
mongo_password = var.mongo_password
|
96
|
-
mongo_url_with_db = "mongodb+srv://${var.mongo_user}:${var.mongo_password}@${replace(local.cluster.
|
97
|
-
cluster_container_id = local.
|
105
|
+
mongo_url_with_db = "mongodb+srv://${var.mongo_user}:${var.mongo_password}@${replace(local.cluster.connection_strings[0].standard_srv, "mongodb+srv://", "")}/${var.db_in_url}?retryWrites=true"
|
106
|
+
cluster_container_id = local.container_id
|
98
107
|
}
|
99
108
|
}
|
100
109
|
|
@@ -102,5 +111,6 @@ output "env_vars" {
|
|
102
111
|
value = {
|
103
112
|
MONGODB_ATLAS_CLUSTER_NAME = var.cluster_name
|
104
113
|
MONGODB_ATLAS_CONTAINER_ID = local.container_id
|
114
|
+
MONGODB_URL = local.mongodb_url
|
105
115
|
}
|
106
116
|
}
|