server/kotlin-dsl/HashicorpVaultConnection.xml (195 lines of code) (raw):

<?xml version="1.0" encoding="UTF-8"?> <dsl-extension kind="projectFeature" type="OAuthProvider" generateDslJar="true" applicable="params['providerType'] == 'teamcity-vault'"> <class name="HashiCorpVaultConnection"> <description> Stores information and configuration for the access to a HashiCorp Vault. </description> </class> <init> <param name="providerType" value="teamcity-vault" /> </init> <function name="hashiCorpVaultConnection"> <description> @see HashiCorpVaultConnection </description> </function> <params> <param name="displayName" dslName="name"> <description> HashiCorp Vault connection display name </description> </param> <param name="namespace" dslName="vaultId" type="string"> <description> Vault ID. Should be provided in case of multiple vault connections </description> <deprecated replaceWith="id" strict="false"> Use `id` property instead </deprecated> </param> <param name="namespace" dslName="namespace" type="string" deprecated="true"> <description> Vault ID. Should be provided in case of multiple vault connections </description> <deprecated replaceWith="vaultId"> Use `id` property instead </deprecated> </param> <param name="vault-namespace" dslName="vaultNamespace" type="string"> <description> HashiCorp Vault namespace that the auth method and secrets engines are housed under. </description> </param> <param name="url" dslName="url" type="string"> <description> Vault URL </description> </param> <param name="auth-method" dslName="authMethod" type="compound"> <description> The way how to obtain credentials (just provide the keys, assume IAM role or other) </description> <option name="appRole" value="approle"> <param name="endpoint" dslName="endpointPath" type="string"> <description> AppRole auth endpoint path </description> </param> <param name="role-id" dslName="roleId" type="string" mandatory="true"> <description> AppRole Role ID </description> </param> <param name="secure:secret-id" dslName="secretId" type="string" mandatory="true"> <description> AppRole Secret ID </description> </param> </option> <option name="ldap" value="ldap"> <param name="path" dslName="path" type="string" mandatory="true"> <description> Path of the ldap authentication backend mount </description> </param> <param name="username" dslName="username" type="string" mandatory="true"> <description> LDAP Username </description> </param> <param name="secure:password" dslName="password" type="string" mandatory="true"> <description> LDAP Password </description> </param> </option> <option name="gcpIam" value="gcp-iam"> <param name="gcp-role" dslName="gcpVaultRole" type="string" mandatory="true"> <description> Vault GCP IAM Role </description> </param> <param name="gcp-service-account" dslName="gcpServiceAccount" type="string" mandatory="false"> <description> GCP Service Account </description> </param> <param name="gcp-endpoint-path" dslName="gcpEndpointPath" type="string" mandatory="false"> <description> Vault GCP mount path, defaults to 'gcp' </description> </param> </option> </param> <param name="fail-on-error" dslName="failOnError" type="boolean" trueValue="true" falseValue="false"> <deprecated strict="false"> Failing on errors can lead to builds working unexpectedly without the parameters and is not advisable for secure parameters. </deprecated> <description> Whether to fail builds in case of parameter resolving error </description> </param> </params> <examples> <example> <description> Adds a new Connection that allows TeamCity to connect to a HashiCorpVault using AppRole </description> <code> hashiCorpVaultConnection { id = "PROJECT_ID" name = "HashiCorp Vault" authMethod = appRole { endpointPath = "approle" roleId = "id" secretId = "credentialsJSON:ee2362ab-33fb-40bd-b49b-e77c4a45e978" } } </code> </example> <example> <description> Adds a new Connection that allows TeamCity to connect to a HashiCorpVault using AppRole. It defines it own parameter namespace and a respective vault namespace. </description> <code> hashiCorpVaultConnection { id = "PROJECT_ID" name = "HashiCorp Vault" vaultId = "other-namespace" vaultNamespace = "other" authMethod = appRole { endpointPath = "approle" roleId = "id" secretId = "credentialsJSON:ee2362ab-33fb-40bd-b49b-e77c4a45e978" } } </code> </example> <example> <description> Adds a new Connection that allows TeamCity to connect to a HashiCorpVault using LDAP </description> <code> hashiCorpVaultConnection { id = "PROJECT_ID" name = "HashiCorp Vault" authMethod = ldap { path = "path" username = "username" password = "credentialsJSON:636e34b4-d02e-4f27-9d12-141f75e8832b" } } </code> </example> <example> <description> Adds a new Connection that allows TeamCity to connect to a HashiCorpVault using GCP IAM, relying on default GCP credentials and the default Vault path </description> <code> hashiCorpVaultConnection { id = "PROJECT_ID" name = "HashiCorp Vault" authMethod = gcpIam { gcpVaultRole = "role" } } </code> </example> <example> <description> Adds a new Connection that allows TeamCity to connect to a HashiCorpVault using GCP IAM, using a service account and a custom mount path </description> <code> hashiCorpVaultConnection { id = "PROJECT_ID" name = "HashiCorp Vault" authMethod = gcpIam { gcpVaultRole = "role" gcpServiceAccount = "gcpSericeAccount" gcpEndpointPath = "customVaultMountPath" } } </code> </example> </examples> </dsl-extension>