{"id":24233549,"url":"https://github.com/memes/terraform-google-f5-distributed-cloud-role","last_synced_at":"2025-12-01T16:02:58.240Z","repository":{"id":65317589,"uuid":"542770467","full_name":"memes/terraform-google-f5-distributed-cloud-role","owner":"memes","description":"Terraform module to create a Google Cloud IAM role suitable for use with F5 Distributed Cloud","archived":false,"fork":false,"pushed_at":"2025-01-13T10:33:40.000Z","size":202,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-14T16:16:07.174Z","etag":null,"topics":["cloud","distributed","f5","f5-distributed-cloud","google","google-cloud","terraform","terraform-module"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/memes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2022-09-28T19:58:29.000Z","updated_at":"2024-10-29T19:14:44.000Z","dependencies_parsed_at":"2024-02-04T18:10:17.729Z","dependency_job_id":"43875b65-9ad0-4c3d-a85a-b08969641b8a","html_url":"https://github.com/memes/terraform-google-f5-distributed-cloud-role","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":"memes/repo-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-f5-distributed-cloud-role","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-f5-distributed-cloud-role/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-f5-distributed-cloud-role/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-f5-distributed-cloud-role/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memes","download_url":"https://codeload.github.com/memes/terraform-google-f5-distributed-cloud-role/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241853922,"owners_count":20031331,"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":["cloud","distributed","f5","f5-distributed-cloud","google","google-cloud","terraform","terraform-module"],"created_at":"2025-01-14T16:01:19.972Z","updated_at":"2025-12-01T16:02:58.234Z","avatar_url":"https://github.com/memes.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# F5 Distributed Cloud Role Terraform module\n\n![GitHub release](https://img.shields.io/github/v/release/memes/terraform-google-f5-distributed-cloud-role?sort=semver)\n![Maintenance](https://img.shields.io/maintenance/yes/2024)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)\n\n\u003e NOTE: As of F5 Distributed Cloud SMS v2 availability, use of this module to create a custom role is deprecated.\n\u003e Instead, you should create Customer Edge nodes directly and register those with the console. See\n\u003e https://github.com/memes/terraform-google-volterra for examples..\n\u003e \nThis Terraform module is a helper to create a custom IAM role that has the\npermissions required for F5 Distributed Cloud to manage a Google Cloud environment.\nThe role will be created in the specified project by default, but can be created\nas an *Organization role* if preferred, for reuse across projects.\n\nUnless a specific identifier is provided in the `id` variable, a semi-random\nidentifier will be generated of the form `f5_xc_xxxx` to avoid unique\nidentifier collisions during the time after a custom role is deleted but before\nit is purged from the project or organization.\n\nF5 has similar community supported modules available for [AWS](https://github.com/terraform-xc-cloud-community-modules/terraform-volterra-aws-cloud-credentials)\nand [Azure](https://github.com/terraform-xc-cloud-community-modules/terraform-volterra-azure-cloud-credentials).\n\n\u003e **NOTE:** This module is unsupported and not an official F5 product. If you\n\u003e require assistance please join our\n\u003e [Slack GCP channel](https://f5cloudsolutions.slack.com/messages/gcp) and ask!\n\n## Difference with F5 published role\n\nF5 publishes a [YAML](https://gitlab.com/volterra.io/cloud-credential-templates/-/blob/master/gcp/f5xc_gcp_vpc_role.yaml)\ndeclaration that encapsulates F5 recommended permissions in a fixed role; this\nTerraform module includes *additional permissions* that seem to be needed.\n\n### Added permissions for project-scoped role\n\n* `compute.addresses.createInternal`\n* `compute.addresses.deleteInternal`\n* `compute.addresses.list`\n* `compute.addresses.useInternal`\n\n### Added permissions for organization-scoped role\n\n* `compute.addresses.createInternal`\n* `compute.addresses.deleteInternal`\n* `compute.addresses.list`\n* `compute.addresses.useInternal`\n* `resourcemanager.projects.list`\n\n## Examples\n\n### Create the custom role at the project, and assign to an existing service account\n\nSee [Simple project role](examples/simple_project_role) example for more details.\n\n\u003c!-- spell-checker: disable --\u003e\n```hcl\nmodule \"role\" {\n  source    = \"memes/f5-distributed-cloud-role/google\"\n  version   = \"1.0.9\"\n  target_id = \"my-project-id\"\n  members   = [\"serviceAccount:f5-xc@my-project-id.iam.gserviceaccount.com\"]\n}\n```\n\u003c!-- spell-checker: enable --\u003e\n\n### Create the custom role for entire org, but do not explicitly assign membership\n\nSee [Simple org role](examples/simple_org_role) example for more details.\n\n\u003c!-- spell-checker: disable --\u003e\n```hcl\nmodule \"org_role\" {\n  source      = \"memes/f5-distributed-cloud-role/google\"\n  version     = \"1.0.9\"\n  target_type = \"org\"\n  target_id   = \"my-org-id\"\n}\n```\n\u003c!-- spell-checker: enable --\u003e\n\n### Create the custom role in the project with a fixed id, and assign to a service account\n\nSee [Fixed id](examples/fixed_id) example for more details.\n\n\u003c!-- spell-checker: disable --\u003e\n```hcl\nmodule \"role\" {\n  source    = \"memes/f5-distributed-cloud-role/google\"\n  version   = \"1.0.9\"\n  id        = \"my_custom_role\"\n  target_id = \"my-project-id\"\n  title     = \"An example F5 Distributed Cloud custom role\"\n  members   = [\"serviceAccount:f5-xc@my-project-id.iam.gserviceaccount.com\"]\n}\n```\n\u003c!-- spell-checker: enable --\u003e\n\n### F5 XC Cloud Credential\n\nDeeper examples that show how to create a service account, add the custom role,\nand create a Cloud Credential that can be used for GPC VPC Sites in XC.\n\nSee [Blindfold Cloud Credential](examples/blindfold_cloud_credential) and\n[Plaintext Cloud Credential](examples/cloud_credential) examples for full details.\n\n\u003c!-- spell-checker:ignore markdownlint --\u003e\n\u003c!-- markdownlint-disable MD033 MD034 --\u003e\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.3 |\n| \u003ca name=\"requirement_google\"\u003e\u003c/a\u003e [google](#requirement\\_google) | \u003e= 4.38, \u003c 7.0 |\n| \u003ca name=\"requirement_random\"\u003e\u003c/a\u003e [random](#requirement\\_random) | \u003e= 3.4 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_role\"\u003e\u003c/a\u003e [role](#module\\_role) | terraform-google-modules/iam/google//modules/custom_role_iam | 8.1.0 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [random_id.role_id](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/id) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_target_id\"\u003e\u003c/a\u003e [target\\_id](#input\\_target\\_id) | Sets the target for role creation; must be either an organization ID (target\\_type = 'org'),\u003cbr/\u003eor project ID (target\\_type = 'project'). | `string` | n/a | yes |\n| \u003ca name=\"input_description\"\u003e\u003c/a\u003e [description](#input\\_description) | The optional description to assign to the custom IAM role. If left blank (default),\u003cbr/\u003ea suitable description will be created. | `string` | `null` | no |\n| \u003ca name=\"input_id\"\u003e\u003c/a\u003e [id](#input\\_id) | An identifier to use for the new role; default is an empty string which will\u003cbr/\u003egenerate a unique identifier. If a value is provided, it must be unique at the\u003cbr/\u003eorganization or project level depending on value of target\\_type respectively.\u003cbr/\u003eE.g. multiple projects can all have a 'f5\\_xc' role defined, but an organization\u003cbr/\u003elevel role must be uniquely named. | `string` | `null` | no |\n| \u003ca name=\"input_members\"\u003e\u003c/a\u003e [members](#input\\_members) | An optional list of accounts that will be assigned the custom role. Default is\u003cbr/\u003ean empty list. | `list(string)` | `[]` | no |\n| \u003ca name=\"input_random_id_prefix\"\u003e\u003c/a\u003e [random\\_id\\_prefix](#input\\_random\\_id\\_prefix) | The prefix to use when generating random role identifier for the new role if\u003cbr/\u003e`id` field is blank. The default is 'f5\\_xc' which will generate a unique role\u003cbr/\u003eidentifier of the form 'f5\\_xc\\_XXXX', where XXXX is a random hex string. | `string` | `\"f5_xc\"` | no |\n| \u003ca name=\"input_target_type\"\u003e\u003c/a\u003e [target\\_type](#input\\_target\\_type) | Determines if the F5 Distributed Cloud role is to be created for the whole\u003cbr/\u003eorganization ('org') or at a 'project' level. Default is 'project'. | `string` | `\"project\"` | no |\n| \u003ca name=\"input_title\"\u003e\u003c/a\u003e [title](#input\\_title) | The human-readable title to assign to the custom IAM role. If left blank (default),\u003cbr/\u003ea suitable title will be created. | `string` | `null` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_qualified_role_id\"\u003e\u003c/a\u003e [qualified\\_role\\_id](#output\\_qualified\\_role\\_id) | The qualified role-id for the custom CFE role. |\n\u003c!-- END_TF_DOCS --\u003e\n\u003c!-- markdownlint-enable MD033 MD034 --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemes%2Fterraform-google-f5-distributed-cloud-role","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemes%2Fterraform-google-f5-distributed-cloud-role","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemes%2Fterraform-google-f5-distributed-cloud-role/lists"}