@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.
- package/checkBusinessHours.d.ts +1 -1
- package/checkBusinessHours.js +1 -1
- package/checkExclusiveLock.d.ts +132 -0
- package/checkExclusiveLock.js +112 -0
- package/checkExclusiveLock.js.map +1 -0
- package/checkRequiredTemplate.d.ts +148 -0
- package/checkRequiredTemplate.js +129 -0
- package/checkRequiredTemplate.js.map +1 -0
- package/elasticPool.d.ts +216 -0
- package/elasticPool.js +132 -0
- package/elasticPool.js.map +1 -0
- package/getServiceEndpointAzureRM.d.ts +4 -0
- package/getServiceEndpointAzureRM.js.map +1 -1
- package/index.d.ts +9 -0
- package/index.js +18 -3
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/package.json.dev +2 -2
- package/pipelineAuthorization.d.ts +6 -5
- package/pipelineAuthorization.js +3 -2
- package/pipelineAuthorization.js.map +1 -1
- package/provider.js +1 -1
- package/provider.js.map +1 -1
- package/serviceEndpointAzureRM.d.ts +108 -3
- package/serviceEndpointAzureRM.js +92 -3
- package/serviceEndpointAzureRM.js.map +1 -1
- package/serviceendpoint/azureRM.d.ts +108 -3
- package/serviceendpoint/azureRM.js +92 -3
- package/serviceendpoint/azureRM.js.map +1 -1
- package/types/input.d.ts +22 -4
- package/types/output.d.ts +22 -4
|
@@ -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
|
-
*
|
|
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
|
/**
|
package/pipelineAuthorization.js
CHANGED
|
@@ -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
|
-
*
|
|
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":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AACzC,yCAAyC;AAEzC
|
|
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;
|
|
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":";AAAA,wFAAwF;AACxF,iFAAiF;;;AAEjF,yCAAyC;AAGzC,yCAAyC;AAEzC
|
|
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
|
*/
|