Skip to content

Commit 1d9486d

Browse files
Use specific version of modules
1 parent 539bbe1 commit 1d9486d

File tree

3 files changed

+47
-36
lines changed

3 files changed

+47
-36
lines changed

experiments/Compute.Experiments/AzureRM.Compute.Experiments.Tests.ps1

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ $password = ConvertTo-SecureString $vmComputerPassword -AsPlainText -Force;
1616
$vmCredential = New-Object System.Management.Automation.PSCredential ($vmComputerUser, $password);
1717

1818
# $vm = New-AzVm
19+
# $vm = New-AzVm -Credential $vmCredential
1920
$vm = New-AzVm -Credential $vmCredential
2021

2122
$vm

experiments/Compute.Experiments/AzureRM.Compute.Experiments.psd1

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,11 @@ PowerShellVersion = '5.0'
5151
# ProcessorArchitecture = ''
5252

5353
# Modules that must be imported into the global environment prior to importing this module
54-
RequiredModules = "AzureRM.Resources", "AzureRM.Network", "AzureRM.Compute"
54+
RequiredModules = @(
55+
@{ ModuleName = 'AzureRM.Resources'; ModuleVersion = '4.3.1'; },
56+
@{ ModuleName = 'AzureRM.Network'; ModuleVersion = '4.3.1'; },
57+
@{ ModuleName = 'AzureRM.Compute'; ModuleVersion = '3.3.1'; }
58+
)
5559

5660
# Assemblies that must be loaded prior to importing this module
5761
# RequiredAssemblies = @()

