* feat(agent-engine): add support for container and custom image specs - Add container_config to deployment_files. - Add image_spec with build_args to source_config. - Make agent_framework optional and document supported values. - Implement dynamic specs for container and source deployments. - Add examples and automated tests for new deployment types. * chore: update Google provider version to 7.28.0 across modules Mechanical update of versions.tf and versions.tofu files using tools/versions.py. * feat(agent-engine): refactor for container deployments and API alignment - Group deployment settings under 'deployment_config' (renamed from 'deployment_files'). - Support container-based deployments via 'container_config' and 'image_spec'. - Refactor 'source_files_config' (renamed from 'source_config') to include mutually exclusive 'python_spec' and 'image_spec'. - Support 'developer_connect_config' as a source code type. - Group engine settings (framework, env, secrets) under 'agent_engine_config'. - Add support for 'memory_bank_config' persistent memory. - Overhaul reasoning engine resources with dynamic blocks to match provider schema. - Update all documentation examples, add TOC, and refresh test inventories. * Update dynamic python_spec block and related example yamls * Ignore changes setting for developer_connect_source under lifecycle management * fixing review comments for `try` and default path for `source_path` --------- Co-authored-by: Hemanand <hemr@google.com> Co-authored-by: Julio Castillo <jccb@google.com>
Google Cloud Dataform Repository module
This module allows managing a dataform repository, allows adding IAM permissions. Also enables attaching a remote repository.
Examples
Simple dataform repository with access configuration
Simple dataform repository and specifying repository access via the IAM variable.
module "dataform" {
source = "./fabric/modules/dataform-repository"
project_id = "my-project"
name = "my-repository"
region = "europe-west1"
iam = {
"roles/dataform.editor" = ["user:user1@example.org"]
}
}
# tftest modules=1 resources=2
Repository with an attached remote repository
This creates a dataform repository with a remote repository attached to it. In order to enable dataform to communicate with a 3P GIT provider, an access token must be generated and stored as a secret on GCP. For that, we utilize the existing secret-manager module.
module "secret" {
source = "./fabric/modules/secret-manager"
project_id = "fast-bi-fabric"
secrets = {
my-secret = {
versions = {
v1 = { data = "MYTOKEN" }
}
}
}
}
module "dataform" {
source = "./fabric/modules/dataform-repository"
project_id = "fast-bi-fabric"
name = "my-repository"
region = "europe-west1"
remote_repository_settings = {
url = "my-url"
secret_name = "my-secret"
token = module.secret.version_ids["my-secret/v1"]
}
}
# tftest modules=2 resources=3 skip-tofu
Variables
| name | description | type | required | default |
|---|---|---|---|---|
| name | Name of the dataform repository. | string |
✓ | |
| project_id | Id of the project where resources will be created. | string |
✓ | |
| region | The repository's region. | string |
✓ | |
| iam | IAM bindings in {ROLE => [MEMBERS]} format. Mutually exclusive with the access_* variables used for basic roles. | map(list(string)) |
{} |
|
| iam_bindings | Authoritative IAM bindings in {KEY => {role = ROLE, members = [], condition = {}}}. Keys are arbitrary. | map(object({…})) |
{} |
|
| iam_bindings_additive | Keyring individual additive IAM bindings. Keys are arbitrary. | map(object({…})) |
{} |
|
| remote_repository_settings | Remote settings required to attach the repository to a remote repository. | object({…}) |
null |
|
| service_account | Service account used to execute the dataform workflow. | string |
"" |