@pulumi/azuredevops 2.9.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,9 @@ import * as pulumi from "@pulumi/pulumi";
2
2
  /**
3
3
  * Manage pipeline access permissions to resources.
4
4
  *
5
- * > **Note** This resource is a replacement for `azuredevops.ResourceAuthorization`. Pipeline authorizations managed by `azuredevops.ResourceAuthorization` can also
6
- * be managed by this resource
5
+ * > **Note** This resource is a replacement for `azuredevops.ResourceAuthorization`. Pipeline authorizations managed by `azuredevops.ResourceAuthorization` can also be managed by this resource.
6
+ *
7
+ * > **Note** If both "All Pipeline Authorization" and "Custom Pipeline Authorization" are configured, "All Pipeline Authorization" has higher priority.
7
8
  *
8
9
  * ## Example Usage
9
10
  * ### Authorization for all pipelines
@@ -92,7 +93,7 @@ export declare class PipelineAuthorization extends pulumi.CustomResource {
92
93
  */
93
94
  static isInstance(obj: any): obj is PipelineAuthorization;
94
95
  /**
95
- * The ID of the pipeline. Changing this forces a new resource to be created
96
+ * The ID of the pipeline. If not configured, all pipelines will be authorized. Changing this forces a new resource to be created.
96
97
  */
97
98
  readonly pipelineId: pulumi.Output<number | undefined>;
98
99
  /**
@@ -121,7 +122,7 @@ export declare class PipelineAuthorization extends pulumi.CustomResource {
121
122
  */
