Skip to content

Commit

Permalink
Add linux VMSS and SF
Browse files Browse the repository at this point in the history
Switch from AzureRM to Az
  • Loading branch information
Miguel Bernard committed Mar 31, 2020
1 parent aa98b68 commit 5a180fd
Show file tree
Hide file tree
Showing 14 changed files with 77 additions and 116 deletions.
2 changes: 1 addition & 1 deletion src/PoshArmDeployment/Private/New-ArmTemplate.ps1
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
function New-ArmTemplate {
[cmdletbinding(SupportsShouldProcess = $True)]
Param(
$schema = "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
$schema = "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
[switch]
$Passthru
)
Expand Down
14 changes: 6 additions & 8 deletions src/PoshArmDeployment/Public/Publish-ArmResourceGroup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ function Publish-ArmResourceGroup {
New-ArmTemplateFile -TemplateFilePath $templateFilePath
New-ArmTemplateParameterFile -TemplateParameterFilePath $templateParameterFilePath -ArmTemplateParams $ArmTemplateParams

$null = New-AzureRmResourceGroup -Name $resourceGroupName -Location $script:Location -Force -ErrorAction Stop
$null = New-AzResourceGroup -Name $resourceGroupName -Location $script:Location -Force -ErrorAction Stop

# 3. Deploy or test to resource group with template file
if ($Test) {
Expand All @@ -49,7 +49,7 @@ function Publish-ArmResourceGroup {
} `
| ConvertTo-Hash

return Test-AzureRmResourceGroupDeployment @deployment -ErrorAction Stop
return Test-AzResourceGroupDeployment @deployment -ErrorAction Stop
}
else {
# 3. Ensure resource group exist
Expand All @@ -65,18 +65,16 @@ function Publish-ArmResourceGroup {
} `
| ConvertTo-Hash

$deploymentResult = New-AzureRmResourceGroupDeployment @deployment
$deploymentResult = New-AzResourceGroupDeployment @deployment

if ($deploymentResult -and $PSCmdlet.MyInvocation.BoundParameters["Debug"]) {
Write-Debug 'Fetching deployment operations...'
$operations = Get-AzureRmResourceGroupDeploymentOperation `
$operations = Get-AzResourceGroupDeploymentOperation `
-ResourceGroupName $resourceGroupName `
-DeploymentName $deploymentName

Write-Debug 'Formatted operations:'
if ($operations) {
Format-AzureRmDeploymentOperation -Operations $operations
}
Write-Debug 'Formatted operations:'
Write-Debug $operations

Write-Warning "Please STRONGLY consider manually deleting deployment '$deploymentName' to avoid sensitive information leaks."
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ function Add-ArmLoadBalancer {
$NicName = $VirtualMachineScaleSet.properties.virtualMachineProfile.networkProfile.networkInterfaceConfigurations[0].Name
}

$Nic = $VirtualMachineScaleSet.properties.virtualMachineProfile.networkProfile.networkInterfaceConfigurations | Where-Object { $_.Name -eq $NicName}
$Nic = $VirtualMachineScaleSet.properties.virtualMachineProfile.networkProfile.networkInterfaceConfigurations | Where-Object { $_.Name -eq $NicName }


If ($PSCmdlet.ShouldProcess("Adding Nic to load balancer")) {
Expand All @@ -38,8 +38,10 @@ function Add-ArmLoadBalancer {
id = "[concat($LoadBalancerResourceId, '/backendAddressPools/$BackendAddressPoolName')]"
}

$Nic.properties.ipConfigurations[0].properties.loadBalancerInboundNatPools += @{
id = "[concat($LoadBalancerResourceId, '/inboundNatPools/$InboundNatPoolName')]"
if ($InboundNatPoolName) {
$Nic.properties.ipConfigurations[0].properties.loadBalancerInboundNatPools += @{
id = "[concat($LoadBalancerResourceId, '/inboundNatPools/$InboundNatPoolName')]"
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@ function Add-ArmOsProfile {
$AdminUserName,
[string]
[Parameter(Mandatory)]
$AdminPassword,
[Switch]
$Linux
$AdminPassword
)

Process {
Expand All @@ -30,7 +28,7 @@ function Add-ArmOsProfile {
secrets = @()
}

if($Linux)
if($VirtualMachineScaleSet._IsLinux)
{
$OsProfile.linuxConfiguration= @{
disablePasswordAuthentication= $false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ function Add-ArmOsProfileSecret {
[string]
[Parameter(Mandatory)]
$KeyVaultResourceId,
$CertificateUrls = @(),
[Switch]
$Linux
$CertificateUrls = @()
)

Process {
Expand All @@ -30,7 +28,7 @@ function Add-ArmOsProfileSecret {
certificateUrl = $Url
}

if(!$Linux.ToBool()){
if(!$VirtualMachineScaleSet._IsLinux){
$cert.certificateStore = "My"
}
$secret.vaultCertificates += $cert
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,21 @@ function Add-ArmStorageProfile {

Begin {
if (!$ImageReference) {
$ImageReference = @{
publisher = "MicrosoftWindowsServer"
offer = "WindowsServerSemiAnnual"
sku = "Datacenter-Core-1803-with-Containers-smalldisk"
version = "latest"
if ($VirtualMachineScaleSet._IsLinux) {
$ImageReference = @{
publisher = "Canonical"
version = "latest"
offer = "UbuntuServer"
sku = "16.04-LTS"
}
}
else {
$ImageReference = @{
publisher = "MicrosoftWindowsServer"
version = "latest"
offer = "WindowsServer"
sku = "2016-Datacenter-with-Containers"
}
}
}
}
Expand All @@ -27,7 +37,7 @@ function Add-ArmStorageProfile {
osDisk = @{
caching = "ReadOnly"
createOption = "FromImage"
managedDisk = @{
managedDisk = @{
storageAccountType = "Standard_LRS"
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,17 @@ function New-ArmVirtualMachineScaleSetResource {
$Location = $script:Location,
$Sku = "Standard_D1_v2",
[int]
$Capacity = 5,
$Capacity = 1,
[string]
[ValidateSet("Automatic", "Manual")]
$UpgradeMode = "Automatic"
$UpgradeMode = "Automatic",
[Switch]
$Linux
)
If ($PSCmdlet.ShouldProcess("Creates a new Arm Virtual Machine Scale Set object")) {
$vmss = [PSCustomObject][ordered]@{
_ResourceId = $Name | New-ArmFunctionResourceId -ResourceType Microsoft.Compute/virtualMachineScaleSets
_IsLinux = $Linux.ToBool()
PSTypeName = "VirtualMachineScaleSet"
type = 'Microsoft.Compute/virtualMachineScaleSets'
name = $Name
Expand All @@ -34,17 +37,17 @@ function New-ArmVirtualMachineScaleSetResource {
type = "SystemAssigned"
}
properties = @{
overprovision = $false
overprovision = $false
upgradePolicy = @{
mode = $UpgradeMode
}
virtualMachineProfile = @{
storageProfile = @{}
osProfile = @{}
storageProfile = @{ }
osProfile = @{ }
networkProfile = @{
networkInterfaceConfigurations = @()
}
diagnosticsProfile = @{}
diagnosticsProfile = @{ }
extensionProfile = @{
extensions = @()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ function Add-ArmLoadBalancerFrontendIpConfiguration {
}
}
}

$LoadBalancer._Ip = $PublicIp
$LoadBalancer.properties.frontEndIpconfigurations += $FrontEndIpconfiguration
return $LoadBalancer | Add-ArmDependencyOn -Dependency $PublicIp -PassThru
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ function New-ArmLoadBalancerResource {
If ($PSCmdlet.ShouldProcess("Creates a new Arm load balancer resource")) {
$LoadBalancer = [PSCustomObject][ordered]@{
_ResourceId = $Name | New-ArmFunctionResourceId -ResourceType Microsoft.Network/loadBalancers
_Ip = @{ }
PSTypeName = "LoadBalancer"
type = 'Microsoft.Network/loadBalancers'
name = $Name
Expand All @@ -31,7 +32,7 @@ function New-ArmLoadBalancerResource {
frontendIPConfigurations = @()
backendAddressPools = @()
inboundNatPools = @()
# inboundNatRules = @()
inboundNatRules = @()
loadBalancingRules = @()
probes = @()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ function Add-ArmServiceFabricDiagnosticsExtension {
[PSTypeName("VirtualMachineScaleSet")]
[Parameter(Mandatory, ValueFromPipeline)]
$VirtualMachineScaleSet,
[PSTypeName("ServiceFabricNodeType")]
[Parameter(Mandatory)]
$NodeType,
[string]
[Parameter(Mandatory)]
$ApplicationDiagnosticsStorageAccountName,
Expand All @@ -19,11 +16,10 @@ function Add-ArmServiceFabricDiagnosticsExtension {
)

Process {
$nodeName = $NodeType.Name
If ($PSCmdlet.ShouldProcess("Adding service fabric diagnostics extension to a virtual machine scale set")) {
$ApplicationDiagnosticsStorageAccountResourceId = $ApplicationDiagnosticsStorageAccountResourceId | ConvertTo-ValueInTemplateExpression
$sfDiagnosticsExtension = @{
name = "VMDiagnosticsVmExt_$nodeName"
name = "VMDiagnosticsVmExt"
properties = @{
type = "IaaSDiagnostics"
autoUpgradeMinorVersion = $true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ function Add-ArmServiceFabricDiagnosticsExtensionLinux {
[PSTypeName("VirtualMachineScaleSet")]
[Parameter(Mandatory, ValueFromPipeline)]
$VirtualMachineScaleSet,
[PSTypeName("ServiceFabricNodeType")]
[Parameter(Mandatory)]
$NodeType,
[string]
[Parameter(Mandatory)]
$ApplicationDiagnosticsStorageAccountName,
Expand All @@ -16,14 +13,13 @@ function Add-ArmServiceFabricDiagnosticsExtensionLinux {
)

Process {
$nodeName = $NodeType.Name
If ($PSCmdlet.ShouldProcess("Adding service fabric diagnostics extension to a virtual machine scale set")) {
$VmScaleSetResourceId = $VirtualMachineScaleSet._ResourceId
$xmlConfig = "concat('<WadCfg><DiagnosticMonitorConfiguration><PerformanceCounters scheduledTransferPeriod=\""PT1M\""><PerformanceCounterConfiguration counterSpecifier=\""\\Memory\\AvailableMemory\"" sampleRate=\""PT15S\"" unit=\""Bytes\""><annotation displayName=\""Memory available\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Memory\\PercentAvailableMemory\"" sampleRate=\""PT15S\"" unit=\""Percent\""><annotation displayName=\""Mem. percent available\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Memory\\UsedMemory\"" sampleRate=\""PT15S\"" unit=\""Bytes\""><annotation displayName=\""Memory used\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Memory\\PercentUsedMemory\"" sampleRate=\""PT15S\"" unit=\""Percent\""><annotation displayName=\""Memory percentage\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Memory\\PercentUsedByCache\"" sampleRate=\""PT15S\"" unit=\""Percent\""><annotation displayName=\""Mem. used by cache\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Processor\\PercentIdleTime\"" sampleRate=\""PT15S\"" unit=\""Percent\""><annotation displayName=\""CPU idle time\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Processor\\PercentUserTime\"" sampleRate=\""PT15S\"" unit=\""Percent\""><annotation displayName=\""CPU user time\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Processor\\PercentProcessorTime\"" sampleRate=\""PT15S\"" unit=\""Percent\""><annotation displayName=\""CPU percentage guest OS\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\Processor\\PercentIOWaitTime\"" sampleRate=\""PT15S\"" unit=\""Percent\""><annotation displayName=\""CPU IO wait time\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\BytesPerSecond\"" sampleRate=\""PT15S\"" unit=\""BytesPerSecond\""><annotation displayName=\""Disk total bytes\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\ReadBytesPerSecond\"" sampleRate=\""PT15S\"" unit=\""BytesPerSecond\""><annotation displayName=\""Disk read guest OS\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\WriteBytesPerSecond\"" sampleRate=\""PT15S\"" unit=\""BytesPerSecond\""><annotation displayName=\""Disk write guest OS\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\TransfersPerSecond\"" sampleRate=\""PT15S\"" unit=\""CountPerSecond\""><annotation displayName=\""Disk transfers\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\ReadsPerSecond\"" sampleRate=\""PT15S\"" unit=\""CountPerSecond\""><annotation displayName=\""Disk reads\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\WritesPerSecond\"" sampleRate=\""PT15S\"" unit=\""CountPerSecond\""><annotation displayName=\""Disk writes\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\AverageReadTime\"" sampleRate=\""PT15S\"" unit=\""Seconds\""><annotation displayName=\""Disk read time\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\AverageWriteTime\"" sampleRate=\""PT15S\"" unit=\""Seconds\""><annotation displayName=\""Disk write time\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\AverageTransferTime\"" sampleRate=\""PT15S\"" unit=\""Seconds\""><annotation displayName=\""Disk transfer time\"" locale=\""en-us\""/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\""\\PhysicalDisk\\AverageDiskQueueLength\"" sampleRate=\""PT15S\"" unit=\""Count\""><annotation displayName=\""Disk queue length\"" locale=\""en-us\""/></PerformanceCounterConfiguration></PerformanceCounters><Metrics resourceId=\""', $VmScaleSetResourceId, '\""><MetricAggregation scheduledTransferPeriod=\""PT1H\""/><MetricAggregation scheduledTransferPeriod=\""PT1M\""/></Metrics></DiagnosticMonitorConfiguration></WadCfg>')"

$ApplicationDiagnosticsStorageAccountResourceId = $ApplicationDiagnosticsStorageAccountResourceId | ConvertTo-ValueInTemplateExpression
$sfDiagnosticsExtension = @{
name = "VMDiagnosticsVmExt_$nodeName"
name = "VMDiagnosticsVmExt"
properties = @{
type = "LinuxDiagnostic"
autoUpgradeMinorVersion = $true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,55 +4,53 @@ function Add-ArmServiceFabricExtension {
[PSTypeName("VirtualMachineScaleSet")]
[Parameter(Mandatory, ValueFromPipeline)]
$VirtualMachineScaleSet,
[PSTypeName("ServiceFabricNodeType")]
[PSTypeName("ServiceFabricCluster")]
[Parameter(Mandatory)]
$NodeType,
$ServiceFabricCluster,
[string]
[Parameter(Mandatory)]
$SupportLogStorageAccountResourceId,
$NodeTypeName,
[string]
[Parameter(Mandatory)]
$CertificateThumbprint,
[Switch]
$Linux,
$SupportLogStorageAccountResourceId,
[ValidateSet("Bronze", "Silver", "Gold")]
[string]
$DurabilityLevel = "Bronze" ,
[string]
$NicPrefixOverride = "10.0.0.0/24"
$NicPrefixOverride = "10.0.0.0/24"
)

Process {
$nodeName = $NodeType.Name
$sfClusterId = $NodeType._ServiceFabricCluster._ResourceId
If ($PSCmdlet.ShouldProcess("Adding service fabric extension to a virtual machine scale set")) {
$SupportLogStorageAccountResourceId = $SupportLogStorageAccountResourceId | ConvertTo-ValueInTemplateExpression

$sfExtension = @{
name = "ServiceFabricNodeVmExt_$nodeName"
name = "ServiceFabricNodeVmExt_$NodeTypeName"
properties = @{
type = if($Linux.ToBool()) { "ServiceFabricLinuxNode" } else { "ServiceFabricNode" }
type = if ($VirtualMachineScaleSet._IsLinux) { "ServiceFabricLinuxNode" } else { "ServiceFabricNode" }
autoUpgradeMinorVersion = $true
publisher = "Microsoft.Azure.ServiceFabric"
protectedSettings = @{
StorageAccountKey1 = "[listKeys($SupportLogStorageAccountResourceId, '2015-05-01-preview').key1]"
StorageAccountKey2 = "[listKeys($SupportLogStorageAccountResourceId, '2015-05-01-preview').key2]"
}
settings = @{
clusterEndpoint = "[reference($sfClusterId).clusterEndpoint]"
nodeTypeRef = $VirtualMachineScaleSet.Name
clusterEndpoint = $ServiceFabricCluster._ClusterEndpoint
nodeTypeRef = $NodeTypeName

durabilityLevel = $DurabilityLevel
enableParallelJobs = $true
nicPrefixOverride = $NicPrefixOverride
certificate = @{
thumbprint = $CertificateThumbprint
x509StoreName = "My"
thumbprint = $ServiceFabricCluster.properties.certificate.thumbprint
x509StoreName = $ServiceFabricCluster.properties.certificate.x509StoreName
}
}
typeHandlerVersion = "1.1"
}
}

if(!$Linux.ToBool())
{
if (!$VirtualMachineScaleSet._IsLinux) {
$sfExtension.properties.settings.dataPath = "D:\\\\SvcFab"
}

Expand Down
Loading

0 comments on commit 5a180fd

Please sign in to comment.