experiments/Compute.Experiments/AzureRM.Compute.Experiments.psm1

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,61 @@
11
function New-AzVm {
22
[CmdletBinding()]
33
param (
4-
[PSCredential] $credential,
5-
[string] $imageName = "Win2012R2Datacenter",
6-
[string] $name = "vmTest"
4+
[Parameter()][PSCredential] $Credential,
5+
[Parameter()][string] $Name = "VM",
6+
[Parameter()][string] $ImageName = "Win2012R2Datacenter",
7+
[Parameter()][string] $ResourceGroupName = $Name + "ResourceGroup",
8+
[Parameter()][string] $Location = "eastus",
9+
[Parameter()][string] $VirtualNetworkName = $Name + "VirtualNetwork",
10+
[Parameter()][string] $PublicIpAddressName = $Name + "PublicIpAddress",
11+
[Parameter()][string] $SecurityGroupName = $Name + "SecurityGroup",
12+
[Parameter()][string] $NetworkInterfaceName = $Name + "NetworkInterface"
713
)
814

915
PROCESS {
10-
if (-not $credential) {
11-
$credential = Get-Credential
16+
if (-not $Credential) {
17+
$Credential = Get-Credential
1218
}
1319

1420
# Find VM Image
15-
$vmImageName = $imageName
16-
$vmImage = $images | Where-Object { $_.Name -eq $vmImageName } | Select-Object -First 1
21+
$vmImage = $images | Where-Object { $_.Name -eq $ImageName } | Select-Object -First 1
22+
if (-not $vmImage) {
23+
throw "Unknown image: " + $ImageName
24+
}
1725

1826
Write-Host $vmImage
1927

2028
# Location
2129
Write-Host "Load locations..."
22-
$location = (Get-AzureRmLocation | Select-Object -First 1 -Wait).Location
23-
$location = "eastus"
30+
# $Location = (Get-AzureRmLocation | Select-Object -First 1 -Wait).Location
2431
Write-Host "done"
2532

2633
# Resource Group
27-
$resourceGroupName = "resourceGroupTest"
28-
$resource = New-AzureRmResourceGroup -Name $resourceGroupName -Location $location
34+
$resource = New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location
2935

3036
# Virtual Network
31-
$virtualNetworkName = "virtualNetworkTest"
3237
$virtualNetworkAddressPrefix = "192.168.0.0/16"
33-
$subnet = @{ Name = "subnetTest"; AddressPrefix = "192.168.1.0/24" }
34-
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig -Name $subnet.Name -AddressPrefix $subnet.AddressPrefix
38+
$subnet = @{ Name = $Name + "Subnet"; AddressPrefix = "192.168.1.0/24" }
39+
$subnetConfig = New-AzureRmVirtualNetworkSubnetConfig `
40+
-Name $subnet.Name `
41+
-AddressPrefix $subnet.AddressPrefix
3542
$virtualNetwork = New-AzureRmVirtualNetwork `
36-
-ResourceGroupName $resourceGroupName `
37-
-Location $location `
38-
-Name $virtualNetworkName `
43+
-ResourceGroupName $ResourceGroupName `
44+
-Location $Location `
45+
-Name $VirtualNetworkName `
3946
-AddressPrefix $virtualNetworkAddressPrefix `
4047
-Subnet $subnetConfig
4148

4249
# Piblic IP
43-
$publicIpAddressName = "publicIpAddressTest"
4450
$publicIpAddress = New-AzureRmPublicIpAddress `
45-
-ResourceGroupName $resourceGroupName `
46-
-Location $location `
51+
-ResourceGroupName $ResourceGroupName `
52+
-Location $Location `
4753
-AllocationMethod Static `
48-
-Name $publicIpAddressName
54+
-Name $PublicIpAddressName
4955

5056
# Security Group (it may have several rules(ports))
51-
$securityGroupName = "securityGroupTest"
5257
$securityRule = @{
53-
Name = "securityRuleTest";
58+
Name = $Name + "SecurityRule";
5459
Protocol = "Tcp";
5560
Priority = 1000;
5661
Access = "Allow";
@@ -71,38 +76,36 @@ function New-AzVm {
7176
-DestinationPortRange $securityRule.DestinationPortRange `
7277
-DestinationAddressPrefix $securityRule.DestinationAddressPrefix
7378
$securityGroup = New-AzureRmNetworkSecurityGroup `
74-
-ResourceGroupName $resourceGroupName `
75-
-Location $location `
76-
-Name $securityGroupName `
79+
-ResourceGroupName $ResourceGroupName `
80+
-Location $Location `
81+
-Name $SecurityGroupName `
7782
-SecurityRules $securityRuleConfig
7883

7984
# Network Interface
80-
$networkInterfaceName = "networkInterfaceTest"
8185
$networkInterface = New-AzureRmNetworkInterface `
82-
-ResourceGroupName $resourceGroupName `
83-
-Location $location `
84-
-Name $networkInterfaceName `
86+
-ResourceGroupName $ResourceGroupName `
87+
-Location $Location `
88+
-Name $NetworkInterfaceName `
8589
-PublicIpAddressId $publicIpAddress.Id `
8690
-SubnetId $virtualNetwork.Subnets[0].Id `
8791
-NetworkSecurityGroupId $securityGroup.Id
8892

8993
# VM
90-
# $vmCredentials = Get-Credential
91-
$vm = @{ Name = $name; Size = "Standard_DS2" }
94+
$vm = @{ Name = $Name; Size = "Standard_DS2" }
9295
$vmConfig = New-AzureRmVMConfig -VMName $vm.Name -VMSize $vm.Size
9396
$vmComputer = $vm.Name
9497
switch ($vmImage.Type) {
9598
"Windows" {
9699
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
97100
-Windows `
98101
-ComputerName $vmComputer `
99-
-Credential $credential
102+
-Credential $Credential
100103
}
101104
"Linux" {
102105
$vmConfig = $vmConfig | Set-AzureRmVMOperatingSystem `
103106
-Linux `
104107
-ComputerName $vmComputer `
105-
-Credential $credential
108+
-Credential $Credential
106109
}
107110
}
108111

@@ -118,7 +121,10 @@ function New-AzVm {
118121

119122
New-PsObject @{
120123
ResourceId = $resource.ResourceId;
121-
Response = New-AzureRmVm -ResourceGroupName $resourceGroupName -Location $location -VM $vmConfig
124+
Response = New-AzureRmVm `
125+
-ResourceGroupName $ResourceGroupName `
126+
-Location $Location `
127+
-VM $vmConfig
122128
}
123129
}
124130
}

0 commit comments

Comments
 (0)