Skip to content

Commit 88e0c98

Browse files
author
Dmitrii Bobreshev (Akvelon INC)
committed
[PackerBuildV0] fix PackerBuildV0 e2e tests
- transffered WIF implementation ref: #19835
1 parent e363f50 commit 88e0c98

21 files changed

+75
-6
lines changed

Tasks/PackerBuildV0/DefaultTemplates/custom.linux.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "{{env `client_id`}}",
44
"client_secret": "{{env `client_secret`}}",
5+
"client_jwt": "{{env `client_jwt`}}",
56
"subscription_id": "{{env `subscription_id`}}",
67
"tenant_id": "{{env `tenant_id`}}",
78
"object_id": "{{env `object_id`}}",
@@ -20,6 +21,7 @@
2021
"type": "azure-arm",
2122
"client_id": "{{user `client_id`}}",
2223
"client_secret": "{{user `client_secret`}}",
24+
"client_jwt": "{{user `client_jwt`}}",
2325
"resource_group_name": "{{user `resource_group`}}",
2426
"storage_account": "{{user `storage_account`}}",
2527
"subscription_id": "{{user `subscription_id`}}",

Tasks/PackerBuildV0/DefaultTemplates/custom.windows.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "{{env `client_id`}}",
44
"client_secret": "{{env `client_secret`}}",
5+
"client_jwt": "{{env `client_jwt`}}",
56
"subscription_id": "{{env `subscription_id`}}",
67
"tenant_id": "{{env `tenant_id`}}",
78
"object_id": "{{env `object_id`}}",
@@ -19,6 +20,7 @@
1920
"type": "azure-arm",
2021
"client_id": "{{user `client_id`}}",
2122
"client_secret": "{{user `client_secret`}}",
23+
"client_jwt": "{{env `client_jwt`}}",
2224
"resource_group_name": "{{user `resource_group`}}",
2325
"storage_account": "{{user `storage_account`}}",
2426
"subscription_id": "{{user `subscription_id`}}",

Tasks/PackerBuildV0/DefaultTemplates/default.linux.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "",
44
"client_secret": "",
5+
"client_jwt": "",
56
"subscription_id": "",
67
"tenant_id": "",
78
"object_id": "",
@@ -22,6 +23,7 @@
2223
"type": "azure-arm",
2324
"client_id": "{{user `client_id`}}",
2425
"client_secret": "{{user `client_secret`}}",
26+
"client_jwt": "{{user `client_jwt`}}",
2527
"resource_group_name": "{{user `resource_group`}}",
2628
"storage_account": "{{user `storage_account`}}",
2729
"subscription_id": "{{user `subscription_id`}}",

Tasks/PackerBuildV0/DefaultTemplates/default.windows.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "",
44
"client_secret": "",
5+
"client_jwt": "",
56
"subscription_id": "",
67
"tenant_id": "",
78
"object_id": "",
@@ -21,6 +22,7 @@
2122
"type": "azure-arm",
2223
"client_id": "{{user `client_id`}}",
2324
"client_secret": "{{user `client_secret`}}",
25+
"client_jwt": "{{user `client_jwt`}}",
2426
"resource_group_name": "{{user `resource_group`}}",
2527
"storage_account": "{{user `storage_account`}}",
2628
"subscription_id": "{{user `subscription_id`}}",

Tasks/PackerBuildV0/src/azureSpnTemplateVariablesProvider.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,18 @@ export default class AzureSpnTemplateVariablesProvider implements definitions.IT
3131

