You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Data source `google_compute_default_service_account` will not be retrieved if the variable `service_account_email` is specified.
11
+
* Added a new optional variable `bucket`. You can set "uniform_bucket_level_access = true" to the resource `google_storage_bucket` to enable uniform bucket-level access.
12
+
* Added two new variables `cloud_function->service_config->ingress_settings` and `cloud_function->service_config->egress_settings`, to configure the ingress and egress traffic settings of the Cloud Function.
13
+
* Added a new optional variable `cloud_function->build_service_account_email`. This account is used to build the Cloud Function and should have the role "roles/cloudbuild.builds.builder".
14
+
* Added a new optional variable `cloud_function->trigger_service_account_email`. This account is used to trigger the Cloud Function and should have the role "roles/run.invoker".
15
+
* Added a new variable `fmg_integration` to support FortiManager integration.
16
+
* Example `examples/autoscale_fgt_as_hub`:
17
+
* Supported everything changed in Module `fgt_asg_with_function`.
18
+
* Example `examples/autoscale_fgt_lb_sandwich`:
19
+
* Supported everything changed in Module `fgt_asg_with_function`.
20
+
* Added variable `special_behavior`. Please only use this variable under the suggestion of the developer.
21
+
* Document:
22
+
* Added new file `/docs/guide_gcp_modules.md`.
23
+
* Added new file `/docs/module_generic_vm_standalone.md`.
24
+
25
+
## 1.3.0 (Febuary, 25, 2025)
2
26
3
27
FEATURES:
4
28
***New Module**: `modules/gcp/iam`. It helps you create a new service account with specified roles.
This module can be used to deploy any Fortinet VM: FortiGate / FortiManager / FortiAnalyzer / FortiAIOPS / FortiGuest ...
28
+
29
+
30
+
2.[Single FortiGate](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/fgt_single.md) (Deprecated, please use [generic_vm_standalone](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/module_generic_vm_standalone.md)):
26
31
27
32
You can use this module to quickly deploy one single FortiGate.
28
33
34
+
This module can also be used to create FortiManager and FortiAnalyzer if you change the `image_type` or `image_source` to the [target value](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/guide_image.md#image-list).
35
+
36
+
29
37
30
38
## How to Use Examples/Modules:
31
39
@@ -53,6 +61,7 @@ module "your_module_name" {
53
61
## FAQ
54
62
-[How to Specify Image](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/guide_image.md)
55
63
-[What is Cloud Function](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/guide_function.md)
# The e-mail address of the service account. This service account will control the cloud function created by this project.
63
+
# This service account should already have "roles/datastore.user", "roles/compute.viewer" and "roles/run.invoker".
64
+
# If this variable is not specified, the default Google Compute Engine service account is used.
64
65
```
65
66
Modify these variables based on your needs.
66
67
68
+
`service_account_email` should comply with the least privilege principle.
69
+
You can [create dedicated service account by using our GCP module](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/guide_gcp_modules.md#create-dedicated-service-account).
70
+
67
71
If you want to deploy more than one examples, please make sure the `prefix` of those examples are different.
68
72
69
73
@@ -183,14 +187,14 @@ cloud_function = {
183
187
# "fortiflex" parameters is required if license_source is "fortiflex" or "file_fortiflex"
184
188
# fortiflex = {
185
189
# retrieve_mode = "use_active" # How to retrieve an existing fortiflex license (entitlement)
186
-
# # "use_stopped" selects and reactivates a stopped entitlement where the description field is empty;
187
-
# # "use_active" selects one active and unused entitlement where the description field is empty.
190
+
# # "use_active": Retrieves "ACTIVE" or "PENDING" licenses. If the license is released, the license keeps "ACTIVE".
191
+
# # "use_stopped" (default behavior): Retrieves "STOPPED", "EXPIRED" or "PENDING" licenses, and changes them to "ACTIVE". If the license is released, change the license to "STOPPED".
188
192
# username = "<YOUR-OWN-VALUE>" # The username of your FortiFlex account.
189
193
# password = "<YOUR-OWN-VALUE>" # The password of your FortiFlex account.
190
194
# config = <YOUR-OWN-VALUE> # The config ID of your FortiFlex configuration.
191
195
# }
192
196
193
-
# This parameter controls the instance that runs the cloud function.
197
+
# This parameter controls the instance that runs the cloud function. For simplicity, it is recommended to use the default value.
194
198
service_config = {
195
199
max_instance_count = 1 # The limit on the maximum number of function instances that may coexist at a given time.
196
200
max_instance_request_concurrency = 3 # Sets the maximum number of concurrent requests that one cloud function can handle at the same time.
@@ -200,6 +204,12 @@ cloud_function = {
200
204
}
201
205
202
206
# additional_variables = {} # Additional Cloud Function Variables
207
+
208
+
# The following parameters are optional, and no need to be specified in most of cases
209
+
# build_service_account_email = "your-name@example.com" # The email address of the service account used to build the cloud function. This account needs to have role "roles/cloudbuild.builds.builder".
210
+
# The <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com will be used if it is not specified.
211
+
# trigger_service_account_email = "your-name@example.com" # The email address of the service account used to trigger the cloud function. This account needs to have role "roles/run.invoker".
212
+
# The default service account will be used if it is not specified.
203
213
}
204
214
```
205
215
@@ -356,6 +366,21 @@ In addition to the variable config_script, you can also save the configuration s
356
366
357
367
If you specify both config_script and config_file, this terraform project will upload both of them.
358
368
369
+
#### Others
370
+
```
371
+
# FortiManager integration
372
+
fmg_integration = {
373
+
ip = "<Your FMG IP>" # The public IP address of the FortiManager.
374
+
sn = "<Your FMG Serial Number>" # The serial number of the FortiManager.
375
+
ums = {
376
+
autoscale_psksecret = "<RANDOM-STRING>" # The secret key used to synchronize information between FortiGates.
377
+
fmg_reg_password = "fmg_reg_passwd>" # The password used to register the FortiGate to the FortiManager.
378
+
sync_interface = "port1" # The interface used to synchronize information between FortiGates.
379
+
api_key = "" # The API key used to register the FortiGate to the FortiManager. Only used when license type is BYOL.
# The e-mail address of the service account. This service account will control the cloud function created by this project.
62
+
# This service account should already have "roles/datastore.user", "roles/compute.viewer" and "roles/run.invoker".
63
+
# If this variable is not specified, the default Google Compute Engine service account is used.
63
64
```
64
65
Modify these variables based on your needs.
65
66
67
+
`service_account_email` should comply with the least privilege principle.
68
+
You can [create dedicated service account by using our GCP module](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/guide_gcp_modules.md#create-dedicated-service-account).
69
+
66
70
If you want to deploy more than one examples, please make sure the `prefix` of those examples are different.
67
71
68
72
#### FortiGate Variables:
@@ -159,14 +163,14 @@ cloud_function = {
159
163
# "fortiflex" parameters is required if license_source is "fortiflex" or "file_fortiflex"
160
164
# fortiflex = {
161
165
# retrieve_mode = "use_active" # How to retrieve an existing fortiflex license (entitlement)
162
-
# # "use_stopped" selects and reactivates a stopped entitlement where the description field is empty;
163
-
# # "use_active" selects one active and unused entitlement where the description field is empty.
166
+
# # "use_active": Retrieves "ACTIVE" or "PENDING" licenses. If the license is released, the license keeps "ACTIVE".
167
+
# # "use_stopped" (default behavior): Retrieves "STOPPED", "EXPIRED" or "PENDING" licenses, and changes them to "ACTIVE". If the license is released, change the license to "STOPPED".
164
168
# username = "<YOUR-OWN-VALUE>" # The username of your FortiFlex account.
165
169
# password = "<YOUR-OWN-VALUE>" # The password of your FortiFlex account.
166
170
# config = <YOUR-OWN-VALUE> # The config ID of your FortiFlex configuration.
167
171
# }
168
172
169
-
# This parameter controls the instance that runs the cloud function.
173
+
# This parameter controls the instance that runs the cloud function. For simplicity, it is recommended to use the default value.
170
174
service_config = {
171
175
max_instance_count = 1 # The limit on the maximum number of function instances that may coexist at a given time.
172
176
max_instance_request_concurrency = 3 # Sets the maximum number of concurrent requests that one cloud function can handle at the same time.
@@ -176,6 +180,12 @@ cloud_function = {
176
180
}
177
181
178
182
# additional_variables = {} # Additional Cloud Function Variables
183
+
184
+
# The following parameters are optional, and no need to be specified in most of cases
185
+
# build_service_account_email = "your-name@example.com" # The email address of the service account used to build the cloud function. This account needs to have role "roles/cloudbuild.builds.builder".
186
+
# The <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com will be used if it is not specified.
187
+
# trigger_service_account_email = "your-name@example.com" # The email address of the service account used to trigger the cloud function. This account needs to have role "roles/run.invoker".
188
+
# The default service account will be used if it is not specified.
179
189
}
180
190
```
181
191
Cloud Function is used to manage FGT synchronization and inject license into FGT. For more information about the Cloud Function, please check [here](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/guide_function.md).
Copy file name to clipboardExpand all lines: docs/fgt_single.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,8 @@
1
1
# Module: Single FortiGate - fgt_single
2
2
3
+
> This module is used to deploy one single FortiGate.
4
+
To deploy any Forti products (e.g., FortiGate, FortiAnalyzer, FortiManager... ), please use the module: [generic_vm_standalone](https://github.com/fortinetdev/terraform-google-cloud-modules/blob/main/docs/module_generic_vm_standalone.md).
5
+
3
6
Create a FortiGate and using existing VPCs.
4
7
5
8
## How To Deploy
@@ -8,11 +11,11 @@ You can use this module directly:
prefix = "single-fortigate" # The prefix name of all Google Cloud resources created by this module.
14
17
hostname = "single-fortigate" # The name of your FortiGate. If not set, it will be <prefix>-instance.
15
-
# password = "<Your admin password>" # Optional. If not set, it will be the GCP instance id.
18
+
# password = "<Your admin password>" # Optional. If not set, it will be the GCP instance id. This variable only works for FortiGate (Not working for FortiAnalyzer and FortiManager).
16
19
region = "us-central1" # Region to deploy FortiGate.
17
20
zone = "us-central1-a" # Zone to deploy FortiGate.
18
21
machine_type = "n1-standard-4" # The GCP Virtual Machine type to deploy FGT.
0 commit comments