122
123
  export interface PipelineAuthorizationState {
123
124
  /**
124
- * The ID of the pipeline. Changing this forces a new resource to be created
125
+ * The ID of the pipeline. If not configured, all pipelines will be authorized. Changing this forces a new resource to be created.
125
126
  */
126
127
  pipelineId?: pulumi.Input<number>;
127
128
  /**
@@ -142,7 +143,7 @@ export interface PipelineAuthorizationState {
142
143
  */
143
144
  export interface PipelineAuthorizationArgs {
144
145
  /**
145
- * The ID of the pipeline. Changing this forces a new resource to be created
146
+ * The ID of the pipeline. If not configured, all pipelines will be authorized. Changing this forces a new resource to be created.
146
147
  */
147
148
  pipelineId?: pulumi.Input<number>;
148
149
  /**
@@ -8,8 +8,9 @@ const utilities = require("./utilities");
8
8
  /**
9
9
  * Manage pipeline access permissions to resources.
10
10
  *
11
- * > **Note** This resource is a replacement for `azuredevops.ResourceAuthorization`. Pipeline authorizations managed by `azuredevops.ResourceAuthorization` can also
12
- * be managed by this resource
11
+ * > **Note** This resource is a replacement for `azuredevops.ResourceAuthorization`. Pipeline authorizations managed by `azuredevops.ResourceAuthorization` can also be managed by this resource.
12
+ *
13
+ * > **Note** If both "All Pipeline Authorization" and "Custom Pipeline Authorization" are configured, "All Pipeline Authorization" has higher priority.
13
14
  *
14
15
  * ## Example Usage
15
16
  * ### Authorization for all pipelines
@@ -1 +1 @@
1
- {"version":3,"file":"pipelineAuthorization.js","sourceRoot":"","sources":["../pipelineAuthorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipelineAuthorization.js","sourceRoot":"","sources":["../pipelineAuthorization.ts"],"names":[],"mappings":"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"}
package/provider.js CHANGED
@@ -20,7 +20,7 @@ class Provider extends pulumi.ProviderResource {
20
20
  if (obj === undefined || obj === null) {
21
21
  return false;
22
22
  }
23
- return obj['__pulumiType'] === Provider.__pulumiType;
23
+ return obj['__pulumiType'] === "pulumi:providers:" + Provider.__pulumiType;
24
24
  }
25
25
  /**
26
26
  * Create a Provider resource with the given unique name, arguments, and options.
package/provider.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../provider.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;GAKG;AACH,MAAa,QAAS,SAAQ,MAAM,CAAC,gBAAgB;IAIjD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC,YAAY,CAAC;IACzD,CAAC;IAWD;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,IAAmB,EAAE,IAA6B;;QACxE,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB;YACI,cAAc,CAAC,eAAe,CAAC,GAAG,MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACtH,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SAC3H;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,EAAE,uBAAuB,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxE,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7C,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;;AA1CL,4BA2CC;AA1CG,gBAAgB;AACO,qBAAY,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../provider.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC;;;;;GAKG;AACH,MAAa,QAAS,SAAQ,MAAM,CAAC,gBAAgB;IAIjD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,mBAAmB,GAAG,QAAQ,CAAC,YAAY,CAAC;IAC/E,CAAC;IAWD;;;;;;OAMG;IACH,YAAY,IAAY,EAAE,IAAmB,EAAE,IAA6B;;QACxE,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB;YACI,cAAc,CAAC,eAAe,CAAC,GAAG,MAAA,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,mCAAI,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;YACtH,cAAc,CAAC,qBAAqB,CAAC,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,mBAAmB,EAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;SAC3H;QACD,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,EAAE,uBAAuB,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxE,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7C,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;;AA1CL,4BA2CC;AA1CG,gBAAgB;AACO,qBAAY,GAAG,aAAa,CAAC"}
@@ -11,7 +11,7 @@ import * as outputs from "./types/output";
11
11
  * For detailed steps to create a service principal with Azure cli see the [documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest)
12
12
  *
13
13
  * ## Example Usage
14
- * ### Manual AzureRM Service Endpoint (Subscription Scoped)
14
+ * ### Service Principal Manual AzureRM Service Endpoint (Subscription Scoped)
15
15
  *
16
16
  * ```typescript
17
17
  * import * as pulumi from "@pulumi/pulumi";
@@ -27,6 +27,7 @@ import * as outputs from "./types/output";
27
27
  * projectId: exampleProject.id,
28
28
  * serviceEndpointName: "Example AzureRM",
29
29
  * description: "Managed by Terraform",
30
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
30
31
  * credentials: {
31
32
  * serviceprincipalid: "00000000-0000-0000-0000-000000000000",
32
33
  * serviceprincipalkey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
@@ -36,7 +37,7 @@ import * as outputs from "./types/output";
36
37
  * azurermSubscriptionName: "Example Subscription Name",
37
38
  * });
38
39
  * ```
39
- * ### Manual AzureRM Service Endpoint (ManagementGroup Scoped)
40
+ * ### Service Principal Manual AzureRM Service Endpoint (ManagementGroup Scoped)
40
41
  *
41
42
  * ```typescript
42
43
  * import * as pulumi from "@pulumi/pulumi";
@@ -52,6 +53,7 @@ import * as outputs from "./types/output";
52
53
  * projectId: exampleProject.id,
53
54
  * serviceEndpointName: "Example AzureRM",
54
55
  * description: "Managed by Terraform",
56
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
55
57
  * credentials: {
56
58
  * serviceprincipalid: "00000000-0000-0000-0000-000000000000",
57
59
  * serviceprincipalkey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
@@ -61,7 +63,7 @@ import * as outputs from "./types/output";
61
63
  * azurermManagementGroupName: "managementGroup",
62
64
  * });
63
65
  * ```
64
- * ### Automatic AzureRM Service Endpoint
66
+ * ### Service Principal Automatic AzureRM Service Endpoint
65
67
  *
66
68
  * ```typescript
67
69
  * import * as pulumi from "@pulumi/pulumi";
@@ -75,6 +77,91 @@ import * as outputs from "./types/output";
75
77
  * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
76
78
  * projectId: exampleProject.id,
77
79
  * serviceEndpointName: "Example AzureRM",
80
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
81
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
82
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
83
+ * azurermSubscriptionName: "Example Subscription Name",
84
+ * });
85
+ * ```
86
+ * ### Workload Identity Federation Manual AzureRM Service Endpoint (Subscription Scoped)
87
+ *
88
+ * ```typescript
89
+ * import * as pulumi from "@pulumi/pulumi";
90
+ * import * as azuredevops from "@pulumi/azuredevops";
91
+ * import * as azurerm from "@pulumi/azurerm";
92
+ *
93
+ * const serviceConnectionName = "example-federated-sc";
94
+ * const exampleProject = new azuredevops.Project("exampleProject", {
95
+ * visibility: "private",
96
+ * versionControl: "Git",
97
+ * workItemTemplate: "Agile",
98
+ * description: "Managed by Terraform",
99
+ * });
100
+ * const identity = new azurerm.index.Azurerm_resource_group("identity", {
101
+ * name: "identity",
102
+ * location: "UK South",
103
+ * });
104
+ * const exampleazurerm_user_assigned_identity = new azurerm.index.Azurerm_user_assigned_identity("exampleazurerm_user_assigned_identity", {
105
+ * location: _var.location,
106
+ * name: "example-identity",
107
+ * resourceGroupName: "azurerm_resource_group.identity.name",
108
+ * });
109
+ * const exampleazurerm_federated_identity_credential = new azurerm.index.Azurerm_federated_identity_credential("exampleazurerm_federated_identity_credential", {
110
+ * name: "example-federated-credential",
111
+ * resourceGroupName: identity.name,
112
+ * audience: ["api://AzureADTokenExchange"],
113
+ * issuer: "https://app.vstoken.visualstudio.com",
114
+ * parentId: exampleazurerm_user_assigned_identity.id,
115
+ * subject: `sc://${_var.azure_devops_organisation}/${exampleProject.name}/${serviceConnectionName}`,
116
+ * });
117
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
118
+ * projectId: exampleProject.id,
119
+ * serviceEndpointName: serviceConnectionName,
120
+ * description: "Managed by Terraform",
121
+ * serviceEndpointAuthenticationScheme: "WorkloadIdentityFederation",
122
+ * credentials: {
123
+ * serviceprincipalid: exampleazurerm_user_assigned_identity.clientId,
124
+ * },
125
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
126
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
127
+ * azurermSubscriptionName: "Example Subscription Name",
128
+ * });
129
+ * ```
130
+ * ### Workload Identity Federation Automatic AzureRM Service Endpoint
131
+ *
132
+ * ```typescript
133
+ * import * as pulumi from "@pulumi/pulumi";
134
+ * import * as azuredevops from "@pulumi/azuredevops";
135
+ *
136
+ * const exampleProject = new azuredevops.Project("exampleProject", {
137
+ * visibility: "private",
138
+ * versionControl: "Git",
139
+ * workItemTemplate: "Agile",
140
+ * });
141
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
142
+ * projectId: exampleProject.id,
143
+ * serviceEndpointName: "Example AzureRM",
144
+ * serviceEndpointAuthenticationScheme: "WorkloadIdentityFederation",
145
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
146
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
147
+ * azurermSubscriptionName: "Example Subscription Name",
148
+ * });
149
+ * ```
150
+ * ### Managed Identity AzureRM Service Endpoint
151
+ *
152
+ * ```typescript
153
+ * import * as pulumi from "@pulumi/pulumi";
154
+ * import * as azuredevops from "@pulumi/azuredevops";
155
+ *
156
+ * const exampleProject = new azuredevops.Project("exampleProject", {
157
+ * visibility: "private",
158
+ * versionControl: "Git",
159
+ * workItemTemplate: "Agile",
160
+ * });
161
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
162
+ * projectId: exampleProject.id,
163
+ * serviceEndpointName: "Example AzureRM",
164
+ * serviceEndpointAuthenticationScheme: "ManagedServiceIdentity",
78
165
  * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
79
166
  * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
80
167
  * azurermSubscriptionName: "Example Subscription Name",
@@ -153,6 +240,12 @@ export declare class ServiceEndpointAzureRM extends pulumi.CustomResource {
153
240
  * The resource group used for scope of automatic service endpoint.
154
241
  */
155
242
  readonly resourceGroup: pulumi.Output<string | undefined>;
243
+ /**
244
+ * Specifies the type of azurerm endpoint, either `WorkloadIdentityFederation`, `ManagedServiceIdentity` or `ServicePrincipal`. Defaults to `ServicePrincipal` for backwards compatibility.
245
+ *
246
+ * > **NOTE:** The `WorkloadIdentityFederation` authentication scheme is currently in private preview. Your organisation must be part of the preview and the feature toggle must be turned on to use it. More details can be found [here](https://aka.ms/azdo-rm-workload-identity).
247
+ */
248
+ readonly serviceEndpointAuthenticationScheme: pulumi.Output<string | undefined>;
156
249
  /**
157
250
  * The Service Endpoint Name.
158
251
  */
@@ -215,6 +308,12 @@ export interface ServiceEndpointAzureRMState {
215
308
  * The resource group used for scope of automatic service endpoint.
216
309
  */
217
310
  resourceGroup?: pulumi.Input<string>;
311
+ /**
312
+ * Specifies the type of azurerm endpoint, either `WorkloadIdentityFederation`, `ManagedServiceIdentity` or `ServicePrincipal`. Defaults to `ServicePrincipal` for backwards compatibility.
313
+ *
314
+ * > **NOTE:** The `WorkloadIdentityFederation` authentication scheme is currently in private preview. Your organisation must be part of the preview and the feature toggle must be turned on to use it. More details can be found [here](https://aka.ms/azdo-rm-workload-identity).
315
+ */
316
+ serviceEndpointAuthenticationScheme?: pulumi.Input<string>;
218
317
  /**
219
318
  * The Service Endpoint Name.
220
319
  */
@@ -269,6 +368,12 @@ export interface ServiceEndpointAzureRMArgs {
269
368
  * The resource group used for scope of automatic service endpoint.
270
369
  */
271
370
  resourceGroup?: pulumi.Input<string>;
371
+ /**
372
+ * Specifies the type of azurerm endpoint, either `WorkloadIdentityFederation`, `ManagedServiceIdentity` or `ServicePrincipal`. Defaults to `ServicePrincipal` for backwards compatibility.
373
+ *
374
+ * > **NOTE:** The `WorkloadIdentityFederation` authentication scheme is currently in private preview. Your organisation must be part of the preview and the feature toggle must be turned on to use it. More details can be found [here](https://aka.ms/azdo-rm-workload-identity).
375
+ */
376
+ serviceEndpointAuthenticationScheme?: pulumi.Input<string>;
272
377
  /**
273
378
  * The Service Endpoint Name.
274
379
  */
@@ -15,7 +15,7 @@ const utilities = require("./utilities");
15
15
  * For detailed steps to create a service principal with Azure cli see the [documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest)
16
16
  *
17
17
  * ## Example Usage
18
- * ### Manual AzureRM Service Endpoint (Subscription Scoped)
18
+ * ### Service Principal Manual AzureRM Service Endpoint (Subscription Scoped)
19
19
  *
20
20
  * ```typescript
21
21
  * import * as pulumi from "@pulumi/pulumi";
@@ -31,6 +31,7 @@ const utilities = require("./utilities");
31
31
  * projectId: exampleProject.id,
32
32
  * serviceEndpointName: "Example AzureRM",
33
33
  * description: "Managed by Terraform",
34
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
34
35
  * credentials: {
35
36
  * serviceprincipalid: "00000000-0000-0000-0000-000000000000",
36
37
  * serviceprincipalkey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
@@ -40,7 +41,7 @@ const utilities = require("./utilities");
40
41
  * azurermSubscriptionName: "Example Subscription Name",
41
42
  * });
42
43
  * ```
43
- * ### Manual AzureRM Service Endpoint (ManagementGroup Scoped)
44
+ * ### Service Principal Manual AzureRM Service Endpoint (ManagementGroup Scoped)
44
45
  *
45
46
  * ```typescript
46
47
  * import * as pulumi from "@pulumi/pulumi";
@@ -56,6 +57,7 @@ const utilities = require("./utilities");
56
57
  * projectId: exampleProject.id,
57
58
  * serviceEndpointName: "Example AzureRM",
58
59
  * description: "Managed by Terraform",
60
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
59
61
  * credentials: {
60
62
  * serviceprincipalid: "00000000-0000-0000-0000-000000000000",
61
63
  * serviceprincipalkey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
@@ -65,7 +67,7 @@ const utilities = require("./utilities");
65
67
  * azurermManagementGroupName: "managementGroup",
66
68
  * });
67
69
  * ```
68
- * ### Automatic AzureRM Service Endpoint
70
+ * ### Service Principal Automatic AzureRM Service Endpoint
69
71
  *
70
72
  * ```typescript
71
73
  * import * as pulumi from "@pulumi/pulumi";
@@ -79,6 +81,91 @@ const utilities = require("./utilities");
79
81
  * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
80
82
  * projectId: exampleProject.id,
81
83
  * serviceEndpointName: "Example AzureRM",
84
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
85
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
86
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
87
+ * azurermSubscriptionName: "Example Subscription Name",
88
+ * });
89
+ * ```
90
+ * ### Workload Identity Federation Manual AzureRM Service Endpoint (Subscription Scoped)
91
+ *
92
+ * ```typescript
93
+ * import * as pulumi from "@pulumi/pulumi";
94
+ * import * as azuredevops from "@pulumi/azuredevops";
95
+ * import * as azurerm from "@pulumi/azurerm";
96
+ *
97
+ * const serviceConnectionName = "example-federated-sc";
98
+ * const exampleProject = new azuredevops.Project("exampleProject", {
99
+ * visibility: "private",
100
+ * versionControl: "Git",
101
+ * workItemTemplate: "Agile",
102
+ * description: "Managed by Terraform",
103
+ * });
104
+ * const identity = new azurerm.index.Azurerm_resource_group("identity", {
105
+ * name: "identity",
106
+ * location: "UK South",
107
+ * });
108
+ * const exampleazurerm_user_assigned_identity = new azurerm.index.Azurerm_user_assigned_identity("exampleazurerm_user_assigned_identity", {
109
+ * location: _var.location,
110
+ * name: "example-identity",
111
+ * resourceGroupName: "azurerm_resource_group.identity.name",
112
+ * });
113
+ * const exampleazurerm_federated_identity_credential = new azurerm.index.Azurerm_federated_identity_credential("exampleazurerm_federated_identity_credential", {
114
+ * name: "example-federated-credential",
115
+ * resourceGroupName: identity.name,
116
+ * audience: ["api://AzureADTokenExchange"],
117
+ * issuer: "https://app.vstoken.visualstudio.com",
118
+ * parentId: exampleazurerm_user_assigned_identity.id,
119
+ * subject: `sc://${_var.azure_devops_organisation}/${exampleProject.name}/${serviceConnectionName}`,
120
+ * });
121
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
122
+ * projectId: exampleProject.id,
123
+ * serviceEndpointName: serviceConnectionName,
124
+ * description: "Managed by Terraform",
125
+ * serviceEndpointAuthenticationScheme: "WorkloadIdentityFederation",
126
+ * credentials: {
127
+ * serviceprincipalid: exampleazurerm_user_assigned_identity.clientId,
128
+ * },
129
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
130
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
131
+ * azurermSubscriptionName: "Example Subscription Name",
132
+ * });
133
+ * ```
134
+ * ### Workload Identity Federation Automatic AzureRM Service Endpoint
135
+ *
136
+ * ```typescript
137
+ * import * as pulumi from "@pulumi/pulumi";
138
+ * import * as azuredevops from "@pulumi/azuredevops";
139
+ *
140
+ * const exampleProject = new azuredevops.Project("exampleProject", {
141
+ * visibility: "private",
142
+ * versionControl: "Git",
143
+ * workItemTemplate: "Agile",
144
+ * });
145
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
146
+ * projectId: exampleProject.id,
147
+ * serviceEndpointName: "Example AzureRM",
148
+ * serviceEndpointAuthenticationScheme: "WorkloadIdentityFederation",
149
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
150
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
151
+ * azurermSubscriptionName: "Example Subscription Name",
152
+ * });
153
+ * ```
154
+ * ### Managed Identity AzureRM Service Endpoint
155
+ *
156
+ * ```typescript
157
+ * import * as pulumi from "@pulumi/pulumi";
158
+ * import * as azuredevops from "@pulumi/azuredevops";
159
+ *
160
+ * const exampleProject = new azuredevops.Project("exampleProject", {
161
+ * visibility: "private",
162
+ * versionControl: "Git",
163
+ * workItemTemplate: "Agile",
164
+ * });
165
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
166
+ * projectId: exampleProject.id,
167
+ * serviceEndpointName: "Example AzureRM",
168
+ * serviceEndpointAuthenticationScheme: "ManagedServiceIdentity",
82
169
  * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