3232
this._spnVariables = new Map<string, string>();
3333
var connectedService = taskParameters.serviceEndpoint;
34+
let endpointObject = await taskParameters.getEndpoint(connectedService);
3435
var subscriptionId: string = tl.getEndpointDataParameter(connectedService, "SubscriptionId", true)
3536
this._spnVariables.set(constants.TemplateVariableSubscriptionIdName, subscriptionId);
3637
this._spnVariables.set(constants.TemplateVariableClientIdName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalid', false));
37-
this._spnVariables.set(constants.TemplateVariableClientSecretName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalkey', false));
38+
if (endpointObject?.scheme === 'WorkloadIdentityFederation') {
39+
const oidc_token = await endpointObject.applicationTokenCredentials.getFederatedToken();
40+
tl.setSecret(oidc_token);
41+
this._spnVariables.set(constants.TemplateVariableClientjwtName, oidc_token);
42+
}
43+
else {
44+
this._spnVariables.set(constants.TemplateVariableClientSecretName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalkey', false));
45+
}
3846
this._spnVariables.set(constants.TemplateVariableTenantIdName, tl.getEndpointAuthorizationParameter(connectedService, 'tenantid', false));
3947

4048

Tasks/PackerBuildV0/src/constants.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,6 @@ export var BaseImageSourceDefault = "default";
5555
export var BuiltinWindowsDefaultImageTemplateKey = BuiltInTemplateOSTypeWindows + '-' + BaseImageSourceDefault;
5656
export var BuiltinWindowsCustomImageTemplateKey = BuiltInTemplateOSTypeWindows + '-' + BaseImageSourceCustomVhd;
5757
export var BuiltinLinuxDefaultImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceDefault;
58-
export var BuiltinLinuxCustomImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceCustomVhd;
58+
export var BuiltinLinuxCustomImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceCustomVhd;
59+
60+
export var TemplateVariableClientjwtName = "client_jwt";

Tasks/PackerBuildV0/src/taskParameters.ts

+5
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,9 @@ export default class TaskParameters {
118118
var azureEndpoint = await new AzureRMEndpoint.AzureRMEndpoint(connectedService).getEndpoint(true);
119119
return azureEndpoint.applicationTokenCredentials;
120120
}
121+
122+
public async getEndpoint(connectedService: string) {
123+
const endpoint = await new AzureRMEndpoint.AzureRMEndpoint(connectedService).getEndpoint();
124+
return endpoint;
125+
}
121126
}

_generated/PackerBuildV0/DefaultTemplates/custom.linux.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "{{env `client_id`}}",
44
"client_secret": "{{env `client_secret`}}",
5+
"client_jwt": "{{env `client_jwt`}}",
56
"subscription_id": "{{env `subscription_id`}}",
67
"tenant_id": "{{env `tenant_id`}}",
78
"object_id": "{{env `object_id`}}",
@@ -20,6 +21,7 @@
2021
"type": "azure-arm",
2122
"client_id": "{{user `client_id`}}",
2223
"client_secret": "{{user `client_secret`}}",
24+
"client_jwt": "{{user `client_jwt`}}",
2325
"resource_group_name": "{{user `resource_group`}}",
2426
"storage_account": "{{user `storage_account`}}",
2527
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0/DefaultTemplates/custom.windows.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "{{env `client_id`}}",
44
"client_secret": "{{env `client_secret`}}",
5+
"client_jwt": "{{env `client_jwt`}}",
56
"subscription_id": "{{env `subscription_id`}}",
67
"tenant_id": "{{env `tenant_id`}}",
78
"object_id": "{{env `object_id`}}",
@@ -19,6 +20,7 @@
1920
"type": "azure-arm",
2021
"client_id": "{{user `client_id`}}",
2122
"client_secret": "{{user `client_secret`}}",
23+
"client_jwt": "{{env `client_jwt`}}",
2224
"resource_group_name": "{{user `resource_group`}}",
2325
"storage_account": "{{user `storage_account`}}",
2426
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0/DefaultTemplates/default.linux.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "",
44
"client_secret": "",
5+
"client_jwt": "",
56
"subscription_id": "",
67
"tenant_id": "",
78
"object_id": "",
@@ -22,6 +23,7 @@
2223
"type": "azure-arm",
2324
"client_id": "{{user `client_id`}}",
2425
"client_secret": "{{user `client_secret`}}",
26+
"client_jwt": "{{user `client_jwt`}}",
2527
"resource_group_name": "{{user `resource_group`}}",
2628
"storage_account": "{{user `storage_account`}}",
2729
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0/DefaultTemplates/default.windows.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "",
44
"client_secret": "",
5+
"client_jwt": "",
56
"subscription_id": "",
67
"tenant_id": "",
78
"object_id": "",
@@ -21,6 +22,7 @@
2122
"type": "azure-arm",
2223
"client_id": "{{user `client_id`}}",
2324
"client_secret": "{{user `client_secret`}}",
25+
"client_jwt": "{{user `client_jwt`}}",
2426
"resource_group_name": "{{user `resource_group`}}",
2527
"storage_account": "{{user `storage_account`}}",
2628
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0/src/azureSpnTemplateVariablesProvider.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,18 @@ export default class AzureSpnTemplateVariablesProvider implements definitions.IT
3131

3232
this._spnVariables = new Map<string, string>();
3333
var connectedService = taskParameters.serviceEndpoint;
34+
let endpointObject = await taskParameters.getEndpoint(connectedService);
3435
var subscriptionId: string = tl.getEndpointDataParameter(connectedService, "SubscriptionId", true)
3536
this._spnVariables.set(constants.TemplateVariableSubscriptionIdName, subscriptionId);
3637
this._spnVariables.set(constants.TemplateVariableClientIdName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalid', false));
37-
this._spnVariables.set(constants.TemplateVariableClientSecretName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalkey', false));
38+
if (endpointObject?.scheme === 'WorkloadIdentityFederation') {
39+
const oidc_token = await endpointObject.applicationTokenCredentials.getFederatedToken();
40+
tl.setSecret(oidc_token);
41+
this._spnVariables.set(constants.TemplateVariableClientjwtName, oidc_token);
42+
}
43+
else {
44+
this._spnVariables.set(constants.TemplateVariableClientSecretName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalkey', false));
45+
}
3846
this._spnVariables.set(constants.TemplateVariableTenantIdName, tl.getEndpointAuthorizationParameter(connectedService, 'tenantid', false));
3947

4048

_generated/PackerBuildV0/src/constants.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,6 @@ export var BaseImageSourceDefault = "default";
5555
export var BuiltinWindowsDefaultImageTemplateKey = BuiltInTemplateOSTypeWindows + '-' + BaseImageSourceDefault;
5656
export var BuiltinWindowsCustomImageTemplateKey = BuiltInTemplateOSTypeWindows + '-' + BaseImageSourceCustomVhd;
5757
export var BuiltinLinuxDefaultImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceDefault;
58-
export var BuiltinLinuxCustomImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceCustomVhd;
58+
export var BuiltinLinuxCustomImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceCustomVhd;
59+
60+
export var TemplateVariableClientjwtName = "client_jwt";

_generated/PackerBuildV0/src/taskParameters.ts

+5
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,9 @@ export default class TaskParameters {
118118
var azureEndpoint = await new AzureRMEndpoint.AzureRMEndpoint(connectedService).getEndpoint(true);
119119
return azureEndpoint.applicationTokenCredentials;
120120
}
121+
122+
public async getEndpoint(connectedService: string) {
123+
const endpoint = await new AzureRMEndpoint.AzureRMEndpoint(connectedService).getEndpoint();
124+
return endpoint;
125+
}
121126
}

_generated/PackerBuildV0_Node20/DefaultTemplates/custom.linux.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "{{env `client_id`}}",
44
"client_secret": "{{env `client_secret`}}",
5+
"client_jwt": "{{env `client_jwt`}}",
56
"subscription_id": "{{env `subscription_id`}}",
67
"tenant_id": "{{env `tenant_id`}}",
78
"object_id": "{{env `object_id`}}",
@@ -20,6 +21,7 @@
2021
"type": "azure-arm",
2122
"client_id": "{{user `client_id`}}",
2223
"client_secret": "{{user `client_secret`}}",
24+
"client_jwt": "{{user `client_jwt`}}",
2325
"resource_group_name": "{{user `resource_group`}}",
2426
"storage_account": "{{user `storage_account`}}",
2527
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0_Node20/DefaultTemplates/custom.windows.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "{{env `client_id`}}",
44
"client_secret": "{{env `client_secret`}}",
5+
"client_jwt": "{{env `client_jwt`}}",
56
"subscription_id": "{{env `subscription_id`}}",
67
"tenant_id": "{{env `tenant_id`}}",
78
"object_id": "{{env `object_id`}}",
@@ -19,6 +20,7 @@
1920
"type": "azure-arm",
2021
"client_id": "{{user `client_id`}}",
2122
"client_secret": "{{user `client_secret`}}",
23+
"client_jwt": "{{env `client_jwt`}}",
2224
"resource_group_name": "{{user `resource_group`}}",
2325
"storage_account": "{{user `storage_account`}}",
2426
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0_Node20/DefaultTemplates/default.linux.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "",
44
"client_secret": "",
5+
"client_jwt": "",
56
"subscription_id": "",
67
"tenant_id": "",
78
"object_id": "",
@@ -22,6 +23,7 @@
2223
"type": "azure-arm",
2324
"client_id": "{{user `client_id`}}",
2425
"client_secret": "{{user `client_secret`}}",
26+
"client_jwt": "{{user `client_jwt`}}",
2527
"resource_group_name": "{{user `resource_group`}}",
2628
"storage_account": "{{user `storage_account`}}",
2729
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0_Node20/DefaultTemplates/default.windows.template.json

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"variables": {
33
"client_id": "",
44
"client_secret": "",
5+
"client_jwt": "",
56
"subscription_id": "",
67
"tenant_id": "",
78
"object_id": "",
@@ -21,6 +22,7 @@
2122
"type": "azure-arm",
2223
"client_id": "{{user `client_id`}}",
2324
"client_secret": "{{user `client_secret`}}",
25+
"client_jwt": "{{user `client_jwt`}}",
2426
"resource_group_name": "{{user `resource_group`}}",
2527
"storage_account": "{{user `storage_account`}}",
2628
"subscription_id": "{{user `subscription_id`}}",

_generated/PackerBuildV0_Node20/src/azureSpnTemplateVariablesProvider.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,18 @@ export default class AzureSpnTemplateVariablesProvider implements definitions.IT
3131

3232
this._spnVariables = new Map<string, string>();
3333
var connectedService = taskParameters.serviceEndpoint;
34+
let endpointObject = await taskParameters.getEndpoint(connectedService);
3435
var subscriptionId: string = tl.getEndpointDataParameter(connectedService, "SubscriptionId", true)
3536
this._spnVariables.set(constants.TemplateVariableSubscriptionIdName, subscriptionId);
3637
this._spnVariables.set(constants.TemplateVariableClientIdName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalid', false));
37-
this._spnVariables.set(constants.TemplateVariableClientSecretName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalkey', false));
38+
if (endpointObject?.scheme === 'WorkloadIdentityFederation') {
39+
const oidc_token = await endpointObject.applicationTokenCredentials.getFederatedToken();
40+
tl.setSecret(oidc_token);
41+
this._spnVariables.set(constants.TemplateVariableClientjwtName, oidc_token);
42+
}
43+
else {
44+
this._spnVariables.set(constants.TemplateVariableClientSecretName, tl.getEndpointAuthorizationParameter(connectedService, 'serviceprincipalkey', false));
45+
}
3846
this._spnVariables.set(constants.TemplateVariableTenantIdName, tl.getEndpointAuthorizationParameter(connectedService, 'tenantid', false));
3947

4048

_generated/PackerBuildV0_Node20/src/constants.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,6 @@ export var BaseImageSourceDefault = "default";
5555
export var BuiltinWindowsDefaultImageTemplateKey = BuiltInTemplateOSTypeWindows + '-' + BaseImageSourceDefault;
5656
export var BuiltinWindowsCustomImageTemplateKey = BuiltInTemplateOSTypeWindows + '-' + BaseImageSourceCustomVhd;
5757
export var BuiltinLinuxDefaultImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceDefault;
58-
export var BuiltinLinuxCustomImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceCustomVhd;
58+
export var BuiltinLinuxCustomImageTemplateKey = BuiltInTemplateOSTypeLinux + '-' + BaseImageSourceCustomVhd;
59+
60+
export var TemplateVariableClientjwtName = "client_jwt";

_generated/PackerBuildV0_Node20/src/taskParameters.ts

+5
Original file line numberDiff line numberDiff line change
@@ -118,4 +118,9 @@ export default class TaskParameters {
118118
var azureEndpoint = await new AzureRMEndpoint.AzureRMEndpoint(connectedService).getEndpoint(true);
119119
return azureEndpoint.applicationTokenCredentials;
120120
}
121+
122+
public async getEndpoint(connectedService: string) {
123+
const endpoint = await new AzureRMEndpoint.AzureRMEndpoint(connectedService).getEndpoint();
124+
return endpoint;
125+
}
121126
}

0 commit comments

Comments
 (0)