forked from vmware-archive/bosh-azure-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate_azure_principal_powershell.txt
102 lines (75 loc) · 2.9 KB
/
create_azure_principal_powershell.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
param
(
# Azure Subscription name
[Parameter(Mandatory = $true)]
[String]$SubscriptionName,
# Azure Application homepage
[Parameter(Mandatory = $false)]
[String]$ApplicationHomePage,
# Azure application uir
[Parameter(Mandatory = $false)]
[String]$ApplicationURI,
# Azure application password
[Parameter(Mandatory = $false)]
[String]$ApplicationPwd,
# Application name
[Parameter(Mandatory = $false)]
[String]$ApplicationName,
# VMName
[Parameter(Mandatory = $false)]
[String]$VMName
)
Login-AzureRmAccount
$SubscriptionName = $SubscriptionName.Replace('"', '')
# Get list of available scription
$TenantId = (Get-AzureRmSubscription -SubscriptionName $SubscriptionName).TenantId
# Select subscription
$Subscription = Select-AzureRmSubscription -SubscriptionName $SubscriptionName
$Guid = [guid]::NewGuid()
# Create Azure AD Application name if not provided
If (!$PSBoundParameters.ContainsKey('ApplicationName'))
{
$ApplicationName = "PCF-" + $Guid
}
# Create Azure AD Application home page if not provided
If (!$PSBoundParameters.ContainsKey('ApplicationHomePage'))
{
$ApplicationHomePage = "http://PCF-" + $Guid
}
# Create Azure AD Application URI if not provided
If (!$PSBoundParameters.ContainsKey('ApplicationURI'))
{
$ApplicationURI = "http://PCF-" + $Guid
}
# Create Azure AD Application password if not provided
If (!$PSBoundParameters.ContainsKey('ApplicationPwd'))
{
$ApplicationPwd = "Pwd" + $Guid
$ApplicationPwd = $ApplicationPwd.SubString(0, 11)
}
If (!$PSBoundParameters.ContainsKey('VMName'))
{
$VMName = "PCF" + $Guid
$VMName = $VMName.SubString(0, 8)
}
$ADApplication = New-AzureRmADApplication -DisplayName $ApplicationName -HomePage $ApplicationHomePage -IdentifierUris $ApplicationURI -Password $ApplicationPwd
Start-Sleep -s 2
$AzureServicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $ADApplication.ApplicationId
Start-Sleep -s 10
$RoleAssignment = New-AzureRmRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $ADApplication.ApplicationId
Start-Sleep -s 4
$obj = [PSCustomObject]@{
SUBSCRIPTION_ID = $Subscription.Subscription.SubscriptionId
CLIENT_ID = $ADApplication.ApplicationId
TENNANT_ID = $Subscription.Tenant.TenantId
CLIENT_SECRET = $ApplicationPwd
VM_NAME = $VMName
}
ConvertTo-Json -InputObject $obj | Out-File ".\CFVariables.json"
Write-Host "SUBSCRIPTION_ID:" $Subscription.Subscription.SubscriptionId
Write-Host "CLIENT_ID:" $ADApplication.ApplicationId
Write-Host "TENNANT_ID:" $Subscription.Tenant.TenantId
Write-Host "CLIENT_SECRET:" $ApplicationPwd
Write-Host ""
Write-Host "The output file PCFVariables.json has been written."
Write-Host ""