2020-02-14 19:09:09 +03:00
|
|
|
param(
|
2020-11-27 10:50:54 +03:00
|
|
|
[String] [Parameter (Mandatory=$true)] $TemplatePath,
|
2020-02-14 19:09:09 +03:00
|
|
|
[String] [Parameter (Mandatory=$true)] $ClientId,
|
|
|
|
|
[String] [Parameter (Mandatory=$true)] $ClientSecret,
|
|
|
|
|
[String] [Parameter (Mandatory=$true)] $ResourcesNamePrefix,
|
|
|
|
|
[String] [Parameter (Mandatory=$true)] $Location,
|
|
|
|
|
[String] [Parameter (Mandatory=$true)] $ResourceGroup,
|
|
|
|
|
[String] [Parameter (Mandatory=$true)] $StorageAccount,
|
|
|
|
|
[String] [Parameter (Mandatory=$true)] $SubscriptionId,
|
|
|
|
|
[String] [Parameter (Mandatory=$true)] $TenantId,
|
2022-06-27 12:41:19 +02:00
|
|
|
[String] [Parameter (Mandatory=$false)] $VirtualNetworkName,
|
|
|
|
|
[String] [Parameter (Mandatory=$false)] $VirtualNetworkRG,
|
|
|
|
|
[String] [Parameter (Mandatory=$false)] $VirtualNetworkSubnet
|
2020-02-14 19:09:09 +03:00
|
|
|
)
|
|
|
|
|
|
2020-11-27 10:50:54 +03:00
|
|
|
if (-not (Test-Path $TemplatePath))
|
2020-02-17 17:25:55 +03:00
|
|
|
{
|
2020-12-10 13:25:37 +03:00
|
|
|
Write-Error "'-TemplatePath' parameter is not valid. You have to specify correct Template Path"
|
2020-02-17 17:25:55 +03:00
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
|
2022-05-11 15:53:55 +02:00
|
|
|
$Image = [io.path]::GetFileName($TemplatePath).Split(".")[0]
|
2020-02-14 19:09:09 +03:00
|
|
|
$TempResourceGroupName = "${ResourcesNamePrefix}_${Image}"
|
|
|
|
|
$InstallPassword = [System.GUID]::NewGuid().ToString().ToUpper()
|
|
|
|
|
|
2020-02-17 17:25:55 +03:00
|
|
|
packer validate -syntax-only $TemplatePath
|
|
|
|
|
|
2020-02-18 17:09:48 +03:00
|
|
|
$SensitiveData = @(
|
|
|
|
|
'OSType',
|
|
|
|
|
'StorageAccountLocation',
|
|
|
|
|
'OSDiskUri',
|
|
|
|
|
'OSDiskUriReadOnlySas',
|
|
|
|
|
'TemplateUri',
|
|
|
|
|
'TemplateUriReadOnlySas',
|
|
|
|
|
': ->'
|
|
|
|
|
)
|
2020-02-18 16:50:11 +03:00
|
|
|
|
2020-03-13 21:23:23 +01:00
|
|
|
Write-Host "Show Packer Version"
|
|
|
|
|
packer --version
|
|
|
|
|
|
2020-02-14 19:09:09 +03:00
|
|
|
Write-Host "Build $Image VM"
|
|
|
|
|
packer build -var "capture_name_prefix=$ResourcesNamePrefix" `
|
|
|
|
|
-var "client_id=$ClientId" `
|
|
|
|
|
-var "client_secret=$ClientSecret" `
|
|
|
|
|
-var "install_password=$InstallPassword" `
|
|
|
|
|
-var "location=$Location" `
|
|
|
|
|
-var "resource_group=$ResourceGroup" `
|
|
|
|
|
-var "storage_account=$StorageAccount" `
|
|
|
|
|
-var "subscription_id=$SubscriptionId" `
|
|
|
|
|
-var "temp_resource_group_name=$TempResourceGroupName" `
|
|
|
|
|
-var "tenant_id=$TenantId" `
|
|
|
|
|
-var "virtual_network_name=$VirtualNetworkName" `
|
|
|
|
|
-var "virtual_network_resource_group_name=$VirtualNetworkRG" `
|
|
|
|
|
-var "virtual_network_subnet_name=$VirtualNetworkSubnet" `
|
2020-05-21 09:08:52 +03:00
|
|
|
-var "run_validation_diskspace=$env:RUN_VALIDATION_FLAG" `
|
2020-02-18 16:50:11 +03:00
|
|
|
$TemplatePath `
|
|
|
|
|
| Where-Object {
|
|
|
|
|
#Filter sensitive data from Packer logs
|
|
|
|
|
$currentString = $_
|
2020-02-18 17:05:00 +03:00
|
|
|
$sensitiveString = $SensitiveData | Where-Object { $currentString -match $_ }
|
|
|
|
|
$sensitiveString -eq $null
|
2022-05-11 15:53:55 +02:00
|
|
|
}
|