|
| 1 | +# Copyright 2025 Google LLC |
| 2 | +# |
| 3 | +# Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 | +# you may not use this file except in compliance with the License. |
| 5 | +# You may obtain a copy of the License at |
| 6 | +# |
| 7 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 8 | +# |
| 9 | +# Unless required by applicable law or agreed to in writing, software |
| 10 | +# distributed under the License is distributed on an "AS IS" BASIS, |
| 11 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 | +# See the License for the specific language governing permissions and |
| 13 | +# limitations under the License. |
| 14 | + |
| 15 | +apiVersion: blueprints.cloud.google.com/v1alpha1 |
| 16 | +kind: BlueprintMetadata |
| 17 | +metadata: |
| 18 | + name: terraform-google-address |
| 19 | + annotations: |
| 20 | + config.kubernetes.io/local-config: "true" |
| 21 | +spec: |
| 22 | + info: |
| 23 | + source: |
| 24 | + repo: https://github.com/terraform-google-modules/terraform-google-address.git |
| 25 | + sourceType: git |
| 26 | + version: 4.2.2 |
| 27 | + actuationTool: |
| 28 | + flavor: Terraform |
| 29 | + version: ">= 0.13" |
| 30 | + description: {} |
| 31 | + content: |
| 32 | + examples: |
| 33 | + - name: dns_forward_and_reverse |
| 34 | + location: examples/dns_forward_and_reverse |
| 35 | + - name: dns_forward_example |
| 36 | + location: examples/dns_forward_example |
| 37 | + - name: dns_forward_example_multi_names |
| 38 | + location: examples/dns_forward_example_multi_names |
| 39 | + - name: global_external_address |
| 40 | + location: examples/global_external_address |
| 41 | + - name: internal_with_dynamic_ip |
| 42 | + location: examples/internal_with_dynamic_ip |
| 43 | + - name: internal_with_specific_ip |
| 44 | + location: examples/internal_with_specific_ip |
| 45 | + - name: ip_address_only |
| 46 | + location: examples/ip_address_only |
| 47 | + - name: ip_address_with_specific_ip |
| 48 | + location: examples/ip_address_with_specific_ip |
| 49 | + - name: regional_external_address |
| 50 | + location: examples/regional_external_address |
| 51 | + interfaces: |
| 52 | + variables: |
| 53 | + - name: project_id |
| 54 | + description: The project ID to create the address in |
| 55 | + varType: string |
| 56 | + required: true |
| 57 | + - name: region |
| 58 | + description: The region to create the address in |
| 59 | + varType: string |
| 60 | + required: true |
| 61 | + - name: names |
| 62 | + description: A list of IP address resource names to create. This is the GCP resource name and not the associated hostname of the IP address. Existing resource names may be found with `gcloud compute addresses list` (e.g. ["gusw1-dev-fooapp-fe-0001-a-001-ip"]) |
| 63 | + varType: list(string) |
| 64 | + defaultValue: [] |
| 65 | + - name: addresses |
| 66 | + description: A list of IP addresses to create. GCP will reserve unreserved addresses if given the value "". If multiple names are given the default value is sufficient to have multiple addresses automatically picked for each name. |
| 67 | + varType: list(string) |
| 68 | + defaultValue: |
| 69 | + - "" |
| 70 | + - name: global |
| 71 | + description: The scope in which the address should live. If set to true, the IP address will be globally scoped. Defaults to false, i.e. regionally scoped. When set to true, do not provide a subnetwork. |
| 72 | + varType: bool |
| 73 | + defaultValue: false |
| 74 | + - name: dns_short_names |
| 75 | + description: A list of DNS short names to register within Cloud DNS. Names corresponding to addresses must align by their list index position in the two input variables, `names` and `dns_short_names`. If an empty list, no domain names are registered. Multiple names may be registered to the same address by passing a single element list to names and multiple elements to dns_short_names. (e.g. ["gusw1-dev-fooapp-fe-0001-a-001"]) |
| 76 | + varType: list(string) |
| 77 | + defaultValue: [] |
| 78 | + - name: dns_domain |
| 79 | + description: The domain to append to DNS short names when registering in Cloud DNS. |
| 80 | + varType: string |
| 81 | + defaultValue: "" |
| 82 | + - name: dns_project |
| 83 | + description: The project where DNS A records will be configured. |
| 84 | + varType: string |
| 85 | + defaultValue: "" |
| 86 | + connections: |
| 87 | + - source: |
| 88 | + source: https://github.com/terraform-google-modules/terraform-google-cloud-dns |
| 89 | + version: ~> 5.2 |
| 90 | + spec: |
| 91 | + outputExpr: project_id |
| 92 | + - name: dns_ttl |
| 93 | + description: The DNS TTL in seconds for records created in Cloud DNS. The default value should be used unless the application demands special handling. |
| 94 | + varType: number |
| 95 | + defaultValue: 300 |
| 96 | + - name: dns_managed_zone |
| 97 | + description: The name of the managed zone to create records within. This managed zone must exist in the host project. |
| 98 | + varType: string |
| 99 | + defaultValue: "" |
| 100 | + connections: |
| 101 | + - source: |
| 102 | + source: https://github.com/terraform-google-modules/terraform-google-cloud-dns |
| 103 | + version: ~> 5.2 |
| 104 | + spec: |
| 105 | + outputExpr: name |
| 106 | + - name: dns_reverse_zone |
| 107 | + description: The name of the managed zone to create PTR records within. This managed zone must exist in the host project. |
| 108 | + varType: string |
| 109 | + defaultValue: "" |
| 110 | + - name: dns_record_type |
| 111 | + description: The type of records to create in the managed zone. (e.g. "A") |
| 112 | + varType: string |
| 113 | + defaultValue: A |
| 114 | + - name: subnetwork |
| 115 | + description: The subnet containing the address. For EXTERNAL addresses use the empty string, "". (e.g. "projects/<project-name>/regions/<region-name>/subnetworks/<subnetwork-name>") |
| 116 | + varType: string |
| 117 | + defaultValue: "" |
| 118 | + connections: |
| 119 | + - source: |
| 120 | + source: github.com/terraform-google-modules/terraform-google-network//modules/subnets |
| 121 | + version: ~> 6.0 |
| 122 | + spec: |
| 123 | + outputExpr: subnets[0].self_link |
| 124 | + - name: address_type |
| 125 | + description: The type of address to reserve, either "INTERNAL" or "EXTERNAL". If unspecified, defaults to "INTERNAL". |
| 126 | + varType: string |
| 127 | + defaultValue: INTERNAL |
| 128 | + - name: enable_cloud_dns |
| 129 | + description: If a value is set, register records in Cloud DNS. |
| 130 | + varType: bool |
| 131 | + defaultValue: false |
| 132 | + - name: enable_reverse_dns |
| 133 | + description: If a value is set, register reverse DNS PTR records in Cloud DNS in the managed zone specified by dns_reverse_zone |
| 134 | + varType: bool |
| 135 | + defaultValue: false |
| 136 | + - name: purpose |
| 137 | + description: The purpose of the resource(GCE_ENDPOINT, SHARED_LOADBALANCER_VIP, VPC_PEERING). |
| 138 | + varType: string |
| 139 | + defaultValue: GCE_ENDPOINT |
| 140 | + - name: network_tier |
| 141 | + description: The networking tier used for configuring this address. |
| 142 | + varType: string |
| 143 | + defaultValue: PREMIUM |
| 144 | + - name: prefix_length |
| 145 | + description: The prefix length of the IP range. |
| 146 | + varType: number |
| 147 | + defaultValue: 16 |
| 148 | + - name: ip_version |
| 149 | + description: The IP Version that will be used by this address. |
| 150 | + varType: string |
| 151 | + defaultValue: IPV4 |
| 152 | + - name: labels |
| 153 | + description: Labels to apply to this address. |
| 154 | + varType: map(string) |
| 155 | + defaultValue: {} |
| 156 | + - name: descriptions |
| 157 | + description: A list of descriptions to add to each address. |
| 158 | + varType: list(string) |
| 159 | + defaultValue: [] |
| 160 | + outputs: |
| 161 | + - name: addresses |
| 162 | + description: List of address values managed by this module (e.g. ["1.2.3.4"]) |
| 163 | + type: |
| 164 | + - tuple |
| 165 | + - [] |
| 166 | + - name: dns_fqdns |
| 167 | + description: List of DNS fully qualified domain names registered in Cloud DNS. (e.g. ["gusw1-dev-fooapp-fe-0001-a-001.example.com", "gusw1-dev-fooapp-fe-0001-a-0002.example.com"]) |
| 168 | + type: |
| 169 | + - list |
| 170 | + - string |
| 171 | + - name: names |
| 172 | + description: List of address resource names managed by this module (e.g. ["gusw1-dev-fooapp-fe-0001-a-0001-ip"]) |
| 173 | + type: |
| 174 | + - tuple |
| 175 | + - [] |
| 176 | + - name: reverse_dns_fqdns |
| 177 | + description: List of reverse DNS PTR records registered in Cloud DNS. (e.g. ["1.2.11.10.in-addr.arpa", "2.2.11.10.in-addr.arpa"]) |
| 178 | + type: |
| 179 | + - tuple |
| 180 | + - [] |
| 181 | + - name: self_links |
| 182 | + description: List of URIs of the created address resources |
| 183 | + type: |
| 184 | + - tuple |
| 185 | + - [] |
| 186 | + requirements: |
| 187 | + roles: |
| 188 | + - level: Project |
| 189 | + roles: |
| 190 | + - roles/compute.networkAdmin |
| 191 | + - roles/dns.admin |
| 192 | + - roles/iam.serviceAccountUser |
| 193 | + services: |
| 194 | + - oslogin.googleapis.com |
| 195 | + - cloudresourcemanager.googleapis.com |
| 196 | + - compute.googleapis.com |
| 197 | + - dns.googleapis.com |
| 198 | + providerVersions: |
| 199 | + - source: hashicorp/google |
| 200 | + version: ">= 5.2, < 8" |
0 commit comments