Terraform Cloud Secret Sync Integration

This commit is contained in:
carlosmonastyrski
2025-04-04 09:54:53 -03:00
parent f00a54ed54
commit 4d41513abf
17 changed files with 212 additions and 113 deletions
@@ -1,11 +1,11 @@
export type TTerraformCloudOrganization = {
name: string;
id: string;
projects: TTerraformCloudProject[];
variableSets: TTerraformCloudVariableSet[];
workspaces: TTerraformCloudWorkspace[];
};
export type TTerraformCloudProject = {
export type TTerraformCloudVariableSet = {
id: string;
name: string;
};
@@ -18,13 +18,15 @@ export type TTerraformCloudWorkspace = {
export type TTerraformCloudConnectionOrganization = {
id: string;
name: string;
projects: TTerraformCloudConnectionProject[];
variableSets: TTerraformCloudConnectionVariableSet[];
workspaces: TTerraformCloudConnectionWorkspace[];
};
export type TTerraformCloudConnectionProject = {
export type TTerraformCloudConnectionVariableSet = {
id: string;
name: string;
description: string;
global: boolean;
};
export type TTerraformCloudConnectionWorkspace = {
@@ -33,14 +35,19 @@ export type TTerraformCloudConnectionWorkspace = {
};
export enum TerraformCloudSyncScope {
Project = "project",
VariableSet = "variable-set",
Workspace = "workspace"
}
export enum TerraformCloudSyncCategory {
Environment = "env",
Terraform = "terraform"
}
export const TERRAFORM_CLOUD_SYNC_SCOPES = {
[TerraformCloudSyncScope.Project]: {
name: "Project",
description: "Sync secrets to a specific project in Terraform Cloud."
[TerraformCloudSyncScope.VariableSet]: {
name: "Variable Set",
description: "Sync secrets to a specific variable set in Terraform Cloud."
},
[TerraformCloudSyncScope.Workspace]: {
name: "Workspace",
@@ -2,18 +2,24 @@ import { AppConnection } from "@app/hooks/api/appConnections/enums";
import { SecretSync } from "@app/hooks/api/secretSyncs";
import { TRootSecretSync } from "@app/hooks/api/secretSyncs/types/root-sync";
import { TerraformCloudSyncCategory } from "../../appConnections/terraform-cloud";
export type TTerraformCloudSync = TRootSecretSync & {
destination: SecretSync.TerraformCloud;
destinationConfig:
| {
scope: TerraformCloudSyncScope.Project;
scope: TerraformCloudSyncScope.VariableSet;
org: string;
project: string;
category: TerraformCloudSyncCategory;
destinationId: string;
destinationName: string;
}
| {
scope: TerraformCloudSyncScope.Workspace;
org: string;
workspace: string;
category: TerraformCloudSyncCategory;
destinationId: string;
destinationName: string;
};
connection: {
app: AppConnection.TerraformCloud;
@@ -23,6 +29,6 @@ export type TTerraformCloudSync = TRootSecretSync & {
};
export enum TerraformCloudSyncScope {
Project = "project",
VariableSet = "variable-set",
Workspace = "workspace"
}