83
170
  * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
84
171
  * azurermSubscriptionName: "Example Subscription Name",
@@ -135,6 +222,7 @@ class ServiceEndpointAzureRM extends pulumi.CustomResource {
135
222
  resourceInputs["environment"] = state ? state.environment : undefined;
136
223
  resourceInputs["projectId"] = state ? state.projectId : undefined;
137
224
  resourceInputs["resourceGroup"] = state ? state.resourceGroup : undefined;
225
+ resourceInputs["serviceEndpointAuthenticationScheme"] = state ? state.serviceEndpointAuthenticationScheme : undefined;
138
226
  resourceInputs["serviceEndpointName"] = state ? state.serviceEndpointName : undefined;
139
227
  }
140
228
  else {
@@ -159,6 +247,7 @@ class ServiceEndpointAzureRM extends pulumi.CustomResource {
159
247
  resourceInputs["environment"] = args ? args.environment : undefined;
160
248
  resourceInputs["projectId"] = args ? args.projectId : undefined;
161
249
  resourceInputs["resourceGroup"] = args ? args.resourceGroup : undefined;
250
+ resourceInputs["serviceEndpointAuthenticationScheme"] = args ? args.serviceEndpointAuthenticationScheme : undefined;
162
251
  resourceInputs["serviceEndpointName"] = args ? args.serviceEndpointName : undefined;
163
252
  }
164
253
  opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
@@ -1 +1 @@
1
- {"version":3,"file":"serviceEndpointAzureRM.js","sourceRoot":"","sources":["../serviceEndpointAzureRM.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serviceEndpointAzureRM.js","sourceRoot":"","sources":["../serviceEndpointAzureRM.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import * as outputs from "../types/output";
11
11
  * For detailed steps to create a service principal with Azure cli see the [documentation](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest)
12
12
  *
13
13
  * ## Example Usage
14
- * ### Manual AzureRM Service Endpoint (Subscription Scoped)
14
+ * ### Service Principal Manual AzureRM Service Endpoint (Subscription Scoped)
15
15
  *
16
16
  * ```typescript
17
17
  * import * as pulumi from "@pulumi/pulumi";
@@ -27,6 +27,7 @@ import * as outputs from "../types/output";
27
27
  * projectId: exampleProject.id,
28
28
  * serviceEndpointName: "Example AzureRM",
29
29
  * description: "Managed by Terraform",
30
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
30
31
  * credentials: {
31
32
  * serviceprincipalid: "00000000-0000-0000-0000-000000000000",
32
33
  * serviceprincipalkey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
@@ -36,7 +37,7 @@ import * as outputs from "../types/output";
36
37
  * azurermSubscriptionName: "Example Subscription Name",
37
38
  * });
38
39
  * ```
39
- * ### Manual AzureRM Service Endpoint (ManagementGroup Scoped)
40
+ * ### Service Principal Manual AzureRM Service Endpoint (ManagementGroup Scoped)
40
41
  *
41
42
  * ```typescript
42
43
  * import * as pulumi from "@pulumi/pulumi";
@@ -52,6 +53,7 @@ import * as outputs from "../types/output";
52
53
  * projectId: exampleProject.id,
53
54
  * serviceEndpointName: "Example AzureRM",
54
55
  * description: "Managed by Terraform",
56
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
55
57
  * credentials: {
56
58
  * serviceprincipalid: "00000000-0000-0000-0000-000000000000",
57
59
  * serviceprincipalkey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
@@ -61,7 +63,7 @@ import * as outputs from "../types/output";
61
63
  * azurermManagementGroupName: "managementGroup",
62
64
  * });
63
65
  * ```
64
- * ### Automatic AzureRM Service Endpoint
66
+ * ### Service Principal Automatic AzureRM Service Endpoint
65
67
  *
66
68
  * ```typescript
67
69
  * import * as pulumi from "@pulumi/pulumi";
@@ -75,6 +77,91 @@ import * as outputs from "../types/output";
75
77
  * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
76
78
  * projectId: exampleProject.id,
77
79
  * serviceEndpointName: "Example AzureRM",
80
+ * serviceEndpointAuthenticationScheme: "ServicePrincipal",
81
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
82
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
83
+ * azurermSubscriptionName: "Example Subscription Name",
84
+ * });
85
+ * ```
86
+ * ### Workload Identity Federation Manual AzureRM Service Endpoint (Subscription Scoped)
87
+ *
88
+ * ```typescript
89
+ * import * as pulumi from "@pulumi/pulumi";
90
+ * import * as azuredevops from "@pulumi/azuredevops";
91
+ * import * as azurerm from "@pulumi/azurerm";
92
+ *
93
+ * const serviceConnectionName = "example-federated-sc";
94
+ * const exampleProject = new azuredevops.Project("exampleProject", {
95
+ * visibility: "private",
96
+ * versionControl: "Git",
97
+ * workItemTemplate: "Agile",
98
+ * description: "Managed by Terraform",
99
+ * });
100
+ * const identity = new azurerm.index.Azurerm_resource_group("identity", {
101
+ * name: "identity",
102
+ * location: "UK South",
103
+ * });
104
+ * const exampleazurerm_user_assigned_identity = new azurerm.index.Azurerm_user_assigned_identity("exampleazurerm_user_assigned_identity", {
105
+ * location: _var.location,
106
+ * name: "example-identity",
107
+ * resourceGroupName: "azurerm_resource_group.identity.name",
108
+ * });
109
+ * const exampleazurerm_federated_identity_credential = new azurerm.index.Azurerm_federated_identity_credential("exampleazurerm_federated_identity_credential", {
110
+ * name: "example-federated-credential",
111
+ * resourceGroupName: identity.name,
112
+ * audience: ["api://AzureADTokenExchange"],
113
+ * issuer: "https://app.vstoken.visualstudio.com",
114
+ * parentId: exampleazurerm_user_assigned_identity.id,
115
+ * subject: `sc://${_var.azure_devops_organisation}/${exampleProject.name}/${serviceConnectionName}`,
116
+ * });
117
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
118
+ * projectId: exampleProject.id,
119
+ * serviceEndpointName: serviceConnectionName,
120
+ * description: "Managed by Terraform",
121
+ * serviceEndpointAuthenticationScheme: "WorkloadIdentityFederation",
122
+ * credentials: {
123
+ * serviceprincipalid: exampleazurerm_user_assigned_identity.clientId,
124
+ * },
125
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
126
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
127
+ * azurermSubscriptionName: "Example Subscription Name",
128
+ * });
129
+ * ```
130
+ * ### Workload Identity Federation Automatic AzureRM Service Endpoint
131
+ *
132
+ * ```typescript
133
+ * import * as pulumi from "@pulumi/pulumi";
134
+ * import * as azuredevops from "@pulumi/azuredevops";
135
+ *
136
+ * const exampleProject = new azuredevops.Project("exampleProject", {
137
+ * visibility: "private",
138
+ * versionControl: "Git",
139
+ * workItemTemplate: "Agile",
140
+ * });
141
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
142
+ * projectId: exampleProject.id,
143
+ * serviceEndpointName: "Example AzureRM",
144
+ * serviceEndpointAuthenticationScheme: "WorkloadIdentityFederation",
145
+ * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
146
+ * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
147
+ * azurermSubscriptionName: "Example Subscription Name",
148
+ * });
149
+ * ```
150
+ * ### Managed Identity AzureRM Service Endpoint
151
+ *
152
+ * ```typescript
153
+ * import * as pulumi from "@pulumi/pulumi";
154
+ * import * as azuredevops from "@pulumi/azuredevops";
155
+ *
156
+ * const exampleProject = new azuredevops.Project("exampleProject", {
157
+ * visibility: "private",
158
+ * versionControl: "Git",
159
+ * workItemTemplate: "Agile",
160
+ * });
161
+ * const exampleServiceEndpointAzureRM = new azuredevops.ServiceEndpointAzureRM("exampleServiceEndpointAzureRM", {
162
+ * projectId: exampleProject.id,
163
+ * serviceEndpointName: "Example AzureRM",
164
+ * serviceEndpointAuthenticationScheme: "ManagedServiceIdentity",
78
165
  * azurermSpnTenantid: "00000000-0000-0000-0000-000000000000",
79
166
  * azurermSubscriptionId: "00000000-0000-0000-0000-000000000000",
80
167
  * azurermSubscriptionName: "Example Subscription Name",
@@ -155,6 +242,12 @@ export declare class AzureRM extends pulumi.CustomResource {
155
242
  * The resource group used for scope of automatic service endpoint.
156
243
  */
157
244
  readonly resourceGroup: pulumi.Output<string | undefined>;
245
+ /**
246
+ * Specifies the type of azurerm endpoint, either `WorkloadIdentityFederation`, `ManagedServiceIdentity` or `ServicePrincipal`. Defaults to `ServicePrincipal` for backwards compatibility.
247
+ *
248
+ * > **NOTE:** The `WorkloadIdentityFederation` authentication scheme is currently in private preview. Your organisation must be part of the preview and the feature toggle must be turned on to use it. More details can be found [here](https://aka.ms/azdo-rm-workload-identity).
249
+ */
250
+ readonly serviceEndpointAuthenticationScheme: pulumi.Output<string | undefined>;
158
251
  /**
159
252
  * The Service Endpoint Name.
160
253
  */
@@ -218,6 +311,12 @@ export interface AzureRMState {
218
311
  * The resource group used for scope of automatic service endpoint.
219
312
  */
220
313
  resourceGroup?: pulumi.Input<string>;
314
+ /**
315
+ * Specifies the type of azurerm endpoint, either `WorkloadIdentityFederation`, `ManagedServiceIdentity` or `ServicePrincipal`. Defaults to `ServicePrincipal` for backwards compatibility.
316
+ *
317
+ * > **NOTE:** The `WorkloadIdentityFederation` authentication scheme is currently in private preview. Your organisation must be part of the preview and the feature toggle must be turned on to use it. More details can be found [here](https://aka.ms/azdo-rm-workload-identity).
318
+ */
319
+ serviceEndpointAuthenticationScheme?: pulumi.Input<string>;
221
320
  /**
222
321
  * The Service Endpoint Name.
223
322
  */
@@ -272,6 +371,12 @@ export interface AzureRMArgs {
272
371
  * The resource group used for scope of automatic service endpoint.
273
372
  */
274
373
  resourceGroup?: pulumi.Input<string>;
374
+ /**
375
+ * Specifies the type of azurerm endpoint, either `WorkloadIdentityFederation`, `ManagedServiceIdentity` or `ServicePrincipal`. Defaults to `ServicePrincipal` for backwards compatibility.
376
+ *
377
+ * > **NOTE:** The `WorkloadIdentityFederation` authentication scheme is currently in private preview. Your organisation must be part of the preview and the feature toggle must be turned on to use it. More details can be found [here](https://aka.ms/azdo-rm-workload-identity).
378
+ */
379
+ serviceEndpointAuthenticationScheme?: pulumi.Input<string>;
275
380
  /**
276
381
  * The Service Endpoint Name.
277
382
  */