generated from cloudposse-terraform-components/template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
351 additions
and
153 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,7 @@ | ||
# Upstream changes from _extends are only recognized when modifications are made to this file in the default branch. | ||
_extends: .github | ||
repository: | ||
name: template | ||
description: Template for Terraform Components | ||
name: aws-zscaler | ||
description: This component is responsible for provisioning ZScaler Private Access Connector instances on Amazon Linux 2 AMIs | ||
homepage: https://cloudposse.com/accelerate | ||
topics: terraform, terraform-component | ||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,70 +1,149 @@ | ||
name: "template" | ||
|
||
name: "aws-zscaler" | ||
# Canonical GitHub repo | ||
github_repo: "cloudposse-terraform-components/template" | ||
|
||
github_repo: "cloudposse-terraform-components/aws-zscaler" | ||
# Short description of this project | ||
description: |- | ||
Description of this component | ||
This component is responsible for provisioning ZScaler Private Access Connector instances on Amazon Linux 2 AMIs. | ||
Prior to provisioning this component, it is required that a SecureString SSM Parameter containing the ZScaler App | ||
Connector Provisioning Key is populated in each account corresponding to the regional stack the component is deployed | ||
to, with the name of the SSM Parameter matching the value of `var.zscaler_key`. | ||
This parameter should be populated using `chamber`, which is included in the geodesic image: | ||
``` | ||
chamber write zscaler key <value> | ||
``` | ||
Where `<value>` is the ZScaler App Connector Provisioning Key. For more information on how to generate this key, see: | ||
[ZScaler documentation on Configuring App Connectors](https://help.zscaler.com/zpa/configuring-connectors). | ||
usage: |- | ||
**Stack Level**: Regional or Test47 | ||
## Usage | ||
**Stack Level**: Regional | ||
The typical stack configuration for this component is as follows: | ||
Here's an example snippet for how to use this component. | ||
```yaml | ||
components: | ||
terraform: | ||
foo: | ||
zscaler: | ||
vars: | ||
enabled: true | ||
zscaler_count: 2 | ||
``` | ||
include: | ||
- "docs/terraform.md" | ||
Preferably, regional stack configurations can be kept _DRY_ by importing `catalog/zscaler` via the `imports` list at the | ||
top of the configuration. | ||
tags: | ||
- terraform | ||
- terraform-modules | ||
- aws | ||
- components | ||
- terraform-components | ||
- root | ||
- geodesic | ||
- reference-implementation | ||
- reference-architecture | ||
``` | ||
import: | ||
... | ||
- catalog/zscaler | ||
``` | ||
<!-- prettier-ignore-start --> | ||
<!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --> | ||
## Requirements | ||
| Name | Version | | ||
|------|---------| | ||
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 0.13.0 | | ||
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 3.0 | | ||
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 3.0 | | ||
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.0 | | ||
| <a name="requirement_template"></a> [template](#requirement\_template) | >= 2.2 | | ||
| <a name="requirement_utils"></a> [utils](#requirement\_utils) | >= 1.10.0 | | ||
## Providers | ||
| Name | Version | | ||
|------|---------| | ||
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 3.0 | | ||
| <a name="provider_template"></a> [template](#provider\_template) | >= 2.2 | | ||
## Modules | ||
| Name | Source | Version | | ||
|------|--------|---------| | ||
| <a name="module_ec2_zscaler"></a> [ec2\_zscaler](#module\_ec2\_zscaler) | cloudposse/ec2-instance/aws | 0.32.2 | | ||
| <a name="module_iam_roles"></a> [iam\_roles](#module\_iam\_roles) | ../account-map/modules/iam-roles | n/a | | ||
| <a name="module_this"></a> [this](#module\_this) | cloudposse/label/null | 0.24.1 | | ||
## Resources | ||
| Name | Type | | ||
|------|------| | ||
| [aws_iam_role_policy_attachment.ssm_core](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role_policy_attachment) | resource | | ||
| [aws_ami.amazon_linux_2](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ami) | data source | | ||
| [aws_ssm_parameter.zscaler_key](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source | | ||
| [template_file.userdata](https://registry.terraform.io/providers/cloudposse/template/latest/docs/data-sources/file) | data source | | ||
## Inputs | ||
| Name | Description | Type | Default | Required | | ||
|------|-------------|------|---------|:--------:| | ||
| <a name="input_additional_tag_map"></a> [additional\_tag\_map](#input\_additional\_tag\_map) | Additional tags for appending to tags\_as\_list\_of\_maps. Not added to `tags`. | `map(string)` | `{}` | no | | ||
| <a name="input_ami_owner"></a> [ami\_owner](#input\_ami\_owner) | The owner of the AMI used for the ZScaler EC2 instances. | `string` | `"amazon"` | no | | ||
| <a name="input_ami_regex"></a> [ami\_regex](#input\_ami\_regex) | The regex used to match the latest AMI to be used for the ZScaler EC2 instances. | `string` | `"^amzn2-ami-hvm.*"` | no | | ||
| <a name="input_attributes"></a> [attributes](#input\_attributes) | Additional attributes (e.g. `1`) | `list(string)` | `[]` | no | | ||
| <a name="input_aws_ssm_enabled"></a> [aws\_ssm\_enabled](#input\_aws\_ssm\_enabled) | Set true to install the AWS SSM agent on each EC2 instances. | `bool` | `true` | no | | ||
| <a name="input_context"></a> [context](#input\_context) | Single object for setting entire context at once.<br>See description of individual variables for details.<br>Leave string and numeric variables as `null` to use default value.<br>Individual variable settings (non-null) override settings in context object,<br>except for attributes, tags, and additional\_tag\_map, which are merged. | `any` | <pre>{<br> "additional_tag_map": {},<br> "attributes": [],<br> "delimiter": null,<br> "enabled": true,<br> "environment": null,<br> "id_length_limit": null,<br> "label_key_case": null,<br> "label_order": [],<br> "label_value_case": null,<br> "name": null,<br> "namespace": null,<br> "regex_replace_chars": null,<br> "stage": null,<br> "tags": {}<br>}</pre> | no | | ||
| <a name="input_delimiter"></a> [delimiter](#input\_delimiter) | Delimiter to be used between `namespace`, `environment`, `stage`, `name` and `attributes`.<br>Defaults to `-` (hyphen). Set to `""` to use no delimiter at all. | `string` | `null` | no | | ||
| <a name="input_enabled"></a> [enabled](#input\_enabled) | Set to false to prevent the module from creating any resources | `bool` | `null` | no | | ||
| <a name="input_environment"></a> [environment](#input\_environment) | Environment, e.g. 'uw2', 'us-west-2', OR 'prod', 'staging', 'dev', 'UAT' | `string` | `null` | no | | ||
| <a name="input_id_length_limit"></a> [id\_length\_limit](#input\_id\_length\_limit) | Limit `id` to this many characters (minimum 6).<br>Set to `0` for unlimited length.<br>Set to `null` for default, which is `0`.<br>Does not affect `id_full`. | `number` | `null` | no | | ||
| <a name="input_instance_type"></a> [instance\_type](#input\_instance\_type) | The instance family to use for the ZScaler EC2 instances. | `string` | `"m5n.large"` | no | | ||
| <a name="input_label_key_case"></a> [label\_key\_case](#input\_label\_key\_case) | The letter case of label keys (`tag` names) (i.e. `name`, `namespace`, `environment`, `stage`, `attributes`) to use in `tags`.<br>Possible values: `lower`, `title`, `upper`.<br>Default value: `title`. | `string` | `null` | no | | ||
| <a name="input_label_order"></a> [label\_order](#input\_label\_order) | The naming order of the id output and Name tag.<br>Defaults to ["namespace", "environment", "stage", "name", "attributes"].<br>You can omit any of the 5 elements, but at least one must be present. | `list(string)` | `null` | no | | ||
| <a name="input_label_value_case"></a> [label\_value\_case](#input\_label\_value\_case) | The letter case of output label values (also used in `tags` and `id`).<br>Possible values: `lower`, `title`, `upper` and `none` (no transformation).<br>Default value: `lower`. | `string` | `null` | no | | ||
| <a name="input_name"></a> [name](#input\_name) | Solution name, e.g. 'app' or 'jenkins' | `string` | `null` | no | | ||
| <a name="input_namespace"></a> [namespace](#input\_namespace) | Namespace, which could be your organization name or abbreviation, e.g. 'eg' or 'cp' | `string` | `null` | no | | ||
| <a name="input_regex_replace_chars"></a> [regex\_replace\_chars](#input\_regex\_replace\_chars) | Regex to replace chars with empty string in `namespace`, `environment`, `stage` and `name`.<br>If not set, `"/[^a-zA-Z0-9-]/"` is used to remove all characters other than hyphens, letters and digits. | `string` | `null` | no | | ||
| <a name="input_region"></a> [region](#input\_region) | AWS region | `string` | n/a | yes | | ||
| <a name="input_secrets_store_type"></a> [secrets\_store\_type](#input\_secrets\_store\_type) | Secret store type for Zscaler provisioning keys. Valid values: `SSM`, `ASM` (but `ASM` not currently supported) | `string` | `"SSM"` | no | | ||
| <a name="input_security_group_rules"></a> [security\_group\_rules](#input\_security\_group\_rules) | A list of maps of Security Group rules.<br>The values of map is fully completed with `aws_security_group_rule` resource.<br>To get more info see [security\_group\_rule](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/security_group_rule). | `list(any)` | <pre>[<br> {<br> "cidr_blocks": [<br> "0.0.0.0/0"<br> ],<br> "from_port": 0,<br> "protocol": "-1",<br> "to_port": 65535,<br> "type": "egress"<br> }<br>]</pre> | no | | ||
| <a name="input_stage"></a> [stage](#input\_stage) | Stage, e.g. 'prod', 'staging', 'dev', OR 'source', 'build', 'test', 'deploy', 'release' | `string` | `null` | no | | ||
| <a name="input_tags"></a> [tags](#input\_tags) | Additional tags (e.g. `map('BusinessUnit','XYZ')` | `map(string)` | `{}` | no | | ||
| <a name="input_zscaler_count"></a> [zscaler\_count](#input\_zscaler\_count) | The number of Zscaler instances. | `number` | `1` | no | | ||
| <a name="input_zscaler_key"></a> [zscaler\_key](#input\_zscaler\_key) | SSM key (without leading `/`) for the Zscaler provisioning key secret. | `string` | `"zscaler/key"` | no | | ||
## Outputs | ||
| Name | Description | | ||
|------|-------------| | ||
| <a name="output_instance_id"></a> [instance\_id](#output\_instance\_id) | Instance ID | | ||
| <a name="output_private_ip"></a> [private\_ip](#output\_private\_ip) | Private IP of the instance | | ||
<!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --> | ||
<!-- prettier-ignore-end --> | ||
## References | ||
- [cloudposse/terraform-aws-components](https://github.com/cloudposse/terraform-aws-components/tree/main/modules/zscaler) - | ||
Cloud Posse's upstream component | ||
tags: | ||
- component/zscaler | ||
- layer/unassigned | ||
- provider/aws | ||
# Categories of this project | ||
categories: | ||
- terraform-modules/root | ||
- terraform-components | ||
|
||
- component/zscaler | ||
- layer/unassigned | ||
- provider/aws | ||
# License of this project | ||
license: "APACHE2" | ||
|
||
# Badges to display | ||
badges: | ||
- name: "Latest Release" | ||
image: "https://img.shields.io/github/release/cloudposse-terraform-components/template.svg?style=for-the-badge" | ||
url: "https://github.com/cloudposse-terraform-components/template/releases/latest" | ||
- name: "Slack Community" | ||
image: "https://slack.cloudposse.com/for-the-badge.svg" | ||
url: "https://slack.cloudposse.com" | ||
|
||
references: | ||
- name: "Cloud Posse Documentation" | ||
description: "Complete documentation for the Cloud Posse solution" | ||
url: "https://docs.cloudposse.com" | ||
- name: "Reference Architectures" | ||
description: "Launch effortlessly with our turnkey reference architectures, built either by your team or ours." | ||
url: "https://cloudposse.com/" | ||
|
||
- name: Latest Release | ||
image: https://img.shields.io/github/release/cloudposse-terraform-components/aws-zscaler.svg?style=for-the-badge | ||
url: https://github.com/cloudposse-terraform-components/aws-zscaler/releases/latest | ||
- name: Slack Community | ||
image: https://slack.cloudposse.com/for-the-badge.svg | ||
url: https://slack.cloudposse.com | ||
related: | ||
- name: "Cloud Posse Terraform Modules" | ||
description: Our collection of reusable Terraform modules used by our reference architectures. | ||
url: "https://docs.cloudposse.com/modules/" | ||
- name: "Atmos" | ||
description: "Atmos is like docker-compose but for your infrastructure" | ||
url: "https://atmos.tools" | ||
|
||
- name: "Cloud Posse Terraform Modules" | ||
description: Our collection of reusable Terraform modules used by our reference architectures. | ||
url: "https://docs.cloudposse.com/modules/" | ||
- name: "Atmos" | ||
description: "Atmos is like docker-compose but for your infrastructure" | ||
url: "https://atmos.tools" | ||
contributors: [] # If included generates contribs |
Oops, something went wrong.