Merge branch 'master' into fix/audit_exclusions
This commit is contained in:
commit
dc533718e3
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"type": "service_account",
|
||||
"project_id": "test-only"
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: 'Linting'
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- ci
|
||||
- lint
|
||||
|
||||
jobs:
|
||||
linting:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.9'
|
||||
|
||||
- name: Set up Terraform
|
||||
uses: hashicorp/setup-terraform@v1
|
||||
with:
|
||||
terraform_version: 1.0.9
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install -r tools/REQUIREMENTS.txt
|
||||
|
||||
- name: Boilerplate
|
||||
id: boilerplate
|
||||
run: |
|
||||
python3 tools/check_boilerplate.py $GITHUB_WORKSPACE
|
||||
|
||||
- name: Terraform Linting Check
|
||||
id: fmt
|
||||
run: |
|
||||
terraform fmt -recursive -check -diff $GITHUB_WORKSPACE
|
||||
|
||||
- name: Check documentation
|
||||
id: documentation
|
||||
run: |
|
||||
python3 tools/check_documentation.py cloud-operations/ data-solutions/ data-solutions/data-platform-foundations/ factories/ factories/firewall-vpc-rules/ foundations/ modules/ networking/
|
|
@ -0,0 +1,115 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: 'Tests'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '45 2 * * *'
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- ci
|
||||
- test
|
||||
|
||||
env:
|
||||
PYTEST_ADDOPTS: "--color=yes"
|
||||
|
||||
jobs:
|
||||
tests-environment:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.9'
|
||||
|
||||
- name: Set up Terraform
|
||||
uses: hashicorp/setup-terraform@v1
|
||||
with:
|
||||
terraform_version: 1.0.9
|
||||
terraform_wrapper: false
|
||||
|
||||
- name: Set environment
|
||||
run: |
|
||||
echo "GOOGLE_APPLICATION_CREDENTIALS=${GITHUB_WORKSPACE}/.github/workflows/fake-key.json" >> $GITHUB_ENV
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install -r tests/requirements.txt
|
||||
|
||||
- name: Run tests environments
|
||||
id: test-environments
|
||||
run: |
|
||||
pytest -vv tests/cloud_operations tests/data_solutions tests/factories tests/foundations tests/networking
|
||||
|
||||
tests-examples:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.9'
|
||||
|
||||
- name: Set up Terraform
|
||||
uses: hashicorp/setup-terraform@v1
|
||||
with:
|
||||
terraform_version: 1.0.9
|
||||
terraform_wrapper: false
|
||||
|
||||
- name: Set environment
|
||||
run: |
|
||||
echo "GOOGLE_APPLICATION_CREDENTIALS=${GITHUB_WORKSPACE}/.github/workflows/fake-key.json" >> $GITHUB_ENV
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install -r tests/requirements.txt
|
||||
|
||||
- name: Run tests examples
|
||||
id: test-examples
|
||||
run: |
|
||||
pytest -vv tests/examples
|
||||
|
||||
tests-modules:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.9'
|
||||
|
||||
- name: Set up Terraform
|
||||
uses: hashicorp/setup-terraform@v1
|
||||
with:
|
||||
terraform_version: 1.0.9
|
||||
terraform_wrapper: false
|
||||
|
||||
- name: Set environment
|
||||
run: |
|
||||
echo "GOOGLE_APPLICATION_CREDENTIALS=${GITHUB_WORKSPACE}/.github/workflows/fake-key.json" >> $GITHUB_ENV
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install -r tests/requirements.txt
|
||||
|
||||
- name: Run tests modules
|
||||
id: test-modules
|
||||
run: |
|
||||
pytest -vv tests/modules
|
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -3,8 +3,14 @@
|
|||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [Unreleased]
|
||||
- new `cloud-run` module
|
||||
- added gVNIC support to `compute-vm` module
|
||||
|
||||
## [8.0.0] - 2021-10-21
|
||||
|
||||
- added support for GCS notifications in `gcs` module
|
||||
- added new `skip_delete` variable to `compute-vm` module
|
||||
- **incompatible change** all modules and examples now require Terraform >= 1.0.0 and Google provider >= 4.0.0
|
||||
|
||||
## [7.0.0] - 2021-10-21
|
||||
|
||||
|
@ -370,7 +376,9 @@ All notable changes to this project will be documented in this file.
|
|||
|
||||
- merge development branch with suite of new modules and end-to-end examples
|
||||
|
||||
[Unreleased]: https://github.com/terraform-google-modules/cloud-foundation-fabric/compare/v6.0.0...HEAD
|
||||
[Unreleased]: https://github.com/terraform-google-modules/cloud-foundation-fabric/compare/v8.0.0...HEAD
|
||||
[8.0.0]: https://github.com/terraform-google-modules/cloud-foundation-fabric/compare/v7.0.0...v8.0.0
|
||||
[7.0.0]: https://github.com/terraform-google-modules/cloud-foundation-fabric/compare/v6.0.0...v7.0.0
|
||||
[6.0.0]: https://github.com/terraform-google-modules/cloud-foundation-fabric/compare/v5.1.0...v6.0.0
|
||||
[5.1.0]: https://github.com/terraform-google-modules/cloud-foundation-fabric/compare/v5.0.0...v5.1.0
|
||||
[5.0.0]: https://github.com/terraform-google-modules/cloud-foundation-fabric/compare/v4.9.0...v5.0.0
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
<p align="center">
|
||||
<img src="assets/logos/fabric-logo-colors-800.png?raw=true" alt="Cloud Foundation Fabric">
|
||||
</p>
|
||||
|
||||
# Terraform Examples and Modules for Google Cloud
|
||||
|
||||
This repository provides **end-to-end examples** and a **suite of Terraform modules** for Google Cloud, which support different use cases:
|
||||
|
@ -41,6 +45,6 @@ Currently available modules:
|
|||
- **data** - [GCS](./modules/gcs), [BigQuery dataset](./modules/bigquery-dataset), [Pub/Sub](./modules/pubsub), [Datafusion](./modules/datafusion), [Bigtable instance](./modules/bigtable-instance), [Cloud SQL instance](./modules/cloudsql-instance)
|
||||
- **development** - [Cloud Source Repository](./modules/source-repository), [Container Registry](./modules/container-registry), [Artifact Registry](./modules/artifact-registry), [Apigee Organization](./modules/apigee-organization), [Apigee X Instance](./modules/apigee-x-instance)
|
||||
- **security** - [KMS](./modules/kms), [SecretManager](./modules/secret-manager), [VPC Service Control](./modules/vpc-sc)
|
||||
- **serverless** - [Cloud Function](./modules/cloud-function)
|
||||
- **serverless** - [Cloud Function](./modules/cloud-function), [Cloud Run](./modules/cloud-run)
|
||||
|
||||
For more information and usage examples see each module's README file.
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
# Logo Specifications
|
||||
|
||||
- [font used](https://fonts.google.com/specimen/Encode+Sans+Condensed?category=Sans+Serif,Display&query=condensed&preview.text=fabric&preview.text_type=custom&preview.size=72)
|
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
Binary file not shown.
After Width: | Height: | Size: 150 KiB |
|
@ -0,0 +1,224 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="269.54245mm"
|
||||
height="90.242683mm"
|
||||
viewBox="0 0 269.54245 90.242683"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
|
||||
sodipodi:docname="fabric6.svg"
|
||||
inkscape:export-filename="/Users/taneli/Downloads/fabric-v5-colors.png"
|
||||
inkscape:export-xdpi="959.14001"
|
||||
inkscape:export-ydpi="959.14001"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:zoom="1.0532937"
|
||||
inkscape:cx="371.2165"
|
||||
inkscape:cy="160.92378"
|
||||
inkscape:window-width="1912"
|
||||
inkscape:window-height="1031"
|
||||
inkscape:window-x="730"
|
||||
inkscape:window-y="1073"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="g69"
|
||||
width="327mm"
|
||||
inkscape:snap-text-baseline="false"
|
||||
fit-margin-top="3"
|
||||
fit-margin-left="3"
|
||||
fit-margin-right="3"
|
||||
fit-margin-bottom="3">
|
||||
<sodipodi:guide
|
||||
position="-126.64334,3.7372968"
|
||||
orientation="0,-1"
|
||||
id="guide3222" />
|
||||
<sodipodi:guide
|
||||
position="103.8518,49.175409"
|
||||
orientation="1,0"
|
||||
id="guide4846" />
|
||||
<sodipodi:guide
|
||||
position="268.25514,233.40629"
|
||||
orientation="1,0"
|
||||
id="guide6498" />
|
||||
<sodipodi:guide
|
||||
position="-44.85474,109.89724"
|
||||
orientation="0,-1"
|
||||
id="guide6500" />
|
||||
<sodipodi:guide
|
||||
position="-78.726787,57.84995"
|
||||
orientation="0,-1"
|
||||
id="guide6504" />
|
||||
<sodipodi:guide
|
||||
position="150.46983,86.8631"
|
||||
orientation="0,-1"
|
||||
id="guide5083" />
|
||||
<sodipodi:guide
|
||||
position="283.53887,-170.16673"
|
||||
orientation="1,0"
|
||||
id="guide8087" />
|
||||
<sodipodi:guide
|
||||
position="109.89313,98.096141"
|
||||
orientation="1,0"
|
||||
id="guide185" />
|
||||
<sodipodi:guide
|
||||
position="268.25514,43.084189"
|
||||
orientation="1,0"
|
||||
id="guide187" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<rect
|
||||
x="518.32623"
|
||||
y="359.08142"
|
||||
width="621.36694"
|
||||
height="204.52026"
|
||||
id="rect4797" />
|
||||
<rect
|
||||
x="530.81598"
|
||||
y="227.93863"
|
||||
width="505.8364"
|
||||
height="110.84687"
|
||||
id="rect3842" />
|
||||
<rect
|
||||
x="507.39764"
|
||||
y="334.10184"
|
||||
width="766.56073"
|
||||
height="380.93854"
|
||||
id="rect1006" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath73">
|
||||
<path
|
||||
d="M 0,0 H 4500 V 4046.2 H 0 Z"
|
||||
id="path71" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-33.288676,-62.614224)">
|
||||
<g
|
||||
id="g69"
|
||||
clip-path="url(#clipPath73)"
|
||||
transform="matrix(0.02052161,0,0,-0.02052161,36.288676,149.02833)"
|
||||
inkscape:label="logo">
|
||||
<path
|
||||
d="M 544.949,1039.82 V 119.012 C 544.949,53.5508 597.98,0 661.305,0 726.109,0 779.133,53.5508 779.133,119.012 v 867.25 c -50.074,35.698 -114.879,53.558 -210.613,53.558 -7.368,0 -16.2,0 -23.571,0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path75" />
|
||||
<path
|
||||
d="M 544.949,3439.27 V 1506.91 c 7.371,1.49 16.203,1.49 23.571,1.49 75.113,0 144.335,-5.95 210.613,-19.33 v 1896.65 c -50.074,35.7 -114.879,53.55 -210.613,53.55 -7.368,0 -16.2,0 -23.571,0"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path77" />
|
||||
<path
|
||||
d="M 3693.85,1517.33 V 119.012 C 3693.85,53.5508 3746.87,0 3811.67,0 c 63.34,0 116.36,53.5508 116.36,119.012 V 1499.48 c -8.84,0 -16.2,0 -25.04,0 -73.64,0 -142.86,5.94 -209.14,17.85"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path79" />
|
||||
<path
|
||||
d="m 3928.03,1968.06 v 1960.62 c 0,65.46 -53.02,117.52 -116.36,117.52 -64.8,0 -117.82,-52.06 -117.82,-117.52 V 2021.62 c 50.08,-35.72 113.41,-55.05 209.14,-55.05 8.84,0 16.2,0 25.04,1.49"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path81" />
|
||||
<path
|
||||
d="M 1595.07,1502.45 V 119.012 C 1595.07,53.5508 1646.63,0 1711.43,0 c 64.8,0 116.35,53.5508 116.35,119.012 V 1508.4 c -47.13,-5.95 -95.73,-8.92 -147.28,-8.92 -29.46,0 -57.44,0 -85.43,2.97"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path83" />
|
||||
<path
|
||||
d="m 1827.78,1988.88 v 1939.8 c 0,65.46 -51.55,117.52 -116.35,117.52 -64.8,0 -116.36,-52.06 -116.36,-117.52 V 1972.52 c 25.04,-2.97 53.03,-5.95 85.43,-5.95 60.38,0 108.99,7.44 147.28,22.31"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path85" />
|
||||
<path
|
||||
d="M 2645.2,1018.99 V 119.012 C 2645.2,53.5508 2696.75,0 2761.55,0 c 63.33,0 116.35,53.5508 116.35,119.012 v 914.848 c -25.03,4.46 -54.49,5.96 -85.42,5.96 -60.39,0 -108.99,-7.44 -147.28,-20.83"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path87" />
|
||||
<path
|
||||
d="M 2645.2,3418.44 V 1499.48 c 47.13,5.94 95.73,8.92 147.28,8.92 29.45,0 57.44,-1.49 85.42,-2.98 v 1927.9 c -25.03,4.46 -54.49,5.95 -85.42,5.95 -60.39,0 -108.99,-7.44 -147.28,-20.83"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path89" />
|
||||
<path
|
||||
d="m 2877.9,3904.88 v 23.8 c 0,65.46 -53.02,117.52 -116.35,117.52 -64.8,0 -116.35,-52.06 -116.35,-117.52 v -29.75 c 47.13,5.95 95.73,8.93 147.28,8.93 29.45,0 57.44,-1.49 85.42,-2.98"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path91" />
|
||||
<path
|
||||
d="m 223.879,2204.58 c 22.09,22.32 47.129,43.14 75.109,60.99 27.985,17.85 58.91,32.73 91.321,44.63 67.75,25.29 103.093,101.15 78.054,169.58 -23.562,68.43 -98.675,104.13 -166.429,78.85 -50.075,-17.85 -98.676,-41.65 -142.864,-69.92 -44.183,-28.27 -85.4216,-62.48 -122.238,-98.18 -50.0781,-52.07 -48.6093,-135.37 1.4649,-187.43 51.5508,-50.59 134.0311,-50.59 185.5821,1.48"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path93" />
|
||||
<path
|
||||
d="m 223.879,3405.05 c 41.238,41.65 92.785,75.87 151.695,99.67 58.914,23.8 123.723,37.19 192.946,37.19 278.367,0 360.835,-151.73 441.85,-301.97 76.58,-139.84 151.7,-281.16 328.43,-367.44 63.33,-32.72 142.87,-5.94 173.8,59.51 32.4,65.45 5.89,144.29 -58.91,177.02 -101.63,50.58 -157.6,153.22 -215.04,257.35 -117.82,220.16 -237.13,438.83 -670.13,438.83 -100.157,0 -198.832,-19.33 -288.676,-55.04 -92.789,-37.19 -175.27,-92.22 -243.012,-160.65 -50.0781,-52.07 -48.6093,-135.38 1.4649,-185.95 51.5508,-52.06 134.0311,-50.58 185.5821,1.48"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path95" />
|
||||
<path
|
||||
d="m 2369.78,2485.74 c -122.25,-87.77 -185.57,-203.8 -247.44,-319.84 -82.47,-150.24 -163.48,-300.49 -441.84,-300.49 -278.37,0 -359.37,150.25 -441.85,300.49 -47.13,87.78 -94.26,174.06 -167.9,251.4 -50.08,52.07 -132.551,53.56 -184.102,2.99 -51.55,-52.07 -53.027,-135.37 -2.949,-187.44 50.078,-52.06 88.375,-121.99 126.671,-191.9 119.29,-220.16 238.59,-440.32 670.13,-440.32 433.01,0 550.83,220.16 670.13,440.32 48.6,87.77 97.21,177.02 170.85,230.58 58.92,41.65 72.17,124.95 30.93,184.45 -42.71,58.02 -123.71,72.89 -182.63,29.76"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path97" />
|
||||
<path
|
||||
d="m 4269.73,2024.58 c -39.78,-49.09 -94.27,-87.76 -156.13,-116.02 -63.34,-28.26 -134.03,-43.15 -210.61,-43.15 -276.89,0 -359.37,150.25 -440.37,300.49 -76.59,141.32 -151.7,281.15 -328.44,368.93 -64.8,31.23 -142.87,4.46 -173.8,-59.51 -32.4,-65.45 -5.89,-144.29 58.92,-177.02 101.62,-50.58 157.58,-154.7 213.55,-257.35 119.31,-220.16 238.61,-440.32 670.14,-440.32 111.93,0 217.98,23.8 313.71,66.94 98.68,43.14 185.58,107.1 253.33,187.43 45.65,55.04 38.29,138.35 -16.2,185.95 -55.97,46.11 -136.98,38.67 -184.1,-16.37"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path99" />
|
||||
<path
|
||||
d="m 3462.62,966.93 c -119.31,220.15 -238.61,438.83 -670.14,438.83 -433.01,0 -552.31,-218.68 -670.14,-438.83 -48.59,-89.258 -97.2,-178.52 -170.84,-232.071 -58.92,-41.648 -72.17,-123.468 -30.93,-182.968 42.71,-59.5 123.71,-72.891 182.63,-31.243 122.24,89.262 185.57,203.801 247.43,319.832 81.01,150.25 163.49,301.98 441.85,301.98 278.36,0 359.37,-151.73 440.37,-301.98 47.13,-86.281 94.27,-174.05 169.38,-249.91 50.07,-52.07 132.56,-53.55 184.1,-2.98 51.55,50.582 53.03,133.89 2.95,185.949 -50.08,52.063 -88.37,121.981 -126.66,193.391"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path101" />
|
||||
<path
|
||||
d="m 2103.2,2920.1 c 122.24,89.26 185.57,203.8 247.43,319.84 81.01,150.24 163.49,301.97 441.85,301.97 278.36,0 359.37,-151.73 440.37,-301.97 47.13,-86.28 94.27,-174.06 169.38,-249.92 50.07,-52.07 132.56,-53.55 184.1,-2.97 51.55,50.57 53.03,133.88 2.95,185.94 -50.08,52.07 -88.37,121.99 -126.66,193.39 -119.31,220.16 -238.61,438.83 -670.14,438.83 -433.01,0 -552.31,-218.67 -670.14,-438.83 -48.59,-89.25 -97.2,-178.52 -170.84,-232.07 -58.92,-41.65 -72.17,-123.47 -30.93,-182.97 42.71,-59.5 123.71,-72.89 182.63,-31.24"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path103" />
|
||||
<path
|
||||
d="m 1453.69,709.57 c -101.63,50.578 -157.6,153.231 -215.04,257.36 -117.82,220.15 -237.13,438.83 -670.13,438.83 -100.157,0 -198.832,-19.34 -288.676,-55.04 -92.789,-37.19 -175.27,-92.24 -243.012,-160.66 -50.0781,-52.07 -48.6093,-135.37 1.4649,-185.95 51.5508,-52.059 134.0311,-50.579 185.5821,1.49 41.238,41.65 92.785,75.87 151.695,99.67 58.914,23.8 123.723,37.19 192.946,37.19 278.367,0 360.835,-151.73 441.85,-301.98 76.58,-139.832 151.7,-281.152 328.43,-367.429 63.33,-32.731 142.87,-5.949 173.8,59.5 32.4,65.449 5.89,144.289 -58.91,177.019"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path105" />
|
||||
<path
|
||||
d="m 4269.73,824.121 c -22.1,-26.781 -50.08,-52.07 -82.49,-72.902 -30.93,-22.309 -67.75,-41.649 -104.56,-55.028 -67.76,-25.3 -103.11,-99.671 -78.07,-168.101 23.56,-68.43 98.68,-104.129 166.43,-78.84 58.91,20.82 114.88,49.082 163.49,83.301 50.07,34.211 95.72,75.867 135.5,121.988 45.65,56.52 38.29,139.832 -16.2,185.941 -55.97,46.122 -136.98,40.161 -184.1,-16.359"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path107" />
|
||||
<path
|
||||
d="m 4171.04,2848.71 c 58.91,20.82 114.88,49.09 163.49,83.3 50.07,34.21 95.72,75.87 135.5,121.98 45.65,56.52 38.29,139.83 -16.2,185.95 -55.97,46.11 -136.98,40.16 -184.1,-16.37 -22.1,-26.78 -50.08,-52.06 -82.49,-72.89 -30.93,-22.32 -67.75,-41.65 -104.56,-55.04 -67.76,-25.29 -103.11,-99.67 -78.07,-168.1 23.56,-68.42 98.68,-104.13 166.43,-78.83"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path109" />
|
||||
<path
|
||||
d="m 779.133,3888.52 v 40.16 c 0,65.46 -53.024,117.52 -117.828,117.52 -63.325,0 -116.356,-52.06 -116.356,-117.52 v -22.31 c 7.371,1.49 16.203,1.49 23.571,1.49 75.113,0 144.335,-5.96 210.613,-19.34"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path111" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:21.8722px;line-height:1.25;font-family:sans-serif;letter-spacing:1.50812px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="142.11089"
|
||||
y="83.505684"
|
||||
id="text4002"
|
||||
inkscape:label="cloud foundation"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4000"
|
||||
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:condensed;font-size:21.8722px;font-family:'Encode Sans Condensed';-inkscape-font-specification:'Encode Sans Condensed, Light Condensed';stroke-width:0.264583"
|
||||
x="142.11089"
|
||||
y="83.505684">cloud foundation</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:70.5556px;line-height:1.25;font-family:sans-serif;letter-spacing:1.98438px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="136.81929"
|
||||
y="149.15135"
|
||||
id="text14979"
|
||||
inkscape:label="fabric"
|
||||
sodipodi:insensitive="true"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan14977"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;font-size:70.5556px;font-family:'Encode Sans Condensed';-inkscape-font-specification:'Encode Sans Condensed, Medium Condensed';stroke-width:0.264583"
|
||||
x="136.81929"
|
||||
y="149.15135">fabric</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
Binary file not shown.
After Width: | Height: | Size: 152 KiB |
|
@ -0,0 +1,224 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="269.54251mm"
|
||||
height="90.242683mm"
|
||||
viewBox="0 0 269.54251 90.242683"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
|
||||
sodipodi:docname="fabric6-colors.svg"
|
||||
inkscape:export-filename="/Users/taneli/Downloads/fabric-v5.png"
|
||||
inkscape:export-xdpi="959.14001"
|
||||
inkscape:export-ydpi="959.14001"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:zoom="1.0532937"
|
||||
inkscape:cx="370.2671"
|
||||
inkscape:cy="160.92378"
|
||||
inkscape:window-width="1912"
|
||||
inkscape:window-height="1031"
|
||||
inkscape:window-x="730"
|
||||
inkscape:window-y="1073"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:current-layer="g69"
|
||||
width="327mm"
|
||||
inkscape:snap-text-baseline="false"
|
||||
fit-margin-top="3"
|
||||
fit-margin-left="3"
|
||||
fit-margin-right="3"
|
||||
fit-margin-bottom="3">
|
||||
<sodipodi:guide
|
||||
position="-126.64334,3.7372965"
|
||||
orientation="0,-1"
|
||||
id="guide3222" />
|
||||
<sodipodi:guide
|
||||
position="103.85181,49.175409"
|
||||
orientation="1,0"
|
||||
id="guide4846" />
|
||||
<sodipodi:guide
|
||||
position="268.25514,233.40628"
|
||||
orientation="1,0"
|
||||
id="guide6498" />
|
||||
<sodipodi:guide
|
||||
position="-44.85474,109.89724"
|
||||
orientation="0,-1"
|
||||
id="guide6500" />
|
||||
<sodipodi:guide
|
||||
position="-78.726787,57.849949"
|
||||
orientation="0,-1"
|
||||
id="guide6504" />
|
||||
<sodipodi:guide
|
||||
position="150.46984,86.8631"
|
||||
orientation="0,-1"
|
||||
id="guide5083" />
|
||||
<sodipodi:guide
|
||||
position="283.53887,-170.16673"
|
||||
orientation="1,0"
|
||||
id="guide8087" />
|
||||
<sodipodi:guide
|
||||
position="109.89314,98.09614"
|
||||
orientation="1,0"
|
||||
id="guide185" />
|
||||
<sodipodi:guide
|
||||
position="268.25514,43.084189"
|
||||
orientation="1,0"
|
||||
id="guide187" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<rect
|
||||
x="518.32623"
|
||||
y="359.08142"
|
||||
width="621.36694"
|
||||
height="204.52026"
|
||||
id="rect4797" />
|
||||
<rect
|
||||
x="530.81598"
|
||||
y="227.93863"
|
||||
width="505.8364"
|
||||
height="110.84687"
|
||||
id="rect3842" />
|
||||
<rect
|
||||
x="507.39764"
|
||||
y="334.10184"
|
||||
width="766.56073"
|
||||
height="380.93854"
|
||||
id="rect1006" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath73">
|
||||
<path
|
||||
d="M 0,0 H 4500 V 4046.2 H 0 Z"
|
||||
id="path71" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-33.288676,-62.614224)">
|
||||
<g
|
||||
id="g69"
|
||||
clip-path="url(#clipPath73)"
|
||||
transform="matrix(0.02052161,0,0,-0.02052161,36.288676,149.02833)"
|
||||
inkscape:label="logo">
|
||||
<path
|
||||
d="M 544.949,1039.82 V 119.012 C 544.949,53.5508 597.98,0 661.305,0 726.109,0 779.133,53.5508 779.133,119.012 v 867.25 c -50.074,35.698 -114.879,53.558 -210.613,53.558 -7.368,0 -16.2,0 -23.571,0"
|
||||
style="fill:#4285f4;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path75" />
|
||||
<path
|
||||
d="M 544.949,3439.27 V 1506.91 c 7.371,1.49 16.203,1.49 23.571,1.49 75.113,0 144.335,-5.95 210.613,-19.33 v 1896.65 c -50.074,35.7 -114.879,53.55 -210.613,53.55 -7.368,0 -16.2,0 -23.571,0"
|
||||
style="fill:#4285f4;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path77" />
|
||||
<path
|
||||
d="M 3693.85,1517.33 V 119.012 C 3693.85,53.5508 3746.87,0 3811.67,0 c 63.34,0 116.36,53.5508 116.36,119.012 V 1499.48 c -8.84,0 -16.2,0 -25.04,0 -73.64,0 -142.86,5.94 -209.14,17.85"
|
||||
style="fill:#34a853;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path79" />
|
||||
<path
|
||||
d="m 3928.03,1968.06 v 1960.62 c 0,65.46 -53.02,117.52 -116.36,117.52 -64.8,0 -117.82,-52.06 -117.82,-117.52 V 2021.62 c 50.08,-35.72 113.41,-55.05 209.14,-55.05 8.84,0 16.2,0 25.04,1.49"
|
||||
style="fill:#34a853;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path81" />
|
||||
<path
|
||||
d="M 1595.07,1502.45 V 119.012 C 1595.07,53.5508 1646.63,0 1711.43,0 c 64.8,0 116.35,53.5508 116.35,119.012 V 1508.4 c -47.13,-5.95 -95.73,-8.92 -147.28,-8.92 -29.46,0 -57.44,0 -85.43,2.97"
|
||||
style="fill:#ea4335;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path83" />
|
||||
<path
|
||||
d="m 1827.78,1988.88 v 1939.8 c 0,65.46 -51.55,117.52 -116.35,117.52 -64.8,0 -116.36,-52.06 -116.36,-117.52 V 1972.52 c 25.04,-2.97 53.03,-5.95 85.43,-5.95 60.38,0 108.99,7.44 147.28,22.31"
|
||||
style="fill:#ea4335;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path85" />
|
||||
<path
|
||||
d="M 2645.2,1018.99 V 119.012 C 2645.2,53.5508 2696.75,0 2761.55,0 c 63.33,0 116.35,53.5508 116.35,119.012 v 914.848 c -25.03,4.46 -54.49,5.96 -85.42,5.96 -60.39,0 -108.99,-7.44 -147.28,-20.83"
|
||||
style="fill:#fbbc05;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path87" />
|
||||
<path
|
||||
d="M 2645.2,3418.44 V 1499.48 c 47.13,5.94 95.73,8.92 147.28,8.92 29.45,0 57.44,-1.49 85.42,-2.98 v 1927.9 c -25.03,4.46 -54.49,5.95 -85.42,5.95 -60.39,0 -108.99,-7.44 -147.28,-20.83"
|
||||
style="fill:#fbbc05;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path89" />
|
||||
<path
|
||||
d="m 2877.9,3904.88 v 23.8 c 0,65.46 -53.02,117.52 -116.35,117.52 -64.8,0 -116.35,-52.06 -116.35,-117.52 v -29.75 c 47.13,5.95 95.73,8.93 147.28,8.93 29.45,0 57.44,-1.49 85.42,-2.98"
|
||||
style="fill:#fbbc05;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path91" />
|
||||
<path
|
||||
d="m 223.879,2204.58 c 22.09,22.32 47.129,43.14 75.109,60.99 27.985,17.85 58.91,32.73 91.321,44.63 67.75,25.29 103.093,101.15 78.054,169.58 -23.562,68.43 -98.675,104.13 -166.429,78.85 -50.075,-17.85 -98.676,-41.65 -142.864,-69.92 -44.183,-28.27 -85.4216,-62.48 -122.238,-98.18 -50.0781,-52.07 -48.6093,-135.37 1.4649,-187.43 51.5508,-50.59 134.0311,-50.59 185.5821,1.48"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path93" />
|
||||
<path
|
||||
d="m 223.879,3405.05 c 41.238,41.65 92.785,75.87 151.695,99.67 58.914,23.8 123.723,37.19 192.946,37.19 278.367,0 360.835,-151.73 441.85,-301.97 76.58,-139.84 151.7,-281.16 328.43,-367.44 63.33,-32.72 142.87,-5.94 173.8,59.51 32.4,65.45 5.89,144.29 -58.91,177.02 -101.63,50.58 -157.6,153.22 -215.04,257.35 -117.82,220.16 -237.13,438.83 -670.13,438.83 -100.157,0 -198.832,-19.33 -288.676,-55.04 -92.789,-37.19 -175.27,-92.22 -243.012,-160.65 -50.0781,-52.07 -48.6093,-135.38 1.4649,-185.95 51.5508,-52.06 134.0311,-50.58 185.5821,1.48"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path95" />
|
||||
<path
|
||||
d="m 2369.78,2485.74 c -122.25,-87.77 -185.57,-203.8 -247.44,-319.84 -82.47,-150.24 -163.48,-300.49 -441.84,-300.49 -278.37,0 -359.37,150.25 -441.85,300.49 -47.13,87.78 -94.26,174.06 -167.9,251.4 -50.08,52.07 -132.551,53.56 -184.102,2.99 -51.55,-52.07 -53.027,-135.37 -2.949,-187.44 50.078,-52.06 88.375,-121.99 126.671,-191.9 119.29,-220.16 238.59,-440.32 670.13,-440.32 433.01,0 550.83,220.16 670.13,440.32 48.6,87.77 97.21,177.02 170.85,230.58 58.92,41.65 72.17,124.95 30.93,184.45 -42.71,58.02 -123.71,72.89 -182.63,29.76"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path97" />
|
||||
<path
|
||||
d="m 4269.73,2024.58 c -39.78,-49.09 -94.27,-87.76 -156.13,-116.02 -63.34,-28.26 -134.03,-43.15 -210.61,-43.15 -276.89,0 -359.37,150.25 -440.37,300.49 -76.59,141.32 -151.7,281.15 -328.44,368.93 -64.8,31.23 -142.87,4.46 -173.8,-59.51 -32.4,-65.45 -5.89,-144.29 58.92,-177.02 101.62,-50.58 157.58,-154.7 213.55,-257.35 119.31,-220.16 238.61,-440.32 670.14,-440.32 111.93,0 217.98,23.8 313.71,66.94 98.68,43.14 185.58,107.1 253.33,187.43 45.65,55.04 38.29,138.35 -16.2,185.95 -55.97,46.11 -136.98,38.67 -184.1,-16.37"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path99" />
|
||||
<path
|
||||
d="m 3462.62,966.93 c -119.31,220.15 -238.61,438.83 -670.14,438.83 -433.01,0 -552.31,-218.68 -670.14,-438.83 -48.59,-89.258 -97.2,-178.52 -170.84,-232.071 -58.92,-41.648 -72.17,-123.468 -30.93,-182.968 42.71,-59.5 123.71,-72.891 182.63,-31.243 122.24,89.262 185.57,203.801 247.43,319.832 81.01,150.25 163.49,301.98 441.85,301.98 278.36,0 359.37,-151.73 440.37,-301.98 47.13,-86.281 94.27,-174.05 169.38,-249.91 50.07,-52.07 132.56,-53.55 184.1,-2.98 51.55,50.582 53.03,133.89 2.95,185.949 -50.08,52.063 -88.37,121.981 -126.66,193.391"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path101" />
|
||||
<path
|
||||
d="m 2103.2,2920.1 c 122.24,89.26 185.57,203.8 247.43,319.84 81.01,150.24 163.49,301.97 441.85,301.97 278.36,0 359.37,-151.73 440.37,-301.97 47.13,-86.28 94.27,-174.06 169.38,-249.92 50.07,-52.07 132.56,-53.55 184.1,-2.97 51.55,50.57 53.03,133.88 2.95,185.94 -50.08,52.07 -88.37,121.99 -126.66,193.39 -119.31,220.16 -238.61,438.83 -670.14,438.83 -433.01,0 -552.31,-218.67 -670.14,-438.83 -48.59,-89.25 -97.2,-178.52 -170.84,-232.07 -58.92,-41.65 -72.17,-123.47 -30.93,-182.97 42.71,-59.5 123.71,-72.89 182.63,-31.24"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path103" />
|
||||
<path
|
||||
d="m 1453.69,709.57 c -101.63,50.578 -157.6,153.231 -215.04,257.36 -117.82,220.15 -237.13,438.83 -670.13,438.83 -100.157,0 -198.832,-19.34 -288.676,-55.04 -92.789,-37.19 -175.27,-92.24 -243.012,-160.66 -50.0781,-52.07 -48.6093,-135.37 1.4649,-185.95 51.5508,-52.059 134.0311,-50.579 185.5821,1.49 41.238,41.65 92.785,75.87 151.695,99.67 58.914,23.8 123.723,37.19 192.946,37.19 278.367,0 360.835,-151.73 441.85,-301.98 76.58,-139.832 151.7,-281.152 328.43,-367.429 63.33,-32.731 142.87,-5.949 173.8,59.5 32.4,65.449 5.89,144.289 -58.91,177.019"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path105" />
|
||||
<path
|
||||
d="m 4269.73,824.121 c -22.1,-26.781 -50.08,-52.07 -82.49,-72.902 -30.93,-22.309 -67.75,-41.649 -104.56,-55.028 -67.76,-25.3 -103.11,-99.671 -78.07,-168.101 23.56,-68.43 98.68,-104.129 166.43,-78.84 58.91,20.82 114.88,49.082 163.49,83.301 50.07,34.211 95.72,75.867 135.5,121.988 45.65,56.52 38.29,139.832 -16.2,185.941 -55.97,46.122 -136.98,40.161 -184.1,-16.359"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path107" />
|
||||
<path
|
||||
d="m 4171.04,2848.71 c 58.91,20.82 114.88,49.09 163.49,83.3 50.07,34.21 95.72,75.87 135.5,121.98 45.65,56.52 38.29,139.83 -16.2,185.95 -55.97,46.11 -136.98,40.16 -184.1,-16.37 -22.1,-26.78 -50.08,-52.06 -82.49,-72.89 -30.93,-22.32 -67.75,-41.65 -104.56,-55.04 -67.76,-25.29 -103.11,-99.67 -78.07,-168.1 23.56,-68.42 98.68,-104.13 166.43,-78.83"
|
||||
style="fill:#191817;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path109" />
|
||||
<path
|
||||
d="m 779.133,3888.52 v 40.16 c 0,65.46 -53.024,117.52 -117.828,117.52 -63.325,0 -116.356,-52.06 -116.356,-117.52 v -22.31 c 7.371,1.49 16.203,1.49 23.571,1.49 75.113,0 144.335,-5.96 210.613,-19.34"
|
||||
style="fill:#4285f4;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path111" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:21.8722px;line-height:1.25;font-family:sans-serif;letter-spacing:1.50812px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="142.11089"
|
||||
y="83.505684"
|
||||
id="text4002"
|
||||
inkscape:label="cloud foundation"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4000"
|
||||
style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:condensed;font-size:21.8722px;font-family:'Encode Sans Condensed';-inkscape-font-specification:'Encode Sans Condensed, Light Condensed';stroke-width:0.264583"
|
||||
x="142.11089"
|
||||
y="83.505684">cloud foundation</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:70.5556px;line-height:1.25;font-family:sans-serif;letter-spacing:1.98438px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="136.81929"
|
||||
y="149.15135"
|
||||
id="text14979"
|
||||
inkscape:label="fabric"
|
||||
sodipodi:insensitive="true"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan14977"
|
||||
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:condensed;font-size:70.5556px;font-family:'Encode Sans Condensed';-inkscape-font-specification:'Encode Sans Condensed, Medium Condensed';stroke-width:0.264583"
|
||||
x="136.81929"
|
||||
y="149.15135">fabric</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 13 KiB |
|
@ -90,6 +90,7 @@ module "cf" {
|
|||
bundle_config = {
|
||||
source_dir = "cf"
|
||||
output_path = var.bundle_path
|
||||
excludes = null
|
||||
}
|
||||
service_account = module.service-account.email
|
||||
trigger_config = {
|
||||
|
@ -109,7 +110,6 @@ module "simple-vm-example" {
|
|||
subnetwork = try(module.vpc.subnet_self_links["${var.region}/${var.name}-default"], "")
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
tags = ["${var.project_id}-test-feed", "shared-test-feed"]
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -111,7 +111,6 @@ module "vm-ns-editor" {
|
|||
subnetwork = module.vpc.subnet_self_links["${var.region}/${var.name}-default"]
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
metadata = { startup-script = local.startup-script }
|
||||
service_account_create = true
|
||||
|
@ -128,7 +127,6 @@ module "vm-svc-editor" {
|
|||
subnetwork = module.vpc.subnet_self_links["${var.region}/${var.name}-default"]
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
metadata = { startup-script = local.startup-script }
|
||||
service_account_create = true
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -27,7 +27,6 @@ module "vm1" {
|
|||
subnetwork = module.shared-vpc.subnet_self_links["${var.region}/subnet-01"]
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
tags = ["test-dns"]
|
||||
}
|
||||
|
@ -42,7 +41,6 @@ module "vm2" {
|
|||
subnetwork = module.shared-vpc.subnet_self_links["${var.region}/subnet-01"]
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
tags = ["test-dns"]
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -62,6 +62,7 @@ module "cf" {
|
|||
bundle_config = {
|
||||
source_dir = "cf"
|
||||
output_path = var.bundle_path
|
||||
excludes = null
|
||||
}
|
||||
# https://github.com/hashicorp/terraform-provider-archive/issues/40
|
||||
# https://issuetracker.google.com/issues/155215191
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -82,6 +82,7 @@ module "cf" {
|
|||
bundle_config = {
|
||||
source_dir = "cf"
|
||||
output_path = var.bundle_path
|
||||
excludes = null
|
||||
}
|
||||
service_account = module.service-account.email
|
||||
trigger_config = {
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -106,7 +106,6 @@ module "vm_example" {
|
|||
subnetwork = module.vpc.subnet_self_links["${var.region}/subnet"],
|
||||
nat = false,
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
attached_disks = [
|
||||
{
|
||||
|
@ -127,7 +126,7 @@ module "vm_example" {
|
|||
encryption = {
|
||||
encrypt_boot = true
|
||||
disk_encryption_key_raw = null
|
||||
kms_key_self_link = module.kms.key_self_links.key-gce
|
||||
kms_key_self_link = module.kms.key_ids.key-gce
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -140,5 +139,5 @@ module "kms-gcs" {
|
|||
project_id = module.project-service.project_id
|
||||
prefix = "my-bucket-001"
|
||||
name = "kms-gcs"
|
||||
encryption_key = module.kms.keys.key-gcs.self_link
|
||||
encryption_key = module.kms.keys.key-gcs.id
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright 2020 Google LLC
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
@ -13,5 +13,17 @@
|
|||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
# Copyright 2020 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
provider "google" {
|
||||
impersonate_service_account = "data-platform-main@${var.project_ids.services}.iam.gserviceaccount.com"
|
||||
}
|
||||
|
||||
provider "google-beta" {
|
||||
impersonate_service_account = "data-platform-main@${var.project_ids.services}.iam.gserviceaccount.com"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright 2020 Google LLC
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
@ -13,5 +13,17 @@
|
|||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13"
|
||||
}
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -206,7 +206,6 @@ module "vm_example" {
|
|||
subnetwork = module.vpc.subnet_self_links["${var.region}/${var.vpc_subnet_name}"],
|
||||
nat = false,
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
attached_disks = [
|
||||
{
|
||||
|
@ -226,7 +225,7 @@ module "vm_example" {
|
|||
encryption = {
|
||||
encrypt_boot = true
|
||||
disk_encryption_key_raw = null
|
||||
kms_key_self_link = module.kms.key_self_links.key-gce
|
||||
kms_key_self_link = module.kms.key_ids.key-gce
|
||||
}
|
||||
metadata = {
|
||||
startup-script = local.vm-startup-script
|
||||
|
@ -266,7 +265,7 @@ module "kms-gcs" {
|
|||
prefix = module.project-service.project_id
|
||||
name = each.key
|
||||
iam = each.value.members
|
||||
encryption_key = module.kms.keys.key-gcs.self_link
|
||||
encryption_key = module.kms.keys.key-gcs.id
|
||||
force_destroy = true
|
||||
}
|
||||
|
||||
|
@ -286,7 +285,7 @@ module "bigquery-dataset" {
|
|||
reader-group = module.service-account-bq.email
|
||||
owner = module.service-account-bq.email
|
||||
}
|
||||
encryption_key = module.kms.keys.key-bq.self_link
|
||||
encryption_key = module.kms.keys.key-bq.id
|
||||
tables = {
|
||||
bq_import = {
|
||||
friendly_name = "BQ import"
|
||||
|
@ -301,7 +300,7 @@ module "bigquery-dataset" {
|
|||
options = {
|
||||
clustering = null
|
||||
expiration_time = null
|
||||
encryption_key = module.kms.keys.key-bq.self_link
|
||||
encryption_key = module.kms.keys.key-bq.id
|
||||
}
|
||||
deletion_protection = true
|
||||
},
|
||||
|
@ -318,7 +317,7 @@ module "bigquery-dataset" {
|
|||
options = {
|
||||
clustering = null
|
||||
expiration_time = null
|
||||
encryption_key = module.kms.keys.key-bq.self_link
|
||||
encryption_key = module.kms.keys.key-bq.id
|
||||
}
|
||||
deletion_protection = true
|
||||
}
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,20 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13.3"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -68,3 +68,4 @@ Specific modules also offer support for non-authoritative bindings (e.g. `google
|
|||
## Serverless
|
||||
|
||||
- [Cloud Functions](./cloud-function)
|
||||
- [Cloud Run](./cloud-run)
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -181,7 +181,7 @@ module "bigquery-dataset" {
|
|||
|---|---|:---: |:---:|:---:|
|
||||
| id | Dataset id. | <code title="">string</code> | ✓ | |
|
||||
| project_id | Id of the project where datasets will be created. | <code title="">string</code> | ✓ | |
|
||||
| *access* | Map of access rules with role and identity type. Keys are arbitrary and must match those in the `access_identities` variable, types are `domain`, `group`, `special_group`, `user`, `view`. | <code title="map(object({ role = string type = string }))">map(object({...}))</code> | | <code title="{} validation { condition = can([ for k, v in var.access : index(["OWNER", "READER", "WRITER"], v.role) ]) error_message = "Access role must be one of 'OWNER', 'READER', 'WRITER'." } validation { condition = can([ for k, v in var.access : index(["domain", "group", "special_group", "user", "view"], v.type) ]) error_message = "Access type must be one of 'domain', 'group', 'special_group', 'user', 'view'." }">...</code> |
|
||||
| *access* | Map of access rules with role and identity type. Keys are arbitrary and must match those in the `access_identities` variable, types are `domain`, `group`, `special_group`, `user`, `view`. | <code title="map(object({ role = string type = string }))">map(object({...}))</code> | | <code title="{} validation { condition = can([ for k, v in var.access : index(["domain", "group", "special_group", "user", "view"], v.type) ]) error_message = "Access type must be one of 'domain', 'group', 'special_group', 'user', 'view'." }">...</code> |
|
||||
| *access_identities* | Map of access identities used for basic access roles. View identities have the format 'project_id|dataset_id|table_id'. | <code title="map(string)">map(string)</code> | | <code title="">{}</code> |
|
||||
| *dataset_access* | Set access in the dataset resource instead of using separate resources. | <code title="">bool</code> | | <code title="">false</code> |
|
||||
| *description* | Optional description. | <code title="">string</code> | | <code title="">Terraform managed.</code> |
|
||||
|
|
|
@ -209,5 +209,4 @@ resource "google_bigquery_table" "views" {
|
|||
query = each.value.query
|
||||
use_legacy_sql = each.value.use_legacy_sql
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,13 +21,6 @@ variable "access" {
|
|||
type = string
|
||||
}))
|
||||
default = {}
|
||||
validation {
|
||||
condition = can([
|
||||
for k, v in var.access :
|
||||
index(["OWNER", "READER", "WRITER"], v.role)
|
||||
])
|
||||
error_message = "Access role must be one of 'OWNER', 'READER', 'WRITER'."
|
||||
}
|
||||
validation {
|
||||
condition = can([
|
||||
for k, v in var.access :
|
||||
|
|
|
@ -1,23 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = ">= 3.58"
|
||||
google-beta = ">= 3.58"
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,23 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13.0"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = ">= 3.79.0"
|
||||
google-beta = ">= 3.79.0"
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -21,8 +21,9 @@ module "cf-http" {
|
|||
name = "test-cf-http"
|
||||
bucket_name = "test-cf-bundles"
|
||||
bundle_config = {
|
||||
source_dir = "my-cf-source-folder"
|
||||
source_dir = "my-cf-source-folder"
|
||||
output_path = "bundle.zip"
|
||||
excludes = null
|
||||
}
|
||||
}
|
||||
# tftest:skip
|
||||
|
@ -39,8 +40,9 @@ module "cf-http" {
|
|||
name = "test-cf-http"
|
||||
bucket_name = "test-cf-bundles"
|
||||
bundle_config = {
|
||||
source_dir = "my-cf-source-folder"
|
||||
source_dir = "my-cf-source-folder"
|
||||
output_path = "bundle.zip"
|
||||
excludes = null
|
||||
}
|
||||
trigger_config = {
|
||||
event = "google.pubsub.topic.publish"
|
||||
|
@ -62,8 +64,9 @@ module "cf-http" {
|
|||
name = "test-cf-http"
|
||||
bucket_name = "test-cf-bundles"
|
||||
bundle_config = {
|
||||
source_dir = "my-cf-source-folder"
|
||||
source_dir = "my-cf-source-folder"
|
||||
output_path = "bundle.zip"
|
||||
excludes = null
|
||||
}
|
||||
iam = {
|
||||
"roles/cloudfunctions.invoker" = ["allUsers"]
|
||||
|
@ -87,8 +90,9 @@ module "cf-http" {
|
|||
lifecycle_delete_age = 1
|
||||
}
|
||||
bundle_config = {
|
||||
source_dir = "my-cf-source-folder"
|
||||
source_dir = "my-cf-source-folder"
|
||||
output_path = "bundle.zip"
|
||||
excludes = null
|
||||
}
|
||||
}
|
||||
# tftest:skip
|
||||
|
@ -105,8 +109,9 @@ module "cf-http" {
|
|||
name = "test-cf-http"
|
||||
bucket_name = "test-cf-bundles"
|
||||
bundle_config = {
|
||||
source_dir = "my-cf-source-folder"
|
||||
source_dir = "my-cf-source-folder"
|
||||
output_path = "bundle.zip"
|
||||
excludes = null
|
||||
}
|
||||
service_account_create = true
|
||||
}
|
||||
|
@ -122,21 +127,41 @@ module "cf-http" {
|
|||
name = "test-cf-http"
|
||||
bucket_name = "test-cf-bundles"
|
||||
bundle_config = {
|
||||
source_dir = "my-cf-source-folder"
|
||||
source_dir = "my-cf-source-folder"
|
||||
output_path = "bundle.zip"
|
||||
excludes = null
|
||||
}
|
||||
service_account = local.service_account_email
|
||||
}
|
||||
# tftest:skip
|
||||
```
|
||||
|
||||
### Custom bundle config
|
||||
|
||||
In order to help prevent `archive_zip.output_md5` from changing cross platform (e.g. Cloud Build vs your local development environment), you'll have to make sure that the files included in the zip are always the same.
|
||||
|
||||
```hcl
|
||||
module "cf-http" {
|
||||
source = "./modules/cloud-function"
|
||||
project_id = "my-project"
|
||||
name = "test-cf-http"
|
||||
bucket_name = "test-cf-bundles"
|
||||
bundle_config = {
|
||||
source_dir = "my-cf-source-folder"
|
||||
output_path = "bundle.zip"
|
||||
excludes = ["__pycache__"]
|
||||
}
|
||||
}
|
||||
# tftest:skip
|
||||
```
|
||||
|
||||
<!-- BEGIN TFDOC -->
|
||||
## Variables
|
||||
|
||||
| name | description | type | required | default |
|
||||
|---|---|:---: |:---:|:---:|
|
||||
| bucket_name | Name of the bucket that will be used for the function code. It will be created with prefix prepended if bucket_config is not null. | <code title="">string</code> | ✓ | |
|
||||
| bundle_config | Cloud function source folder and generated zip bundle paths. Output path defaults to '/tmp/bundle.zip' if null. | <code title="object({ source_dir = string output_path = string })">object({...})</code> | ✓ | |
|
||||
| bundle_config | Cloud function source folder and generated zip bundle paths. Output path defaults to '/tmp/bundle.zip' if null. | <code title="object({ source_dir = string output_path = string excludes = list(string) })">object({...})</code> | ✓ | |
|
||||
| name | Name used for cloud function and associated resources. | <code title="">string</code> | ✓ | |
|
||||
| project_id | Project id used for all resources. | <code title="">string</code> | ✓ | |
|
||||
| *bucket_config* | Enable and configure auto-created bucket. Set fields to null to use defaults. | <code title="object({ location = string lifecycle_delete_age = number })">object({...})</code> | | <code title="">null</code> |
|
||||
|
|
|
@ -137,6 +137,8 @@ data "archive_file" "bundle" {
|
|||
? "/tmp/bundle.zip"
|
||||
: var.bundle_config.output_path
|
||||
)
|
||||
output_file_mode = "0666"
|
||||
excludes = var.bundle_config.excludes
|
||||
}
|
||||
|
||||
resource "google_service_account" "service_account" {
|
||||
|
|
|
@ -33,6 +33,7 @@ variable "bundle_config" {
|
|||
type = object({
|
||||
source_dir = string
|
||||
output_path = string
|
||||
excludes = list(string)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,22 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13.0"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = ">= 3.49"
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,243 @@
|
|||
# Cloud Run Module
|
||||
|
||||
Cloud Run management, with support for IAM roles and optional Eventarc trigger creation.
|
||||
|
||||
## Examples
|
||||
|
||||
### Environment variables
|
||||
|
||||
This deploys a Cloud Run service and sets some environment variables.
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = "my-project"
|
||||
name = "hello"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = {
|
||||
command = null
|
||||
args = null
|
||||
env = {
|
||||
"VAR1": "VALUE1",
|
||||
"VAR2": "VALUE2",
|
||||
}
|
||||
env_from = null
|
||||
}
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = null
|
||||
}]
|
||||
}
|
||||
# tftest:modules=1:resources=1
|
||||
```
|
||||
|
||||
### Environment variables (value read from secret)
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = "my-project"
|
||||
name = "hello"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = {
|
||||
command = null
|
||||
args = null
|
||||
env = null
|
||||
env_from = {
|
||||
"CREDENTIALS": {
|
||||
name = "credentials"
|
||||
key = "1"
|
||||
}
|
||||
}
|
||||
}
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = null
|
||||
}]
|
||||
}
|
||||
# tftest:modules=1:resources=1
|
||||
```
|
||||
|
||||
### Secret mounted as volume
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = var.project_id
|
||||
name = "hello"
|
||||
region = var.region
|
||||
revision_name = "green"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = null
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = {
|
||||
"credentials": "/credentials"
|
||||
}
|
||||
}]
|
||||
volumes = [
|
||||
{
|
||||
name = "credentials"
|
||||
secret_name = "credentials"
|
||||
items = [{
|
||||
key = "1"
|
||||
path = "v1.txt"
|
||||
}]
|
||||
}
|
||||
]
|
||||
}
|
||||
# tftest:modules=1:resources=1
|
||||
```
|
||||
|
||||
### Traffic split
|
||||
|
||||
This deploys a Cloud Run service with traffic split between two revisions.
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = "my-project"
|
||||
name = "hello"
|
||||
revision_name = "green"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = null
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = null
|
||||
}]
|
||||
traffic = {
|
||||
"blue" = 25
|
||||
"green" = 75
|
||||
}
|
||||
}
|
||||
# tftest:modules=1:resources=1
|
||||
```
|
||||
|
||||
### Eventarc trigger (Pub/Sub)
|
||||
|
||||
This deploys a Cloud Run service that will be triggered when messages are published to Pub/Sub topics.
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = "my-project"
|
||||
name = "hello"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = null
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = null
|
||||
}]
|
||||
pubsub_triggers = [
|
||||
"topic1",
|
||||
"topic2"
|
||||
]
|
||||
}
|
||||
# tftest:modules=1:resources=3
|
||||
```
|
||||
|
||||
### Eventarc trigger (Audit logs)
|
||||
|
||||
This deploys a Cloud Run service that will be triggered when specific log events are written to Google Cloud audit logs.
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = "my-project"
|
||||
name = "hello"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = null
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = null
|
||||
}]
|
||||
audit_log_triggers = [
|
||||
{
|
||||
service_name = "cloudresourcemanager.googleapis.com"
|
||||
method_name = "SetIamPolicy"
|
||||
}
|
||||
]
|
||||
}
|
||||
# tftest:modules=1:resources=2
|
||||
```
|
||||
|
||||
### Service account management
|
||||
|
||||
To use a custom service account managed by the module, set `service_account_create` to `true` and leave `service_account` set to `null` value (default).
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = "my-project"
|
||||
name = "hello"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = null
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = null
|
||||
}]
|
||||
service_account_create = true
|
||||
}
|
||||
# tftest:modules=1:resources=2
|
||||
```
|
||||
|
||||
To use an externally managed service account, pass its email in `service_account` and leave `service_account_create` to `false` (the default).
|
||||
|
||||
```hcl
|
||||
module "cloud_run" {
|
||||
source = "./modules/cloud-run"
|
||||
project_id = "my-project"
|
||||
name = "hello"
|
||||
containers = [{
|
||||
image = "us-docker.pkg.dev/cloudrun/container/hello"
|
||||
options = null
|
||||
ports = null
|
||||
resources = null
|
||||
volume_mounts = null
|
||||
}]
|
||||
service_account = "cloud-run@my-project.iam.gserviceaccount.com"
|
||||
}
|
||||
# tftest:modules=1:resources=1
|
||||
```
|
||||
|
||||
<!-- BEGIN TFDOC -->
|
||||
## Variables
|
||||
|
||||
| name | description | type | required | default |
|
||||
|---|---|:---: |:---:|:---:|
|
||||
| containers | Containers | <code title="list(object({ image = string options = object({ command = list(string) args = list(string) env = map(string) env_from = map(object({ key = string name = string })) }) resources = object({ limits = object({ cpu = string memory = string }) requests = object({ cpu = string memory = string }) }) ports = list(object({ name = string protocol = string container_port = string })) volume_mounts = map(string) }))">list(object({...}))</code> | ✓ | |
|
||||
| name | Name used for cloud run service | <code title="">string</code> | ✓ | |
|
||||
| project_id | Project id used for all resources. | <code title="">string</code> | ✓ | |
|
||||
| *audit_log_triggers* | Event arc triggers (Audit log) | <code title="list(object({ service_name = string method_name = string }))">list(object({...}))</code> | | <code title="">null</code> |
|
||||
| *iam* | IAM bindings for Cloud Run service in {ROLE => [MEMBERS]} format. | <code title="map(list(string))">map(list(string))</code> | | <code title="">{}</code> |
|
||||
| *ingress_settings* | Ingress settings | <code title="">string</code> | | <code title="">null</code> |
|
||||
| *labels* | Resource labels | <code title="map(string)">map(string)</code> | | <code title="">{}</code> |
|
||||
| *prefix* | Optional prefix used for resource names. | <code title="">string</code> | | <code title="">null</code> |
|
||||
| *pubsub_triggers* | Eventarc triggers (Pub/Sub) | <code title="list(string)">list(string)</code> | | <code title="">null</code> |
|
||||
| *region* | Region used for all resources. | <code title="">string</code> | | <code title="">europe-west1</code> |
|
||||
| *revision_name* | Revision name | <code title="">string</code> | | <code title="">null</code> |
|
||||
| *service_account* | Service account email. Unused if service account is auto-created. | <code title="">string</code> | | <code title="">null</code> |
|
||||
| *service_account_create* | Auto-create service account. | <code title="">bool</code> | | <code title="">false</code> |
|
||||
| *traffic* | Traffic | <code title="map(number)">map(number)</code> | | <code title="">null</code> |
|
||||
| *volumes* | Volumes | <code title="list(object({ name = string secret_name = string items = list(object({ key = string path = string })) }))">list(object({...}))</code> | | <code title="">null</code> |
|
||||
| *vpc_connector* | VPC connector configuration. Set create to 'true' if a new connecto needs to be created | <code title="object({ create = bool name = string egress_settings = string })">object({...})</code> | | <code title="">null</code> |
|
||||
| *vpc_connector_config* | VPC connector network configuration. Must be provided if new VPC connector is being created | <code title="object({ ip_cidr_range = string network = string })">object({...})</code> | | <code title="">null</code> |
|
||||
|
||||
## Outputs
|
||||
|
||||
| name | description | sensitive |
|
||||
|---|---|:---:|
|
||||
| service | Cloud Run service | |
|
||||
| service_account | Service account resource. | |
|
||||
| service_account_email | Service account email. | |
|
||||
| service_account_iam_email | Service account email. | |
|
||||
| service_name | Cloud Run service name | |
|
||||
| vpc_connector | VPC connector resource if created. | |
|
||||
<!-- END TFDOC -->
|
|
@ -0,0 +1,212 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
locals {
|
||||
prefix = var.prefix == null ? "" : "${var.prefix}-"
|
||||
service_account_email = (
|
||||
var.service_account_create
|
||||
? (
|
||||
length(google_service_account.service_account) > 0
|
||||
? google_service_account.service_account[0].email
|
||||
: null
|
||||
)
|
||||
: var.service_account
|
||||
)
|
||||
|
||||
annotations = merge(var.ingress_settings == null ? {} : { "run.googleapis.com/ingress" = var.ingress_settings },
|
||||
var.vpc_connector == null
|
||||
? {}
|
||||
: try(var.vpc_connector.create, false)
|
||||
? { "run.googleapis.com/vpc-access-connector" = var.vpc_connector.name }
|
||||
: { "run.googleapis.com/vpc-access-connector" = google_vpc_access_connector.connector.0.id }
|
||||
,
|
||||
try(var.vpc_connector.egress_settings, null) == null
|
||||
? {}
|
||||
: { "run.googleapis.com/vpc-access-egress" = var.vpc_connector.egress_settings })
|
||||
}
|
||||
|
||||
resource "google_vpc_access_connector" "connector" {
|
||||
count = try(var.vpc_connector.create, false) == false ? 0 : 1
|
||||
project = var.project_id
|
||||
name = var.vpc_connector.name
|
||||
region = var.region
|
||||
ip_cidr_range = var.vpc_connector_config.ip_cidr_range
|
||||
network = var.vpc_connector_config.network
|
||||
}
|
||||
|
||||
resource "google_cloud_run_service" "service" {
|
||||
provider = google-beta
|
||||
project = var.project_id
|
||||
location = var.region
|
||||
name = "${local.prefix}${var.name}"
|
||||
|
||||
template {
|
||||
spec {
|
||||
dynamic "containers" {
|
||||
for_each = var.containers == null ? {} : { for i, container in var.containers : i => container }
|
||||
content {
|
||||
image = containers.value["image"]
|
||||
command = try(containers.value["options"]["command"], null)
|
||||
args = try(containers.value["options"]["args"], null)
|
||||
dynamic "env" {
|
||||
for_each = try(containers.value["options"]["env"], null) == null ? {} : containers.value["options"]["env"]
|
||||
content {
|
||||
name = env.key
|
||||
value = env.value
|
||||
}
|
||||
}
|
||||
dynamic "env" {
|
||||
for_each = try(containers.value["options"]["env_from"], null) == null ? {} : containers.value["options"]["env_from"]
|
||||
content {
|
||||
name = env.key
|
||||
value_from {
|
||||
secret_key_ref {
|
||||
name = env.value["name"]
|
||||
key = env.value["key"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dynamic "ports" {
|
||||
for_each = containers.value["ports"] == null ? {} : { for port in containers.value["ports"] : "${port.name}-${port.container_port}" => port }
|
||||
content {
|
||||
name = ports.value["name"]
|
||||
protocol = ports.value["protocol"]
|
||||
container_port = ports.value["container_port"]
|
||||
}
|
||||
}
|
||||
dynamic "resources" {
|
||||
for_each = containers.value["resources"] == null ? [] : [""]
|
||||
content {
|
||||
limits = containers.value["resources"]["limits"]
|
||||
requests = containers.value["resources"]["requests"]
|
||||
}
|
||||
}
|
||||
dynamic "volume_mounts" {
|
||||
for_each = containers.value["volume_mounts"] == null ? {} : containers.value["volume_mounts"]
|
||||
content {
|
||||
name = volume_mounts.key
|
||||
mount_path = volume_mounts.value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
service_account_name = local.service_account_email
|
||||
dynamic "volumes" {
|
||||
for_each = var.volumes == null ? [] : var.volumes
|
||||
content {
|
||||
name = volumes.value["name"]
|
||||
secret {
|
||||
secret_name = volumes.value["secret_name"]
|
||||
dynamic "items" {
|
||||
for_each = volumes.value["items"] == null ? [] : volumes.value["items"]
|
||||
content {
|
||||
key = items.value["key"]
|
||||
path = items.value["path"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dynamic "metadata" {
|
||||
for_each = var.revision_name == null ? [] : [""]
|
||||
content {
|
||||
name = "${var.name}-${var.revision_name}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
metadata {
|
||||
annotations = local.annotations
|
||||
}
|
||||
|
||||
dynamic "traffic" {
|
||||
for_each = var.traffic == null ? {} : var.traffic
|
||||
content {
|
||||
percent = traffic.value
|
||||
revision_name = "${var.name}-${traffic.key}"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
resource "google_cloud_run_service_iam_binding" "binding" {
|
||||
for_each = var.iam
|
||||
project = google_cloud_run_service.service.project
|
||||
location = google_cloud_run_service.service.location
|
||||
service = google_cloud_run_service.service.name
|
||||
role = each.key
|
||||
members = each.value
|
||||
}
|
||||
|
||||
resource "google_service_account" "service_account" {
|
||||
count = var.service_account_create ? 1 : 0
|
||||
project = var.project_id
|
||||
account_id = "tf-cr-${var.name}"
|
||||
display_name = "Terraform Cloud Run ${var.name}."
|
||||
}
|
||||
|
||||
resource "google_eventarc_trigger" "audit_log_triggers" {
|
||||
for_each = var.audit_log_triggers == null ? {} : { for trigger in var.audit_log_triggers : "${trigger.service_name}-${trigger.method_name}" => trigger }
|
||||
name = "${local.prefix}${each.key}-audit-log-trigger"
|
||||
location = google_cloud_run_service.service.location
|
||||
project = google_cloud_run_service.service.project
|
||||
matching_criteria {
|
||||
attribute = "type"
|
||||
value = "google.cloud.audit.log.v1.written"
|
||||
}
|
||||
matching_criteria {
|
||||
attribute = "serviceName"
|
||||
value = each.value["service_name"]
|
||||
}
|
||||
matching_criteria {
|
||||
attribute = "methodName"
|
||||
value = each.value["method_name"]
|
||||
}
|
||||
destination {
|
||||
cloud_run_service {
|
||||
service = google_cloud_run_service.service.name
|
||||
region = google_cloud_run_service.service.location
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
resource "google_eventarc_trigger" "pubsub_triggers" {
|
||||
for_each = var.pubsub_triggers == null ? [] : toset(var.pubsub_triggers)
|
||||
name = each.value == "" ? "${local.prefix}default-pubsub-trigger" : "${local.prefix}${each.value}-pubsub-trigger"
|
||||
location = google_cloud_run_service.service.location
|
||||
project = google_cloud_run_service.service.project
|
||||
matching_criteria {
|
||||
attribute = "type"
|
||||
value = "google.cloud.pubsub.topic.v1.messagePublished"
|
||||
}
|
||||
dynamic "transport" {
|
||||
for_each = each.value == null ? [] : [""]
|
||||
content {
|
||||
pubsub {
|
||||
topic = each.value
|
||||
}
|
||||
}
|
||||
}
|
||||
destination {
|
||||
cloud_run_service {
|
||||
service = google_cloud_run_service.service.name
|
||||
region = google_cloud_run_service.service.location
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
|
||||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
output "service" {
|
||||
description = "Cloud Run service"
|
||||
value = google_cloud_run_service.service
|
||||
}
|
||||
|
||||
output "service_account" {
|
||||
description = "Service account resource."
|
||||
value = try(google_service_account.service_account[0], null)
|
||||
}
|
||||
|
||||
output "service_account_email" {
|
||||
description = "Service account email."
|
||||
value = local.service_account_email
|
||||
}
|
||||
|
||||
output "service_account_iam_email" {
|
||||
description = "Service account email."
|
||||
value = join("", [
|
||||
"serviceAccount:",
|
||||
local.service_account_email == null ? "" : local.service_account_email
|
||||
])
|
||||
}
|
||||
|
||||
output "service_name" {
|
||||
description = "Cloud Run service name"
|
||||
value = google_cloud_run_service.service.name
|
||||
}
|
||||
|
||||
|
||||
output "vpc_connector" {
|
||||
description = "VPC connector resource if created."
|
||||
value = try(google_vpc_access_connector.connector.0.id, null)
|
||||
}
|
|
@ -0,0 +1,159 @@
|
|||
|
||||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
variable "audit_log_triggers" {
|
||||
description = "Event arc triggers (Audit log)"
|
||||
type = list(object({
|
||||
service_name = string
|
||||
method_name = string
|
||||
}))
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "containers" {
|
||||
description = "Containers"
|
||||
type = list(object({
|
||||
image = string
|
||||
options = object({
|
||||
command = list(string)
|
||||
args = list(string)
|
||||
env = map(string)
|
||||
env_from = map(object({
|
||||
key = string
|
||||
name = string
|
||||
}))
|
||||
})
|
||||
resources = object({
|
||||
limits = object({
|
||||
cpu = string
|
||||
memory = string
|
||||
})
|
||||
requests = object({
|
||||
cpu = string
|
||||
memory = string
|
||||
})
|
||||
})
|
||||
ports = list(object({
|
||||
name = string
|
||||
protocol = string
|
||||
container_port = string
|
||||
}))
|
||||
volume_mounts = map(string)
|
||||
}))
|
||||
}
|
||||
|
||||
variable "iam" {
|
||||
description = "IAM bindings for Cloud Run service in {ROLE => [MEMBERS]} format."
|
||||
type = map(list(string))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "ingress_settings" {
|
||||
description = "Ingress settings"
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "labels" {
|
||||
description = "Resource labels"
|
||||
type = map(string)
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "name" {
|
||||
description = "Name used for cloud run service"
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "prefix" {
|
||||
description = "Optional prefix used for resource names."
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "project_id" {
|
||||
description = "Project id used for all resources."
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "pubsub_triggers" {
|
||||
description = "Eventarc triggers (Pub/Sub)"
|
||||
type = list(string)
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "region" {
|
||||
description = "Region used for all resources."
|
||||
type = string
|
||||
default = "europe-west1"
|
||||
}
|
||||
|
||||
variable "revision_name" {
|
||||
description = "Revision name"
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "service_account" {
|
||||
description = "Service account email. Unused if service account is auto-created."
|
||||
type = string
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "service_account_create" {
|
||||
description = "Auto-create service account."
|
||||
type = bool
|
||||
default = false
|
||||
}
|
||||
|
||||
variable "traffic" {
|
||||
description = "Traffic"
|
||||
type = map(number)
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "volumes" {
|
||||
description = "Volumes"
|
||||
type = list(object({
|
||||
name = string
|
||||
secret_name = string
|
||||
items = list(object({
|
||||
key = string
|
||||
path = string
|
||||
}))
|
||||
}))
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "vpc_connector" {
|
||||
description = "VPC connector configuration. Set create to 'true' if a new connecto needs to be created"
|
||||
type = object({
|
||||
create = bool
|
||||
name = string
|
||||
egress_settings = string
|
||||
})
|
||||
default = null
|
||||
}
|
||||
|
||||
variable "vpc_connector_config" {
|
||||
description = "VPC connector network configuration. Must be provided if new VPC connector is being created"
|
||||
type = object({
|
||||
ip_cidr_range = string
|
||||
network = string
|
||||
})
|
||||
default = null
|
||||
}
|
|
@ -1,3 +1,4 @@
|
|||
|
||||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
|
@ -14,4 +15,6 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
provider "google" {}
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -24,7 +24,6 @@ module "nginx-template" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
@ -71,7 +70,6 @@ module "nginx-template" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
@ -125,7 +123,6 @@ module "nginx-template" {
|
|||
subnetwork = var.subnet.self_link,
|
||||
nat = false,
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
@ -182,7 +179,6 @@ module "nginx-template" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
@ -235,7 +231,6 @@ module "nginx-template" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
|
|
@ -1,22 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google-beta = ">= 3.54.0"
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@ module "simple-vm-example" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
service_account_create = true
|
||||
}
|
||||
|
@ -54,7 +53,6 @@ module "simple-vm-example" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
attached_disks = [{
|
||||
name = "repd-1"
|
||||
|
@ -85,7 +83,6 @@ module "simple-vm-example" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
attached_disks = [{
|
||||
name = "repd"
|
||||
|
@ -119,7 +116,6 @@ module "kms-vm-example" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
attached_disks = [
|
||||
{
|
||||
|
@ -147,23 +143,80 @@ module "kms-vm-example" {
|
|||
|
||||
### Using Alias IPs
|
||||
|
||||
This example shows how add additional [Alias IPs](https://cloud.google.com/vpc/docs/alias-ip) to your VM.
|
||||
This example shows how to add additional [Alias IPs](https://cloud.google.com/vpc/docs/alias-ip) to your VM.
|
||||
|
||||
```hcl
|
||||
module "vm-with-alias-ips" {
|
||||
source = "./modules/compute-vm"
|
||||
project_id = "my-project"
|
||||
zone = "europe-west1-b"
|
||||
zone = "europe-west1-b"
|
||||
name = "test"
|
||||
network_interfaces = [{
|
||||
network = var.vpc.self_link
|
||||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = {
|
||||
alias1 = "10.16.0.10/32"
|
||||
}
|
||||
}]
|
||||
network_interface_options = {
|
||||
0 = {
|
||||
alias_ips = {
|
||||
alias1 = "10.16.0.10/32"
|
||||
}
|
||||
nic_type = null
|
||||
}
|
||||
}
|
||||
service_account_create = true
|
||||
}
|
||||
# tftest:modules=1:resources=2
|
||||
```
|
||||
|
||||
### Using gVNIC
|
||||
|
||||
This example shows how to enable [gVNIC](https://cloud.google.com/compute/docs/networking/using-gvnic) on your VM by customizing a `cos` image. Given that gVNIC needs to be enabled as an instance configuration and as a guest os configuration, you'll need to supply a bootable disk with `guest_os_features=GVNIC`. `SEV_CAPABLE`, `UEFI_COMPATIBLE` and `VIRTIO_SCSI_MULTIQUEUE` are enabled implicitly in the `cos`, `rhel`, `centos` and other images.
|
||||
|
||||
```hcl
|
||||
|
||||
resource "google_compute_image" "cos-gvnic" {
|
||||
project = "my-project"
|
||||
name = "my-image"
|
||||
source_image = "https://www.googleapis.com/compute/v1/projects/cos-cloud/global/images/cos-89-16108-534-18"
|
||||
|
||||
guest_os_features {
|
||||
type = "GVNIC"
|
||||
}
|
||||
guest_os_features {
|
||||
type = "SEV_CAPABLE"
|
||||
}
|
||||
guest_os_features {
|
||||
type = "UEFI_COMPATIBLE"
|
||||
}
|
||||
guest_os_features {
|
||||
type = "VIRTIO_SCSI_MULTIQUEUE"
|
||||
}
|
||||
}
|
||||
|
||||
module "vm-with-gvnic" {
|
||||
source = "./modules/compute-vm"
|
||||
project_id = "my-project"
|
||||
zone = "europe-west1-b"
|
||||
name = "test"
|
||||
boot_disk = {
|
||||
image = google_compute_image.cos-gvnic.self_link
|
||||
type = "pd-ssd"
|
||||
size = 10
|
||||
}
|
||||
network_interfaces = [{
|
||||
network = var.vpc.self_link
|
||||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
}]
|
||||
network_interface_options = {
|
||||
0 = {
|
||||
alias_ips = null
|
||||
nic_type = "GVNIC"
|
||||
}
|
||||
}
|
||||
service_account_create = true
|
||||
}
|
||||
# tftest:modules=1:resources=2
|
||||
|
@ -184,7 +237,6 @@ module "cos-test" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
@ -225,7 +277,6 @@ module "instance-group" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
@ -248,7 +299,7 @@ module "instance-group" {
|
|||
| name | description | type | required | default |
|
||||
|---|---|:---: |:---:|:---:|
|
||||
| name | Instance name. | <code title="">string</code> | ✓ | |
|
||||
| network_interfaces | Network interfaces configuration. Use self links for Shared VPC, set addresses and alias_ips to null if not needed. | <code title="list(object({ nat = bool network = string subnetwork = string addresses = object({ internal = string external = string }) alias_ips = map(string) }))">list(object({...}))</code> | ✓ | |
|
||||
| network_interfaces | Network interfaces configuration. Use self links for Shared VPC, set addresses to null if not needed. | <code title="list(object({ nat = bool network = string subnetwork = string addresses = object({ internal = string external = string }) }))">list(object({...}))</code> | ✓ | |
|
||||
| project_id | Project id. | <code title="">string</code> | ✓ | |
|
||||
| zone | Compute zone. | <code title="">string</code> | ✓ | |
|
||||
| *attached_disk_defaults* | Defaults for attached disks options. | <code title="object({ mode = string replica_zone = string type = string })">object({...})</code> | | <code title="{ auto_delete = true mode = "READ_WRITE" replica_zone = null type = "pd-balanced" }">...</code> |
|
||||
|
@ -268,6 +319,7 @@ module "instance-group" {
|
|||
| *labels* | Instance labels. | <code title="map(string)">map(string)</code> | | <code title="">{}</code> |
|
||||
| *metadata* | Instance metadata. | <code title="map(string)">map(string)</code> | | <code title="">{}</code> |
|
||||
| *min_cpu_platform* | Minimum CPU platform. | <code title="">string</code> | | <code title="">null</code> |
|
||||
| *network_interface_options* | Network interfaces extended options. The key is the index of the inteface to configure. The value is an object with alias_ips and nic_type. Set alias_ips or nic_type to null if you need only one of them. | <code title="map(object({ alias_ips = map(string) nic_type = string }))">map(object({...}))</code> | | <code title="">{}</code> |
|
||||
| *options* | Instance options. | <code title="object({ allow_stopping_for_update = bool deletion_protection = bool preemptible = bool })">object({...})</code> | | <code title="{ allow_stopping_for_update = true deletion_protection = false preemptible = false }">...</code> |
|
||||
| *scratch_disks* | Scratch disks configuration. | <code title="object({ count = number interface = string })">object({...})</code> | | <code title="{ count = 0 interface = "NVME" }">...</code> |
|
||||
| *service_account* | Service account email. Unused if service account is auto-created. | <code title="">string</code> | | <code title="">null</code> |
|
||||
|
|
|
@ -60,6 +60,13 @@ locals {
|
|||
]
|
||||
)
|
||||
)
|
||||
|
||||
network_interface_options = {
|
||||
for i, v in var.network_interfaces : i => lookup(var.network_interface_options, i, {
|
||||
alias_ips = null,
|
||||
nic_type = null
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
resource "google_compute_disk" "disks" {
|
||||
|
@ -193,13 +200,14 @@ resource "google_compute_instance" "default" {
|
|||
}
|
||||
}
|
||||
dynamic "alias_ip_range" {
|
||||
for_each = config.value.alias_ips != null ? config.value.alias_ips : {}
|
||||
for_each = local.network_interface_options[config.key].alias_ips != null ? local.network_interface_options[config.key].alias_ips : {}
|
||||
iterator = config_alias
|
||||
content {
|
||||
subnetwork_range_name = config_alias.key
|
||||
ip_cidr_range = config_alias.value
|
||||
}
|
||||
}
|
||||
nic_type = local.network_interface_options[config.key].nic_type
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -318,13 +326,14 @@ resource "google_compute_instance_template" "default" {
|
|||
}
|
||||
}
|
||||
dynamic "alias_ip_range" {
|
||||
for_each = config.value.alias_ips != null ? config.value.alias_ips : {}
|
||||
for_each = local.network_interface_options[config.key].alias_ips != null ? local.network_interface_options[config.key].alias_ips : {}
|
||||
iterator = config_alias
|
||||
content {
|
||||
subnetwork_range_name = config_alias.key
|
||||
ip_cidr_range = config_alias.value
|
||||
}
|
||||
}
|
||||
nic_type = local.network_interface_options[config.key].nic_type
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -162,8 +162,17 @@ variable "name" {
|
|||
type = string
|
||||
}
|
||||
|
||||
variable "network_interface_options" {
|
||||
description = "Network interfaces extended options. The key is the index of the inteface to configure. The value is an object with alias_ips and nic_type. Set alias_ips or nic_type to null if you need only one of them."
|
||||
type = map(object({
|
||||
alias_ips = map(string)
|
||||
nic_type = string
|
||||
}))
|
||||
default = {}
|
||||
}
|
||||
|
||||
variable "network_interfaces" {
|
||||
description = "Network interfaces configuration. Use self links for Shared VPC, set addresses and alias_ips to null if not needed."
|
||||
description = "Network interfaces configuration. Use self links for Shared VPC, set addresses to null if not needed."
|
||||
type = list(object({
|
||||
nat = bool
|
||||
network = string
|
||||
|
@ -172,7 +181,6 @@ variable "network_interfaces" {
|
|||
internal = string
|
||||
external = string
|
||||
})
|
||||
alias_ips = map(string)
|
||||
}))
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Google Cloud Data Fusion Module
|
||||
|
||||
This module allows simple management of ['Google Data Fusion'](https://cloud.google.com/data-fusion) instances. It supports creating Basic or Enterprise, public or private instances.
|
||||
This module allows simple management of ['Google Data Fusion'](https://cloud.google.com/data-fusion) instances. It supports creating Basic or Enterprise, public or private instances.
|
||||
|
||||
## Examples
|
||||
|
||||
|
@ -8,13 +8,15 @@ This module allows simple management of ['Google Data Fusion'](https://cloud.goo
|
|||
|
||||
```hcl
|
||||
module "datafusion" {
|
||||
source = "./modules/datafusion"
|
||||
name = "my-datafusion"
|
||||
region = "europe-west1"
|
||||
project_id = "my-project"
|
||||
network = "my-network-name"
|
||||
source = "./modules/datafusion"
|
||||
name = "my-datafusion"
|
||||
region = "europe-west1"
|
||||
project_id = "my-project"
|
||||
network = "my-network-name"
|
||||
# TODO: remove the following line
|
||||
firewall_create = false
|
||||
}
|
||||
# tftest:modules=1:resources=4
|
||||
# tftest:modules=1:resources=3
|
||||
```
|
||||
|
||||
### Externally managed IP allocation
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,23 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13.0"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = ">= 3.10"
|
||||
google-beta = ">= 3.20"
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,22 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13.0"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = ">= 3.57"
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -114,6 +114,9 @@ resource "google_storage_notification" "notification" {
|
|||
topic = google_pubsub_topic.topic[0].id
|
||||
event_types = var.notification_config.event_types
|
||||
custom_attributes = var.notification_config.custom_attributes
|
||||
|
||||
depends_on = [google_pubsub_topic_iam_binding.binding]
|
||||
|
||||
}
|
||||
resource "google_pubsub_topic_iam_binding" "binding" {
|
||||
count = local.notification ? 1 : 0
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.13.0"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -59,8 +59,11 @@ resource "google_container_cluster" "cluster" {
|
|||
|
||||
# TODO(ludomagno): compute addons map in locals and use a single dynamic block
|
||||
addons_config {
|
||||
dns_cache_config {
|
||||
enabled = var.addons.dns_cache_config
|
||||
dynamic "dns_cache_config" {
|
||||
for_each = var.enable_autopilot ? [] : [""]
|
||||
content {
|
||||
enabled = var.addons.dns_cache_config
|
||||
}
|
||||
}
|
||||
http_load_balancing {
|
||||
disabled = !var.addons.http_load_balancing
|
||||
|
@ -247,7 +250,7 @@ resource "google_container_cluster" "cluster" {
|
|||
dynamic "workload_identity_config" {
|
||||
for_each = var.workload_identity && !var.enable_autopilot ? [""] : []
|
||||
content {
|
||||
identity_namespace = "${var.project_id}.svc.id.goog"
|
||||
workload_pool = "${var.project_id}.svc.id.goog"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ locals {
|
|||
prefix = var.prefix != null ? "${var.prefix}-" : ""
|
||||
resource_email_static = "${local.prefix}${var.name}@${var.project_id}.iam.gserviceaccount.com"
|
||||
resource_iam_email_static = "serviceAccount:${local.resource_email_static}"
|
||||
resource_iam_email = "serviceAccount:${local.service_account.email}"
|
||||
resource_iam_email = local.service_account != null ? "serviceAccount:${local.service_account.email}" : local.resource_iam_email_static
|
||||
service_account = (
|
||||
var.service_account_create
|
||||
? try(google_service_account.service_account.0, null)
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -86,10 +86,10 @@ module "kms" {
|
|||
|
||||
| name | description | sensitive |
|
||||
|---|---|:---:|
|
||||
| key_self_links | Key self links. | |
|
||||
| id | Keyring self link. | |
|
||||
| key_ids | Key self links. | |
|
||||
| keyring | Keyring resource. | |
|
||||
| keys | Key resources. | |
|
||||
| location | Keyring location. | |
|
||||
| name | Keyring name. | |
|
||||
| self_link | Keyring self link. | |
|
||||
<!-- END TFDOC -->
|
||||
|
|
|
@ -52,14 +52,14 @@ resource "google_kms_key_ring" "default" {
|
|||
|
||||
resource "google_kms_key_ring_iam_binding" "default" {
|
||||
for_each = var.iam
|
||||
key_ring_id = local.keyring.self_link
|
||||
key_ring_id = local.keyring.id
|
||||
role = each.key
|
||||
members = each.value
|
||||
}
|
||||
|
||||
resource "google_kms_crypto_key" "default" {
|
||||
for_each = var.keys
|
||||
key_ring = local.keyring.self_link
|
||||
key_ring = local.keyring.id
|
||||
name = each.key
|
||||
rotation_period = try(each.value.rotation_period, null)
|
||||
labels = try(each.value.labels, null)
|
||||
|
@ -79,6 +79,6 @@ resource "google_kms_crypto_key_iam_binding" "default" {
|
|||
"${binding.key}.${binding.role}" => binding
|
||||
}
|
||||
role = each.value.role
|
||||
crypto_key_id = google_kms_crypto_key.default[each.value.key].self_link
|
||||
crypto_key_id = google_kms_crypto_key.default[each.value.key].id
|
||||
members = each.value.members
|
||||
}
|
||||
|
|
|
@ -14,12 +14,19 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
output "id" {
|
||||
description = "Keyring self link."
|
||||
value = local.keyring.id
|
||||
depends_on = [
|
||||
google_kms_key_ring_iam_binding.default
|
||||
]
|
||||
}
|
||||
|
||||
output "key_self_links" {
|
||||
output "key_ids" {
|
||||
description = "Key self links."
|
||||
value = {
|
||||
for name, resource in google_kms_crypto_key.default :
|
||||
name => resource.self_link
|
||||
name => resource.id
|
||||
}
|
||||
depends_on = [
|
||||
google_kms_crypto_key_iam_binding.default
|
||||
|
@ -57,11 +64,3 @@ output "name" {
|
|||
google_kms_key_ring_iam_binding.default
|
||||
]
|
||||
}
|
||||
|
||||
output "self_link" {
|
||||
description = "Keyring self link."
|
||||
value = local.keyring.self_link
|
||||
depends_on = [
|
||||
google_kms_key_ring_iam_binding.default
|
||||
]
|
||||
}
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,22 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google-beta = ">= 3.40.0"
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,19 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -72,7 +72,6 @@ module "instance-group" {
|
|||
subnetwork = var.subnet.self_link
|
||||
nat = false
|
||||
addresses = null
|
||||
alias_ips = null
|
||||
}]
|
||||
boot_disk = {
|
||||
image = "projects/cos-cloud/global/images/family/cos-stable"
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,18 +1,29 @@
|
|||
/**
|
||||
* Copyright 2021 Google LLC
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
# Copyright 2021 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
terraform {
|
||||
required_version = ">= 0.12.6"
|
||||
}
|
||||
required_version = ">= 1.0.0"
|
||||
required_providers {
|
||||
google = {
|
||||
source = "hashicorp/google"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
google-beta = {
|
||||
source = "hashicorp/google-beta"
|
||||
version = ">= 4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue