{"id":15533930,"url":"https://github.com/jasonwalsh/terraform-aws-boundary","last_synced_at":"2025-04-23T13:45:14.490Z","repository":{"id":37939075,"uuid":"304695063","full_name":"jasonwalsh/terraform-aws-boundary","owner":"jasonwalsh","description":"A Terraform module for creating a HA Boundary cluster in AWS","archived":false,"fork":false,"pushed_at":"2023-03-21T12:29:52.000Z","size":45,"stargazers_count":17,"open_issues_count":3,"forks_count":19,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-18T00:54:48.853Z","etag":null,"topics":["aws","boundary","hashicorp","terraform"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/modules/jasonwalsh/boundary/aws/latest","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jasonwalsh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-16T17:28:24.000Z","updated_at":"2023-12-15T20:59:09.000Z","dependencies_parsed_at":"2024-10-02T11:40:37.591Z","dependency_job_id":"302f1200-228a-4e6b-91f6-903d8b71fdda","html_url":"https://github.com/jasonwalsh/terraform-aws-boundary","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonwalsh%2Fterraform-aws-boundary","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonwalsh%2Fterraform-aws-boundary/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonwalsh%2Fterraform-aws-boundary/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jasonwalsh%2Fterraform-aws-boundary/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jasonwalsh","download_url":"https://codeload.github.com/jasonwalsh/terraform-aws-boundary/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250442048,"owners_count":21431254,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","boundary","hashicorp","terraform"],"created_at":"2024-10-02T11:40:28.789Z","updated_at":"2025-04-23T13:45:14.468Z","avatar_url":"https://github.com/jasonwalsh.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Contents\n\n- [Usage](#usage)\n- [Life cycle](#life-cycle)\n- [Contributing](#contributing)\n- [Inputs](#inputs)\n- [Outputs](#outputs)\n- [License](#license)\n\n**Note:** Like HashiCorp Boundary, this module is relatively new and may contain some issues. If you do experience an issue, please create a [new issue](https://github.com/jasonwalsh/terraform-aws-boundary/issues) in the repository. Pull requests are also welcome!\n\n## Usage\n\nThis module uses Terraform to install [HashiCorp Boundary](https://www.boundaryproject.io/) in an Amazon Web Services (AWS) account.\n\nThis module uses the [official documentation](https://www.boundaryproject.io/docs/installing/high-availability) to install a highly available service.\n\n![high-availability-service](https://www.boundaryproject.io/img/production.png)\n\nThis module creates the following resources:\n\n- A virtual private cloud with all associated networking resources (e.g., public and private subnets, route tables, internet gateways, NAT gateways, etc)\n- A PostgreSQL RDS instance used by the [Boundary controllers](https://www.boundaryproject.io/docs/installing/postgres)\n- Two [AWS KMS](https://www.boundaryproject.io/docs/configuration/kms/awskms) keys, one for `root` and the other for `worker-auth`\n- An application load balancer (ALB) that serves as a gateway to the Boundary UI/API\n- Two auto scaling groups, one for controller instances and the other for worker instances\n\nFor more information on Boundary, please visit the [official documentation](https://www.boundaryproject.io/docs) or the [tutorials](https://learn.hashicorp.com/boundary) on HashiCorp Learn.\n\nTo use this module, the following environment variables are required:\n\n| Name |\n|------|\n| `AWS_ACCESS_KEY_ID` |\n| `AWS_SECRET_ACCESS_KEY` |\n| `AWS_DEFAULT_REGION` |\n\nAfter exporting the environment variables, simply run the following command:\n\n```\n$ terraform apply\n```\n\n## Life cycle\n\nThis module creates the controller instances *before* the worker instances. This implicit dependency ensures that the controller and worker instances share the same `worker-auth` KMS key.\n\nThe [controller](modules/controller) module also initializes the PostgreSQL database using the following command:\n\n```\n$ boundary database init -config /etc/boundary/configuration.hcl\n```\n\nAfter initializing the database, Boundary outputs information required to authenticate as defined [here](https://learn.hashicorp.com/tutorials/boundary/getting-started-dev?in=boundary/getting-started). Notably, the Auth Method ID, Login Name, and Password are generated.\n\nSince initializing the database is a one-time operation, this module writes the output of the command to an S3 bucket so that the user always has access to this information.\n\nIn order to retrieve the information, you can invoke the following command:\n\n```\n$ $(terraform output s3command)\n```\n\n**Note:** The `$` before the `(` is required to run this command.\n\nThe result of running the command displays the contents of the [`cloud-init-output.log`](https://cloudinit.readthedocs.io/en/latest/topics/logging.html), which contains the output of the `boundary database init` command.\n\nAfter you run this command, you can visit the Boundary UI using the `dns_name` output.\n\nTo authenticate to Boundary, you can reference [this](https://learn.hashicorp.com/tutorials/boundary/getting-started-connect?in=boundary/getting-started) guide.\n\n**Note:** If you attempt to run the `authenticate` command and are met with this error `Error trying to perform authentication: dial tcp 127.0.0.1:9200: connect: connection refused`, you can export the `BOUNDARY_ADDR` environment variable to the value of the DNS name of the ALB. For example:\n\n```\nexport BOUNDARY_ADDR=\"http://$(terraform output dns_name)\"\n```\n\n## Contributing\n\nAs mentioned in the beginning of the README, this module is relatively new and may have issues. If you do discover an issue, please create a [new issue](https://github.com/jasonwalsh/terraform-aws-boundary/issues) or a [pull request](https://github.com/jasonwalsh/terraform-aws-boundary/pulls).\n\nAs always, thanks for using this module!\n\n\u003c!-- BEGINNING OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| terraform | ~\u003e 1.0 |\n| terraform | \u003e= 0.13 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| aws | n/a |\n| random | n/a |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| boundary\\_release | The version of Boundary to install | `string` | `\"0.1.0\"` | no |\n| cidr\\_block | The IPv4 network range for the VPC, in CIDR notation. For example, 10.0.0.0/16. | `string` | `\"10.0.0.0/16\"` | no |\n| controller\\_desired\\_capacity | The capacity the controller Auto Scaling group attempts to maintain | `number` | `3` | no |\n| controller\\_instance\\_type | Specifies the instance type of the controller EC2 instance | `string` | `\"t3.small\"` | no |\n| controller\\_max\\_size | The maximum size of the controller group | `number` | `3` | no |\n| controller\\_min\\_size | The minimum size of the controller group | `number` | `3` | no |\n| key\\_name | The name of the key pair | `string` | `\"\"` | no |\n| private\\_subnets | List of private subnets | `list(string)` | `[]` | no |\n| public\\_subnets | List of public subnets | `list(string)` | `[]` | no |\n| tags | One or more tags | `map(string)` | `{}` | no |\n| vpc\\_id | The ID of the VPC | `string` | `\"\"` | no |\n| worker\\_desired\\_capacity | The capacity the worker Auto Scaling group attempts to maintain | `number` | `3` | no |\n| worker\\_instance\\_type | Specifies the instance type of the worker EC2 instance | `string` | `\"t3.small\"` | no |\n| worker\\_max\\_size | The maximum size of the worker group | `number` | `3` | no |\n| worker\\_min\\_size | The minimum size of the worker group | `number` | `3` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| dns\\_name | The public DNS name of the controller load balancer |\n| s3command | The S3 cp command used to display the contents of the cloud-init-output.log |\n\n\u003c!-- END OF PRE-COMMIT-TERRAFORM DOCS HOOK --\u003e\n\n## License\n\n[MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjasonwalsh%2Fterraform-aws-boundary","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjasonwalsh%2Fterraform-aws-boundary","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjasonwalsh%2Fterraform-aws-boundary/lists"}