SlideShare a Scribd company logo
1 of 58
Развертывания и настройка окружений,
автоматизация и шаблонизация,
инструменты и сценарии,
Azure PowerShell
Provisioning в
Microsoft Azure
Eugene Ilagin https://github.com/ilagin/
• Что такое Provisioning?
• Зачем это знать и где применять?
• Ручная настройка окружения или
автоматическая?
• Provisioning как элемент Continuous
Delivery.
Введение
Hands-on пример
API Server Web Server
Database Server Replication Server
Web API Web App
Replicated
Database
Database
Transactional Replication
• Миграция web-
приложения с on-
premises на IaaS
• Набор скриптов,
позволяющий
сделать все в один
клик
• Azure PowerShell – open source модуль для
Windows PowerShell
• Azure Account. Subscription
• Способы подключения к Azure подписке
• Azure AD
• Сертификат
https://github.com/Azure/azure-powershell/releases
Установка Azure PowerShell и
подключение подписки
Создание Storage Account
Шаг 1.
$commonLocation = "North Europe"
$storageAccountName = "ilagin"
$subscriptionName = Get-AzureSubscription | Select SubscriptionName
New-AzureStorageAccount -StorageAccountName $storageAccountName -Label
"TestStorage" -Location $commonLocation
Select-AzureSubscription $subscriptionName.SubscriptionName.ToString()
Set-AzureSubscription -SubscriptionName
$subscriptionName.SubscriptionName.ToString() -CurrentStorageAccount
$storageAccountName
• Объединение виртуальных машин в LAN
• Доступ к ресурсам в пределах LAN
• Организация VPN
• Создание VNet перед созданием VM
Шаг 2. Создание Виртуальной Сети
<NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration">
<VirtualNetworkConfiguration>
<Dns />
<VirtualNetworkSites>
<VirtualNetworkSite name="MyVirtualNetwork" Location="North Europe">
<AddressSpace>
<AddressPrefix> 10.0.0.1/26</AddressPrefix>
</AddressSpace>
<Subnets>
<Subnet name="Subnet1">
<AddressPrefix> 10.0.0.1/26</AddressPrefix>
</Subnet>
</Subnets>
</VirtualNetworkSite>
</VirtualNetworkSites>
</VirtualNetworkConfiguration>
</NetworkConfiguration>
Set-AzureVNetConfig -ConfigurationPath
"D:NetworkConfig.netcfg"
• Доступные образы: Get-AzureVMImage.
• Vmdepot.com
• Выбор конфигурации. A0-A11. D1- D14.
• VM с MS SQL стоят дороже.
• Операции создания и provisioning’a
занимают относительно длительное время
Шаг 3.
Создание Виртуальных Машин
$commonLocation = "North Europe"
$webServerImageName = "bd507d3a70934695bc2128e3e5a255ba__RightImage-Windows-
2012-x64-iis8-v14.2"
$dbServerImageName = "fb83b3509582419d99629ce476bcb5c8__SQL-Server-2012-SP2-
11.0.5569.0-Ent-ENU-Win2012-cy15su02"
$virtualNetworkName = "MyVirtualNetwork"
$subnetName = "Subnet1"
$vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest")
$pwd = "Super Secure Password1"
$instanceSize = "Large"
$userName = "eugene"
$vm0 = New-AzureVMConfig -Name $vmNames[0] -InstanceSize $instanceSize -Image
$webServerImageName
$vm0 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName -Password
$pwd | Set-AzureSubnet $subnetName
$vm0 | New-AzureVM -ServiceName $vmNames[0] -VNetName $virtualNetworkName –
Location $commonLocation
$vm1 = New-AzureVMConfig -Name $vmNames[1] -InstanceSize $instanceSize -
Image $webServerImageName
$vm1 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName -
Password $pwd | Set-AzureSubnet $subnetName
$vm1 | New-AzureVM -ServiceName $vmNames[1] -VNetName $virtualNetworkName
–Location $commonLocation
$vm2 = New-AzureVMConfig -Name $vmNames[2] -InstanceSize $instanceSize -
Image $dbServerImageName
$vm2 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName -
Password $pwd | Set-AzureSubnet $subnetName
$vm2 | New-AzureVM -ServiceName $vmNames[2] -VNetName $virtualNetworkName
–Location $commonLocation
$vm3 = New-AzureVMConfig -Name $vmNames[3] -InstanceSize $instanceSize -
Image $dbServerImageName
$vm3 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName -
Password $pwd | Set-AzureSubnet $subnetName
$vm3 | New-AzureVM -ServiceName $vmNames[3] -VNetName $virtualNetworkName
–Location $commonLocation
• Потеря IP адреса после выключения
• Зависимость ресурсов от IP адреса
Шаг 4. Присвоение статических IP
$vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest",
"ilgfourtest")
$staticIPs = @("10.0.0.4", "10.0.0.5", "10.0.0.6", "10.0.0.7")
for($i=0; $i -le 3; $i++)
{
Get-AzureVM -ServiceName $vmNames[$i] -Name $vmNames[$i] |
Set-AzureStaticVNetIP -IPAddress $staticIPs[$i] | Update-AzureVM
}
Шаг 5.
Добавление Endpoint’ов к
виртуальным машинам
• Что такое endpoint?
• 2 endpoint’а по умолчанию: RDP, PowerShell
• HTTP(80), SQL(1433) и другие - закрыты
$webVmNames = @("ilgonetest", "ilgtwotest")
foreach($vm in $webVmNames)
{
Get-AzureVM -ServiceName $vm -Name $vm | Add-AzureEndpoint -Name
"HttpIn" -Protocol "tcp" -PublicPort 80 -LocalPort 80 | Update-AzureVM
}
Шаг 6.
Отключение Windows Firewall
$vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest")
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object
System.Management.Automation.PSCredential($userName, $securePassword)
foreach($vm in $vmNames)
{
$uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -
SkipCNCheck:$true -SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential
$credential -SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {Get-
NetFirewallProfile | Set-NetFirewallProfile –Enabled False}
$session | Remove-PSSession
}
• Обзор доступных вариантов
• VHD – Virtual Hard Drive
• Azure Blob Storage
Шаг 7. Загрузка файлов на VM
$vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest")
$volumePath = "D:FileStorage.vhd"
$folderToCopy = "D:PRJ"
$azureStoragePaths =
("http://ilagin.blob.core.windows.net/vhdstore/FileStorage0.vhd",
"http://ilagin.blob.core.windows.net/vhdstore/FileStorage1.vhd",
"http://ilagin.blob.core.windows.net/vhdstore/FileStorage2.vhd",
"http://ilagin.blob.core.windows.net/vhdstore/FileStorage3.vhd")
$volume = new-vhd -Path $volumePath -SizeBytes 40MB | `
Mount-VHD -PassThru | `
Initialize-Disk -PartitionStyle mbr -Confirm:$false -PassThru | `
New-Partition -UseMaximumSize -AssignDriveLetter -MbrType IFS | `
Format-Volume -NewFileSystemLabel "VHD" -Confirm:$false
Copy-Item $folderToCopy "$($volume.DriveLetter):" -Recurse
Dismount-VHD $volumePath
for($i=0; $i -le 3; $i++)
{
Add-AzureVhd -Destination $azureStoragePaths[$i] -
LocalFilePath $volumePath
Get-AzureVM $vmNames[$i] $vmNames[$i] | Add-AzureDataDisk
-ImportFrom -MediaLocation $azureStoragePaths[$i] -DiskLabel "EXT"
-LUN 0 | Update-AzureVM
}
Шаг 8.
Удаленное конфигурирование IIS
$webVmNames = @("ilgonetest", "ilgtwotest")
$webPaths = @("E:PRJAPI", "E:PRJWeb")
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object
System.Management.Automation.PSCredential($userName, $securePassword)
$i = 0
foreach($vm in $webVmNames)
{
$uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -
SkipCNCheck:$true -SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential -
SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
param($path, $user, $password)
Set-ExecutionPolicy RemoteSigned
Import-Module WebAdministration
if (!(Test-Path $path))
{
$path = $path.Replace("E:", "F:")
}
Remove-Item IIS:AppPoolsAdminAppPool -Force -Recurse
$appPool = New-WebAppPool -Name "AdminAppPool"
$appPool.processModel.userName = $user
$appPool.processModel.password = $password
$appPool.processModel.identityType = "SpecificUser"
$appPool | Set-Item
}
Remove-Item IIS:Sites"Default Web Site" -Force -Recurse
Remove-Item IIS:SitesAzureProvisioning -Force -Recurse
New-Item IIS:SitesAzureProvisioning -physicalPath $path -
bindings @{protocol="http";bindingInformation=":80:"}
Set-ItemProperty IIS:SitesAzureProvisioning -name
applicationPool -value AdminAppPool
} -Args $webPaths[$i], $userName, $pwd
$session | Remove-PSSession
$i++
}
Шаг 9.
Добавление Windows пользователей
$sqlVmNames = @("ilgthreetest", "ilgfourtest")
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($userName,
$securePassword)
$newUserName = "Replication"
foreach($vm in $sqlVmNames)
{
$uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -
SkipCNCheck:$true -SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential -
SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
param($vmName, $userToCreate, $userPassword)
$Computer = [ADSI]("WinNT://" + $vmName)
$LocalAdmin = $Computer.Create("User", $userToCreate)
$LocalAdmin.SetPassword($userPassword)
$LocalAdmin.SetInfo()
$LocalAdmin.FullName = "Azure Provisioning Demo"
$LocalAdmin.SetInfo()
$LocalAdmin.UserFlags = 64 + 65536 #
ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD
$LocalAdmin.SetInfo()
$objOU = [ADSI]("WinNT://" + $vmName +
"/Administrators,group")
$objOU.add("WinNT://" + $vmName +"/" + $userToCreate)
} -Args $vm, $newUserName, $pwd
$session | Remove-PSSession
}
Шаг 10.
Добавление SQL пользователей
$sqlVmNames = @("ilgthreetest", "ilgfourtest")
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($userName,
$securePassword)
$newUserName = "Replication"
foreach($vm in $sqlVmNames)
{
$uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true -
SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential -
SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
param($vmName, $userName, $userPassword)
Set-ExecutionPolicy RemoteSigned
Import-Module SQLPS -DisableNameChecking
$SQLInstanceName = "(local)"
$Server = New-Object -TypeName
Microsoft.SqlServer.Management.Smo.Server -ArgumentList $SQLInstanceName
if ($Server.Logins.Contains($userName))
{
$Server.Logins[$userName].Drop()
}
$Login = New-Object -TypeName
Microsoft.SqlServer.Management.Smo.Login -ArgumentList $Server, $userName
$Login.LoginType =
[Microsoft.SqlServer.Management.Smo.LoginType]::SqlLogin
$Login.PasswordExpirationEnabled = $false
$Login.Create($userPassword)
$Login.AddToRole("sysadmin")
$Login.Alter()
$replicationWindowsUser = $vmName + "Replication"
if ($Server.Logins.Contains($replicationWindowsUser))
{
$Server.Logins[$replicationWindowsUser].Drop()
}
$Login = New-Object -TypeName
Microsoft.SqlServer.Management.Smo.Login -ArgumentList $Server,
$replicationWindowsUser
$Login.LoginType =
[Microsoft.SqlServer.Management.Smo.LoginType]::WindowsUser
$Login.PasswordExpirationEnabled = $false
$Login.Create($userPassword)
$Login.AddToRole("sysadmin")
$Login.Alter()
} -Args $vm, $newUserName, $pwd
$session | Remove-PSSession
}
Шаг 11.
Изменение режима проверки
подлинности SQL сервера.
Включение SQL Server Agent.
$sqlVmNames = @("ilgthreetest", "ilgfourtest")
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object
System.Management.Automation.PSCredential($userName, $securePassword)
$newUserName = "Replication"
foreach($vm in $sqlVmNames)
{
$uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -
SkipCNCheck:$true -SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential
-SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
param($vmName)
Set-ExecutionPolicy RemoteSigned
Import-Module SQLPS -DisableNameChecking
$sqlServer = new-object
('Microsoft.SqlServer.Management.Smo.Server') '(local)'
$sqlServer.Settings.LoginMode =
[Microsoft.SqlServer.Management.SMO.ServerLoginMode]::Mixed
$sqlServer.Alter()
CD SQLSERVER:SQL$vmName
$Wmi = (get-item .).ManagedComputer
$sqlInstance = $Wmi.Services['MSSQLSERVER']
$sqlInstance.Stop()
Start-Sleep -s 10
$sqlInstance.Start()
$agent = $Wmi.Services['SQLSERVERAGENT']
$agent.Start()
} -Args $vm
$session | Remove-PSSession
}
Шаг 12.
Восстановление бэкапа базы
$sqlVmNames = @("ilgthreetest", "ilgfourtest")
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object
System.Management.Automation.PSCredential($userName, $securePassword)
foreach($vm in $sqlVmNames)
{
$uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -
SkipCNCheck:$true -SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential
$credential -SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
Set-ExecutionPolicy RemoteSigned
Import-Module SQLPS -DisableNameChecking
$srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object
Microsoft.SqlServer.Management.Smo.Database($srv, "AzureProvisioning")
$db.Create()
$backupFilePath = "E:PRJdb.bak"
if (!(Test-Path $backupFilePath))
{
$backupFilePath = "F:PRJdb.bak"
}
Restore-SqlDatabase -ServerInstance "(local)" -Database
AzureProvisioning -BackupFile $backupFilePath -ReplaceDatabase
}
$session | Remove-PSSession
}
Шаг 13.1
Создание репликации.
Конфигурация publisher’а
$distributorVm = "ilgthreetest"
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object
System.Management.Automation.PSCredential($userName,
$securePassword)
$uri = Get-AzureWinRMUri -ServiceName $distributorVm -Name
$distributorVm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -
SkipCNCheck:$true -SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential
-SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
Set-ExecutionPolicy RemoteSigned
Import-Module SQLPS -DisableNameChecking
$publicationFilePath = "E:PRJpublication.sql"
if (!(Test-Path $publicationFilePath))
{
$publicationFilePath = "F:PRJpublication.sql"
}
Invoke-SqlCmd -InputFile $publicationFilePath -
ServerInstance "(local)"
}
$session | Remove-PSSession
Шаг 13.2
Создание репликации.
Копирование базы
$sqlSubscriberVM = "ilgfourtest"
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($userName,
$securePassword)
$uri = Get-AzureWinRMUri -ServiceName $sqlSubscriberVM -Name $sqlSubscriberVM
$sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true -
SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential -
SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
$pathToShare = "E:PRJ"
if (!(Test-Path $pathToShare))
{
$pathToShare = $pathToShare.Replace("E:", "F:")
}
$netSharePath = "PRJ=" + $pathToShare
net user guest /active:yes
net share $netSharePath "/GRANT:Everyone,FULL"
}
$session | Remove-PSSession
$session | Remove-PSSession
$sqlPublisherVM = "ilgthreetest"
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object
System.Management.Automation.PSCredential($userName, $securePassword)
$uri = Get-AzureWinRMUri -ServiceName $sqlPublisherVM -Name
$sqlPublisherVM
$sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true
-SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential -
SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
Set-ExecutionPolicy RemoteSigned
Import-Module SQLPS -DisableNameChecking
$path = "E:PRJ"
if (!(Test-Path $path))
{
$path = $path.Replace("E:", "F:")
}
$backupPath = $path + "new.bak"
Backup-SqlDatabase -ServerInstance '(local)' -Database
"AzureProvisioning" -BackupFile $backupPath
$pass="Super Secure Password1"|ConvertTo-SecureString -
AsPlainText -Force
$cred = New-Object
System.Management.Automation.PsCredential("ILGFOURTESTeugene",$pass)
New-PSDrive -Name R -Root "10.0.0.7PRJ" -PSProvider
FileSystem -Credential $cred
Copy-Item $backupPath "R:"
}
$session | Remove-PSSession
Шаг 13.3
Создание репликации.
Восстановление базы
publisher’а
$uri = Get-AzureWinRMUri -ServiceName $sqlSubscriberVM -Name
$sqlSubscriberVM
$sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true
-SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential -
SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
Set-ExecutionPolicy RemoteSigned
Import-Module SQLPS -DisableNameChecking
$srv = new-Object
Microsoft.SqlServer.Management.Smo.Server("(local)")
$db = New-Object Microsoft.SqlServer.Management.Smo.Database($srv,
"AzureProvisioning")
$db.Create()
$backupPath = "E:PRJnew.bak"
if (!(Test-Path $backupPath))
{
$backupPath = $backupPath.Replace("E:", "F:")
}
Restore-SqlDatabase -ServerInstance "(local)" -Database
AzureProvisioning -BackupFile $backupPath -ReplaceDatabase
}
Шаг 13.3
Создание репликации.
Настройка подписки
$session | Remove-PSSession
$distributorVm = "ilgthreetest"
$userName = "eugene"
$pwd = "Super Secure Password1"
$securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($userName,
$securePassword)
$uri = Get-AzureWinRMUri -ServiceName $distributorVm -Name $distributorVm
$sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true -
SkipRevocationCheck:$true
$session = New-PSSession -ConnectionUri $uri -Credential $credential -
SessionOption $sessionOption
Invoke-Command -Session $session -ScriptBlock {
Set-ExecutionPolicy RemoteSigned
Import-Module SQLPS -DisableNameChecking
$supscriptionFilePath = "E:PRJsubscription.sql"
if (!(Test-Path $supscriptionFilePath))
{
$supscriptionFilePath = $supscriptionFilePath.Replace("E:", "F:")
}
Invoke-SqlCmd -InputFile $supscriptionFilePath -ServerInstance "(local)"
}
$session | Remove-PSSession
Шаг 14.
Опциональный
Удаление окружения
$vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest")
$storageAccountName = "ilagin"
foreach($vm in $vmNames)
{
Remove-AzureDeployment -ServiceName $vm -Slot Production -DeleteVHD
-Force
Remove-AzureService -ServiceName $vm -Force
}
Remove-AzureVNetConfig
Start-Sleep -s 30
Remove-AzureStorageAccount -StorageAccountName $storageAccountName
Заключение
Provisioning в один клик.
Fun или необходимость?
Спасибо за внимание!
eugene.ilagin@gmail.com
https://github.com/ilagin/AzureProvisioning

More Related Content

What's hot

CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShellCCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShellwalk2talk srl
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)DK Lee
 
Nodejs first class
Nodejs first classNodejs first class
Nodejs first classFin Chen
 
How to scheduled jobs in a cloudera cluster without oozie
How to scheduled jobs in a cloudera cluster without oozieHow to scheduled jobs in a cloudera cluster without oozie
How to scheduled jobs in a cloudera cluster without oozieTiago Simões
 
WordPress Plugins: ur doin it wrong
WordPress Plugins: ur doin it wrongWordPress Plugins: ur doin it wrong
WordPress Plugins: ur doin it wrongWill Norris
 
Deploying to azure web sites
Deploying to azure web sitesDeploying to azure web sites
Deploying to azure web sitesGiant Penguin
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With RpmMartin Jackson
 
Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?Marcin Gajda
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsSergi Almar i Graupera
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용Sungchul Park
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStackPuppet
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CIARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CICosmin Poieana
 
CRESTCon Asia 2018 - Config Password Encryption Gone Wrong
CRESTCon Asia 2018 - Config Password Encryption Gone WrongCRESTCon Asia 2018 - Config Password Encryption Gone Wrong
CRESTCon Asia 2018 - Config Password Encryption Gone WrongKeith Lee
 
Moving a Windows environment to the cloud - DevOps Galway Meetup
Moving a Windows environment to the cloud - DevOps Galway MeetupMoving a Windows environment to the cloud - DevOps Galway Meetup
Moving a Windows environment to the cloud - DevOps Galway MeetupGiulio Vian
 
Scala Frustrations
Scala FrustrationsScala Frustrations
Scala Frustrationstakezoe
 
Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Maarten Balliauw
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 

What's hot (20)

CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShellCCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
CCI2018 - Automatizzare la creazione di risorse con ARM template e PowerShell
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
 
Nodejs first class
Nodejs first classNodejs first class
Nodejs first class
 
How to scheduled jobs in a cloudera cluster without oozie
How to scheduled jobs in a cloudera cluster without oozieHow to scheduled jobs in a cloudera cluster without oozie
How to scheduled jobs in a cloudera cluster without oozie
 
WordPress Plugins: ur doin it wrong
WordPress Plugins: ur doin it wrongWordPress Plugins: ur doin it wrong
WordPress Plugins: ur doin it wrong
 
WebGUI Developers Workshop
WebGUI Developers WorkshopWebGUI Developers Workshop
WebGUI Developers Workshop
 
Dandelion 0.10.0
Dandelion 0.10.0Dandelion 0.10.0
Dandelion 0.10.0
 
Deploying to azure web sites
Deploying to azure web sitesDeploying to azure web sites
Deploying to azure web sites
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With Rpm
 
Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?Czym jest webpack i dlaczego chcesz go używać?
Czym jest webpack i dlaczego chcesz go używać?
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSockets
 
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
스프링 코어 강의 2부 - Java 구성을 활용한 스프링 코어 사용
 
Puppet and Apache CloudStack
Puppet and Apache CloudStackPuppet and Apache CloudStack
Puppet and Apache CloudStack
 
ARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CIARGUS - THE OMNISCIENT CI
ARGUS - THE OMNISCIENT CI
 
CRESTCon Asia 2018 - Config Password Encryption Gone Wrong
CRESTCon Asia 2018 - Config Password Encryption Gone WrongCRESTCon Asia 2018 - Config Password Encryption Gone Wrong
CRESTCon Asia 2018 - Config Password Encryption Gone Wrong
 
Ant
AntAnt
Ant
 
Moving a Windows environment to the cloud - DevOps Galway Meetup
Moving a Windows environment to the cloud - DevOps Galway MeetupMoving a Windows environment to the cloud - DevOps Galway Meetup
Moving a Windows environment to the cloud - DevOps Galway Meetup
 
Scala Frustrations
Scala FrustrationsScala Frustrations
Scala Frustrations
 
Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...Sherlock Homepage - A detective story about running large web services (VISUG...
Sherlock Homepage - A detective story about running large web services (VISUG...
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 

Viewers also liked

Bridging the Gap in Corporate Succession Planning
Bridging the Gap in Corporate Succession PlanningBridging the Gap in Corporate Succession Planning
Bridging the Gap in Corporate Succession PlanningWendy Thomson
 
Azure provisioning at your control
Azure provisioning at your controlAzure provisioning at your control
Azure provisioning at your controlGovind Kanshi
 
Reinventing Your Business By Reinventing Your Talent
Reinventing Your Business By Reinventing Your TalentReinventing Your Business By Reinventing Your Talent
Reinventing Your Business By Reinventing Your Talentmatt_stencil
 
Parallels Automation Executive Summary Apr2010
Parallels Automation Executive Summary Apr2010Parallels Automation Executive Summary Apr2010
Parallels Automation Executive Summary Apr2010acallaly
 
Ensim Unify Bpos Exchange2010 Provisioning
Ensim Unify Bpos Exchange2010 ProvisioningEnsim Unify Bpos Exchange2010 Provisioning
Ensim Unify Bpos Exchange2010 ProvisioningMarcel Kardol
 
Strategies to automate deployment and provisioning of Microsoft Azure.
Strategies to automate deployment and provisioning of Microsoft Azure.Strategies to automate deployment and provisioning of Microsoft Azure.
Strategies to automate deployment and provisioning of Microsoft Azure.HARMAN Services
 
OneBill Software for Telecom Industry
OneBill Software for Telecom IndustryOneBill Software for Telecom Industry
OneBill Software for Telecom Industryjohndemello07
 
Collaborative Leadership in the Borderless Workplace
Collaborative Leadership in the Borderless WorkplaceCollaborative Leadership in the Borderless Workplace
Collaborative Leadership in the Borderless WorkplaceTMA World
 
The leadership lessons of stevejobs by HBR
The leadership lessons of stevejobs by HBRThe leadership lessons of stevejobs by HBR
The leadership lessons of stevejobs by HBRvrkraam
 
SURE! Subscription Billing & Relationship Management for IaaS providers
SURE! Subscription Billing & Relationship Management for IaaS providers SURE! Subscription Billing & Relationship Management for IaaS providers
SURE! Subscription Billing & Relationship Management for IaaS providers SURE!
 
Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)
Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)
Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)Zuora, Inc.
 
Putting Succession Planning into Practice – Talent Assessment and Development
Putting Succession Planning into Practice – Talent Assessment and DevelopmentPutting Succession Planning into Practice – Talent Assessment and Development
Putting Succession Planning into Practice – Talent Assessment and DevelopmentThe HR Observer
 
Migration from ISV toward SaaS
Migration from ISV toward SaaSMigration from ISV toward SaaS
Migration from ISV toward SaaSRuud Ramakers
 
8 Archetypes of Leadership
8 Archetypes of Leadership 8 Archetypes of Leadership
8 Archetypes of Leadership Thane Ritchie
 
(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...
(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...
(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...Amazon Web Services
 
The Operations Perspective: Scaling Operations in the Subscription Economy
The Operations Perspective: Scaling Operations in the Subscription EconomyThe Operations Perspective: Scaling Operations in the Subscription Economy
The Operations Perspective: Scaling Operations in the Subscription EconomyZuora, Inc.
 

Viewers also liked (16)

Bridging the Gap in Corporate Succession Planning
Bridging the Gap in Corporate Succession PlanningBridging the Gap in Corporate Succession Planning
Bridging the Gap in Corporate Succession Planning
 
Azure provisioning at your control
Azure provisioning at your controlAzure provisioning at your control
Azure provisioning at your control
 
Reinventing Your Business By Reinventing Your Talent
Reinventing Your Business By Reinventing Your TalentReinventing Your Business By Reinventing Your Talent
Reinventing Your Business By Reinventing Your Talent
 
Parallels Automation Executive Summary Apr2010
Parallels Automation Executive Summary Apr2010Parallels Automation Executive Summary Apr2010
Parallels Automation Executive Summary Apr2010
 
Ensim Unify Bpos Exchange2010 Provisioning
Ensim Unify Bpos Exchange2010 ProvisioningEnsim Unify Bpos Exchange2010 Provisioning
Ensim Unify Bpos Exchange2010 Provisioning
 
Strategies to automate deployment and provisioning of Microsoft Azure.
Strategies to automate deployment and provisioning of Microsoft Azure.Strategies to automate deployment and provisioning of Microsoft Azure.
Strategies to automate deployment and provisioning of Microsoft Azure.
 
OneBill Software for Telecom Industry
OneBill Software for Telecom IndustryOneBill Software for Telecom Industry
OneBill Software for Telecom Industry
 
Collaborative Leadership in the Borderless Workplace
Collaborative Leadership in the Borderless WorkplaceCollaborative Leadership in the Borderless Workplace
Collaborative Leadership in the Borderless Workplace
 
The leadership lessons of stevejobs by HBR
The leadership lessons of stevejobs by HBRThe leadership lessons of stevejobs by HBR
The leadership lessons of stevejobs by HBR
 
SURE! Subscription Billing & Relationship Management for IaaS providers
SURE! Subscription Billing & Relationship Management for IaaS providers SURE! Subscription Billing & Relationship Management for IaaS providers
SURE! Subscription Billing & Relationship Management for IaaS providers
 
Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)
Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)
Scaling Sales & Billing Operations in the Subscription Economy (Accelerate East)
 
Putting Succession Planning into Practice – Talent Assessment and Development
Putting Succession Planning into Practice – Talent Assessment and DevelopmentPutting Succession Planning into Practice – Talent Assessment and Development
Putting Succession Planning into Practice – Talent Assessment and Development
 
Migration from ISV toward SaaS
Migration from ISV toward SaaSMigration from ISV toward SaaS
Migration from ISV toward SaaS
 
8 Archetypes of Leadership
8 Archetypes of Leadership 8 Archetypes of Leadership
8 Archetypes of Leadership
 
(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...
(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...
(ARC304) Designing for SaaS: Next-Generation Software Delivery Models on AWS ...
 
The Operations Perspective: Scaling Operations in the Subscription Economy
The Operations Perspective: Scaling Operations in the Subscription EconomyThe Operations Perspective: Scaling Operations in the Subscription Economy
The Operations Perspective: Scaling Operations in the Subscription Economy
 

Similar to Provisioning in Microsoft Azure

Charla - SharePoint en la Nube (17Jul2013)
Charla - SharePoint en la Nube (17Jul2013)Charla - SharePoint en la Nube (17Jul2013)
Charla - SharePoint en la Nube (17Jul2013)Juan Andrés Valenzuela
 
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and OrchestratorAutomating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and OrchestratorDigicomp Academy AG
 
Automating Windows Azure
Automating Windows AzureAutomating Windows Azure
Automating Windows AzureIdo Flatow
 
Automating Your Azure Environment
Automating Your Azure EnvironmentAutomating Your Azure Environment
Automating Your Azure EnvironmentMichael Collier
 
Enrique lima azure-it-pro-ps
Enrique lima azure-it-pro-psEnrique lima azure-it-pro-ps
Enrique lima azure-it-pro-psEnrique Lima
 
PowerShell User Group Hamburg - PowerCLI
PowerShell User Group Hamburg - PowerCLIPowerShell User Group Hamburg - PowerCLI
PowerShell User Group Hamburg - PowerCLIMarkus Kraus
 
Automating Azure VMs with PowerShell
Automating Azure VMs with PowerShellAutomating Azure VMs with PowerShell
Automating Azure VMs with PowerShellAlexander Feschenko
 
Playing with php_on_azure
Playing with php_on_azurePlaying with php_on_azure
Playing with php_on_azureCEDRIC DERUE
 
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...MUG-Lyon Microsoft User Group
 
What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012D
 
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr TsapDive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr TsapProvectus
 
PowerShell: Through the SharePoint Looking Glass
PowerShell: Through the SharePoint Looking GlassPowerShell: Through the SharePoint Looking Glass
PowerShell: Through the SharePoint Looking GlassBrian Caauwe
 
Google App Engine Developer - Day4
Google App Engine Developer - Day4Google App Engine Developer - Day4
Google App Engine Developer - Day4Simon Su
 
SharePoint Administration with PowerShell
SharePoint Administration with PowerShellSharePoint Administration with PowerShell
SharePoint Administration with PowerShellEric Kraus
 
Software Defined Datacenter
Software Defined DatacenterSoftware Defined Datacenter
Software Defined DatacenterNETWAYS
 
AtlasCamp 2015: Connect everywhere - Cloud and Server
AtlasCamp 2015: Connect everywhere - Cloud and ServerAtlasCamp 2015: Connect everywhere - Cloud and Server
AtlasCamp 2015: Connect everywhere - Cloud and ServerAtlassian
 

Similar to Provisioning in Microsoft Azure (20)

Deploying SharePoint @ Cloud
Deploying SharePoint @ CloudDeploying SharePoint @ Cloud
Deploying SharePoint @ Cloud
 
Charla - SharePoint en la Nube (17Jul2013)
Charla - SharePoint en la Nube (17Jul2013)Charla - SharePoint en la Nube (17Jul2013)
Charla - SharePoint en la Nube (17Jul2013)
 
Azure powershell management
Azure powershell managementAzure powershell management
Azure powershell management
 
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and OrchestratorAutomating OSD and Post-OSD Configuration with Powershell and Orchestrator
Automating OSD and Post-OSD Configuration with Powershell and Orchestrator
 
Automating Windows Azure
Automating Windows AzureAutomating Windows Azure
Automating Windows Azure
 
Automating Your Azure Environment
Automating Your Azure EnvironmentAutomating Your Azure Environment
Automating Your Azure Environment
 
Enrique lima azure-it-pro-ps
Enrique lima azure-it-pro-psEnrique lima azure-it-pro-ps
Enrique lima azure-it-pro-ps
 
PowerShell User Group Hamburg - PowerCLI
PowerShell User Group Hamburg - PowerCLIPowerShell User Group Hamburg - PowerCLI
PowerShell User Group Hamburg - PowerCLI
 
Automating Azure VMs with PowerShell
Automating Azure VMs with PowerShellAutomating Azure VMs with PowerShell
Automating Azure VMs with PowerShell
 
Playing with php_on_azure
Playing with php_on_azurePlaying with php_on_azure
Playing with php_on_azure
 
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
Global Windows Azure Bootcamp : Cedric Derue playing with php on azure. (spon...
 
Azure Powershell Tips
Azure Powershell TipsAzure Powershell Tips
Azure Powershell Tips
 
What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012
 
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr TsapDive into DevOps | March, Building with Terraform, Volodymyr Tsap
Dive into DevOps | March, Building with Terraform, Volodymyr Tsap
 
Write php deploy everywhere
Write php deploy everywhereWrite php deploy everywhere
Write php deploy everywhere
 
PowerShell: Through the SharePoint Looking Glass
PowerShell: Through the SharePoint Looking GlassPowerShell: Through the SharePoint Looking Glass
PowerShell: Through the SharePoint Looking Glass
 
Google App Engine Developer - Day4
Google App Engine Developer - Day4Google App Engine Developer - Day4
Google App Engine Developer - Day4
 
SharePoint Administration with PowerShell
SharePoint Administration with PowerShellSharePoint Administration with PowerShell
SharePoint Administration with PowerShell
 
Software Defined Datacenter
Software Defined DatacenterSoftware Defined Datacenter
Software Defined Datacenter
 
AtlasCamp 2015: Connect everywhere - Cloud and Server
AtlasCamp 2015: Connect everywhere - Cloud and ServerAtlasCamp 2015: Connect everywhere - Cloud and Server
AtlasCamp 2015: Connect everywhere - Cloud and Server
 

Recently uploaded

BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AIAGATSoftware
 
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jGraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jNeo4j
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Henry Schreiner
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConNatan Silnitsky
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024MulesoftMunichMeetup
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfWSO2
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfkalichargn70th171
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationElement34
 
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024SimonedeGijt
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletAndrea Goulet
 
Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Chirag Panchal
 
^Clinic ^%[+27788225528*Abortion Pills For Sale In witbank
^Clinic ^%[+27788225528*Abortion Pills For Sale In witbank^Clinic ^%[+27788225528*Abortion Pills For Sale In witbank
^Clinic ^%[+27788225528*Abortion Pills For Sale In witbankkasambamuno
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaNeo4j
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit MilanNeo4j
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Maxim Salnikov
 
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphGraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphNeo4j
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Flutter Agency
 
What is a Recruitment Management Software?
What is a Recruitment Management Software?What is a Recruitment Management Software?
What is a Recruitment Management Software?NYGGS Automation Suite
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio, Inc.
 

Recently uploaded (20)

BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AI
 
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4jGraphSummit Milan - Visione e roadmap del prodotto Neo4j
GraphSummit Milan - Visione e roadmap del prodotto Neo4j
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
architecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdfarchitecting-ai-in-the-enterprise-apis-and-applications.pdf
architecting-ai-in-the-enterprise-apis-and-applications.pdf
 
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdfThe Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
The Evolution of Web App Testing_ An Ultimate Guide to Future Trends.pdf
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
Wired_2.0_CREATE YOUR ULTIMATE LEARNING ENVIRONMENT_JCON_16052024
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024
 
^Clinic ^%[+27788225528*Abortion Pills For Sale In witbank
^Clinic ^%[+27788225528*Abortion Pills For Sale In witbank^Clinic ^%[+27788225528*Abortion Pills For Sale In witbank
^Clinic ^%[+27788225528*Abortion Pills For Sale In witbank
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with GraphGraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
GraphSummit Milan & Stockholm - Neo4j: The Art of the Possible with Graph
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
 
What is a Recruitment Management Software?
What is a Recruitment Management Software?What is a Recruitment Management Software?
What is a Recruitment Management Software?
 
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-CloudAlluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
Alluxio Monthly Webinar | Simplify Data Access for AI in Multi-Cloud
 

Provisioning in Microsoft Azure

  • 1. Развертывания и настройка окружений, автоматизация и шаблонизация, инструменты и сценарии, Azure PowerShell Provisioning в Microsoft Azure Eugene Ilagin https://github.com/ilagin/
  • 2. • Что такое Provisioning? • Зачем это знать и где применять? • Ручная настройка окружения или автоматическая? • Provisioning как элемент Continuous Delivery. Введение
  • 3. Hands-on пример API Server Web Server Database Server Replication Server Web API Web App Replicated Database Database Transactional Replication • Миграция web- приложения с on- premises на IaaS • Набор скриптов, позволяющий сделать все в один клик
  • 4. • Azure PowerShell – open source модуль для Windows PowerShell • Azure Account. Subscription • Способы подключения к Azure подписке • Azure AD • Сертификат https://github.com/Azure/azure-powershell/releases Установка Azure PowerShell и подключение подписки
  • 6. $commonLocation = "North Europe" $storageAccountName = "ilagin" $subscriptionName = Get-AzureSubscription | Select SubscriptionName New-AzureStorageAccount -StorageAccountName $storageAccountName -Label "TestStorage" -Location $commonLocation Select-AzureSubscription $subscriptionName.SubscriptionName.ToString() Set-AzureSubscription -SubscriptionName $subscriptionName.SubscriptionName.ToString() -CurrentStorageAccount $storageAccountName
  • 7. • Объединение виртуальных машин в LAN • Доступ к ресурсам в пределах LAN • Организация VPN • Создание VNet перед созданием VM Шаг 2. Создание Виртуальной Сети
  • 8.
  • 9. <NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration"> <VirtualNetworkConfiguration> <Dns /> <VirtualNetworkSites> <VirtualNetworkSite name="MyVirtualNetwork" Location="North Europe"> <AddressSpace> <AddressPrefix> 10.0.0.1/26</AddressPrefix> </AddressSpace> <Subnets> <Subnet name="Subnet1"> <AddressPrefix> 10.0.0.1/26</AddressPrefix> </Subnet> </Subnets> </VirtualNetworkSite> </VirtualNetworkSites> </VirtualNetworkConfiguration> </NetworkConfiguration>
  • 11. • Доступные образы: Get-AzureVMImage. • Vmdepot.com • Выбор конфигурации. A0-A11. D1- D14. • VM с MS SQL стоят дороже. • Операции создания и provisioning’a занимают относительно длительное время Шаг 3. Создание Виртуальных Машин
  • 12. $commonLocation = "North Europe" $webServerImageName = "bd507d3a70934695bc2128e3e5a255ba__RightImage-Windows- 2012-x64-iis8-v14.2" $dbServerImageName = "fb83b3509582419d99629ce476bcb5c8__SQL-Server-2012-SP2- 11.0.5569.0-Ent-ENU-Win2012-cy15su02" $virtualNetworkName = "MyVirtualNetwork" $subnetName = "Subnet1" $vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest") $pwd = "Super Secure Password1" $instanceSize = "Large" $userName = "eugene" $vm0 = New-AzureVMConfig -Name $vmNames[0] -InstanceSize $instanceSize -Image $webServerImageName $vm0 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName -Password $pwd | Set-AzureSubnet $subnetName $vm0 | New-AzureVM -ServiceName $vmNames[0] -VNetName $virtualNetworkName – Location $commonLocation
  • 13. $vm1 = New-AzureVMConfig -Name $vmNames[1] -InstanceSize $instanceSize - Image $webServerImageName $vm1 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName - Password $pwd | Set-AzureSubnet $subnetName $vm1 | New-AzureVM -ServiceName $vmNames[1] -VNetName $virtualNetworkName –Location $commonLocation $vm2 = New-AzureVMConfig -Name $vmNames[2] -InstanceSize $instanceSize - Image $dbServerImageName $vm2 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName - Password $pwd | Set-AzureSubnet $subnetName $vm2 | New-AzureVM -ServiceName $vmNames[2] -VNetName $virtualNetworkName –Location $commonLocation $vm3 = New-AzureVMConfig -Name $vmNames[3] -InstanceSize $instanceSize - Image $dbServerImageName $vm3 | Add-AzureProvisioningConfig -Windows -AdminUserName $userName - Password $pwd | Set-AzureSubnet $subnetName $vm3 | New-AzureVM -ServiceName $vmNames[3] -VNetName $virtualNetworkName –Location $commonLocation
  • 14. • Потеря IP адреса после выключения • Зависимость ресурсов от IP адреса Шаг 4. Присвоение статических IP
  • 15. $vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest") $staticIPs = @("10.0.0.4", "10.0.0.5", "10.0.0.6", "10.0.0.7") for($i=0; $i -le 3; $i++) { Get-AzureVM -ServiceName $vmNames[$i] -Name $vmNames[$i] | Set-AzureStaticVNetIP -IPAddress $staticIPs[$i] | Update-AzureVM }
  • 16. Шаг 5. Добавление Endpoint’ов к виртуальным машинам • Что такое endpoint? • 2 endpoint’а по умолчанию: RDP, PowerShell • HTTP(80), SQL(1433) и другие - закрыты
  • 17. $webVmNames = @("ilgonetest", "ilgtwotest") foreach($vm in $webVmNames) { Get-AzureVM -ServiceName $vm -Name $vm | Add-AzureEndpoint -Name "HttpIn" -Protocol "tcp" -PublicPort 80 -LocalPort 80 | Update-AzureVM }
  • 19. $vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest") $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) foreach($vm in $vmNames) { $uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm $sessionOption = New-PSSessionOption -SkipCACheck:$true - SkipCNCheck:$true -SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential -SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock {Get- NetFirewallProfile | Set-NetFirewallProfile –Enabled False} $session | Remove-PSSession }
  • 20. • Обзор доступных вариантов • VHD – Virtual Hard Drive • Azure Blob Storage Шаг 7. Загрузка файлов на VM
  • 21. $vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest") $volumePath = "D:FileStorage.vhd" $folderToCopy = "D:PRJ" $azureStoragePaths = ("http://ilagin.blob.core.windows.net/vhdstore/FileStorage0.vhd", "http://ilagin.blob.core.windows.net/vhdstore/FileStorage1.vhd", "http://ilagin.blob.core.windows.net/vhdstore/FileStorage2.vhd", "http://ilagin.blob.core.windows.net/vhdstore/FileStorage3.vhd") $volume = new-vhd -Path $volumePath -SizeBytes 40MB | ` Mount-VHD -PassThru | ` Initialize-Disk -PartitionStyle mbr -Confirm:$false -PassThru | ` New-Partition -UseMaximumSize -AssignDriveLetter -MbrType IFS | ` Format-Volume -NewFileSystemLabel "VHD" -Confirm:$false Copy-Item $folderToCopy "$($volume.DriveLetter):" -Recurse Dismount-VHD $volumePath
  • 22. for($i=0; $i -le 3; $i++) { Add-AzureVhd -Destination $azureStoragePaths[$i] - LocalFilePath $volumePath Get-AzureVM $vmNames[$i] $vmNames[$i] | Add-AzureDataDisk -ImportFrom -MediaLocation $azureStoragePaths[$i] -DiskLabel "EXT" -LUN 0 | Update-AzureVM }
  • 24. $webVmNames = @("ilgonetest", "ilgtwotest") $webPaths = @("E:PRJAPI", "E:PRJWeb") $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $i = 0 foreach($vm in $webVmNames) { $uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm $sessionOption = New-PSSessionOption -SkipCACheck:$true - SkipCNCheck:$true -SkipRevocationCheck:$true
  • 25. $session = New-PSSession -ConnectionUri $uri -Credential $credential - SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock { param($path, $user, $password) Set-ExecutionPolicy RemoteSigned Import-Module WebAdministration if (!(Test-Path $path)) { $path = $path.Replace("E:", "F:") } Remove-Item IIS:AppPoolsAdminAppPool -Force -Recurse $appPool = New-WebAppPool -Name "AdminAppPool" $appPool.processModel.userName = $user $appPool.processModel.password = $password $appPool.processModel.identityType = "SpecificUser" $appPool | Set-Item }
  • 26. Remove-Item IIS:Sites"Default Web Site" -Force -Recurse Remove-Item IIS:SitesAzureProvisioning -Force -Recurse New-Item IIS:SitesAzureProvisioning -physicalPath $path - bindings @{protocol="http";bindingInformation=":80:"} Set-ItemProperty IIS:SitesAzureProvisioning -name applicationPool -value AdminAppPool } -Args $webPaths[$i], $userName, $pwd $session | Remove-PSSession $i++ }
  • 27. Шаг 9. Добавление Windows пользователей
  • 28. $sqlVmNames = @("ilgthreetest", "ilgfourtest") $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $newUserName = "Replication" foreach($vm in $sqlVmNames) { $uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm $sessionOption = New-PSSessionOption -SkipCACheck:$true - SkipCNCheck:$true -SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential - SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock {
  • 29. param($vmName, $userToCreate, $userPassword) $Computer = [ADSI]("WinNT://" + $vmName) $LocalAdmin = $Computer.Create("User", $userToCreate) $LocalAdmin.SetPassword($userPassword) $LocalAdmin.SetInfo() $LocalAdmin.FullName = "Azure Provisioning Demo" $LocalAdmin.SetInfo() $LocalAdmin.UserFlags = 64 + 65536 # ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD $LocalAdmin.SetInfo() $objOU = [ADSI]("WinNT://" + $vmName + "/Administrators,group") $objOU.add("WinNT://" + $vmName +"/" + $userToCreate) } -Args $vm, $newUserName, $pwd $session | Remove-PSSession }
  • 30. Шаг 10. Добавление SQL пользователей
  • 31. $sqlVmNames = @("ilgthreetest", "ilgfourtest") $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $newUserName = "Replication" foreach($vm in $sqlVmNames) { $uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm $sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true - SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential - SessionOption $sessionOption
  • 32. Invoke-Command -Session $session -ScriptBlock { param($vmName, $userName, $userPassword) Set-ExecutionPolicy RemoteSigned Import-Module SQLPS -DisableNameChecking $SQLInstanceName = "(local)" $Server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList $SQLInstanceName if ($Server.Logins.Contains($userName)) { $Server.Logins[$userName].Drop() } $Login = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList $Server, $userName $Login.LoginType = [Microsoft.SqlServer.Management.Smo.LoginType]::SqlLogin $Login.PasswordExpirationEnabled = $false $Login.Create($userPassword) $Login.AddToRole("sysadmin") $Login.Alter()
  • 33. $replicationWindowsUser = $vmName + "Replication" if ($Server.Logins.Contains($replicationWindowsUser)) { $Server.Logins[$replicationWindowsUser].Drop() } $Login = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Login -ArgumentList $Server, $replicationWindowsUser $Login.LoginType = [Microsoft.SqlServer.Management.Smo.LoginType]::WindowsUser $Login.PasswordExpirationEnabled = $false $Login.Create($userPassword) $Login.AddToRole("sysadmin") $Login.Alter() } -Args $vm, $newUserName, $pwd $session | Remove-PSSession }
  • 34. Шаг 11. Изменение режима проверки подлинности SQL сервера. Включение SQL Server Agent.
  • 35. $sqlVmNames = @("ilgthreetest", "ilgfourtest") $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $newUserName = "Replication" foreach($vm in $sqlVmNames) { $uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm $sessionOption = New-PSSessionOption -SkipCACheck:$true - SkipCNCheck:$true -SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential -SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock { param($vmName)
  • 36. Set-ExecutionPolicy RemoteSigned Import-Module SQLPS -DisableNameChecking $sqlServer = new-object ('Microsoft.SqlServer.Management.Smo.Server') '(local)' $sqlServer.Settings.LoginMode = [Microsoft.SqlServer.Management.SMO.ServerLoginMode]::Mixed $sqlServer.Alter() CD SQLSERVER:SQL$vmName $Wmi = (get-item .).ManagedComputer $sqlInstance = $Wmi.Services['MSSQLSERVER'] $sqlInstance.Stop() Start-Sleep -s 10 $sqlInstance.Start() $agent = $Wmi.Services['SQLSERVERAGENT'] $agent.Start() } -Args $vm $session | Remove-PSSession }
  • 38. $sqlVmNames = @("ilgthreetest", "ilgfourtest") $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) foreach($vm in $sqlVmNames) { $uri = Get-AzureWinRMUri -ServiceName $vm -Name $vm $sessionOption = New-PSSessionOption -SkipCACheck:$true - SkipCNCheck:$true -SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential -SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock { Set-ExecutionPolicy RemoteSigned Import-Module SQLPS -DisableNameChecking
  • 39. $srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)") $db = New-Object Microsoft.SqlServer.Management.Smo.Database($srv, "AzureProvisioning") $db.Create() $backupFilePath = "E:PRJdb.bak" if (!(Test-Path $backupFilePath)) { $backupFilePath = "F:PRJdb.bak" } Restore-SqlDatabase -ServerInstance "(local)" -Database AzureProvisioning -BackupFile $backupFilePath -ReplaceDatabase } $session | Remove-PSSession }
  • 41. $distributorVm = "ilgthreetest" $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $uri = Get-AzureWinRMUri -ServiceName $distributorVm -Name $distributorVm $sessionOption = New-PSSessionOption -SkipCACheck:$true - SkipCNCheck:$true -SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential -SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock { Set-ExecutionPolicy RemoteSigned Import-Module SQLPS -DisableNameChecking
  • 42. $publicationFilePath = "E:PRJpublication.sql" if (!(Test-Path $publicationFilePath)) { $publicationFilePath = "F:PRJpublication.sql" } Invoke-SqlCmd -InputFile $publicationFilePath - ServerInstance "(local)" } $session | Remove-PSSession
  • 44. $sqlSubscriberVM = "ilgfourtest" $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $uri = Get-AzureWinRMUri -ServiceName $sqlSubscriberVM -Name $sqlSubscriberVM $sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true - SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential - SessionOption $sessionOption
  • 45. Invoke-Command -Session $session -ScriptBlock { $pathToShare = "E:PRJ" if (!(Test-Path $pathToShare)) { $pathToShare = $pathToShare.Replace("E:", "F:") } $netSharePath = "PRJ=" + $pathToShare net user guest /active:yes net share $netSharePath "/GRANT:Everyone,FULL" } $session | Remove-PSSession
  • 46. $session | Remove-PSSession $sqlPublisherVM = "ilgthreetest" $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $uri = Get-AzureWinRMUri -ServiceName $sqlPublisherVM -Name $sqlPublisherVM $sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true -SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential - SessionOption $sessionOption
  • 47. Invoke-Command -Session $session -ScriptBlock { Set-ExecutionPolicy RemoteSigned Import-Module SQLPS -DisableNameChecking $path = "E:PRJ" if (!(Test-Path $path)) { $path = $path.Replace("E:", "F:") } $backupPath = $path + "new.bak" Backup-SqlDatabase -ServerInstance '(local)' -Database "AzureProvisioning" -BackupFile $backupPath
  • 48. $pass="Super Secure Password1"|ConvertTo-SecureString - AsPlainText -Force $cred = New-Object System.Management.Automation.PsCredential("ILGFOURTESTeugene",$pass) New-PSDrive -Name R -Root "10.0.0.7PRJ" -PSProvider FileSystem -Credential $cred Copy-Item $backupPath "R:" } $session | Remove-PSSession
  • 50. $uri = Get-AzureWinRMUri -ServiceName $sqlSubscriberVM -Name $sqlSubscriberVM $sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true -SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential - SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock { Set-ExecutionPolicy RemoteSigned Import-Module SQLPS -DisableNameChecking $srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)") $db = New-Object Microsoft.SqlServer.Management.Smo.Database($srv, "AzureProvisioning") $db.Create() $backupPath = "E:PRJnew.bak"
  • 51. if (!(Test-Path $backupPath)) { $backupPath = $backupPath.Replace("E:", "F:") } Restore-SqlDatabase -ServerInstance "(local)" -Database AzureProvisioning -BackupFile $backupPath -ReplaceDatabase }
  • 53. $session | Remove-PSSession $distributorVm = "ilgthreetest" $userName = "eugene" $pwd = "Super Secure Password1" $securePassword = ConvertTo-SecureString $pwd -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential($userName, $securePassword) $uri = Get-AzureWinRMUri -ServiceName $distributorVm -Name $distributorVm $sessionOption = New-PSSessionOption -SkipCACheck:$true -SkipCNCheck:$true - SkipRevocationCheck:$true $session = New-PSSession -ConnectionUri $uri -Credential $credential - SessionOption $sessionOption Invoke-Command -Session $session -ScriptBlock {
  • 54. Set-ExecutionPolicy RemoteSigned Import-Module SQLPS -DisableNameChecking $supscriptionFilePath = "E:PRJsubscription.sql" if (!(Test-Path $supscriptionFilePath)) { $supscriptionFilePath = $supscriptionFilePath.Replace("E:", "F:") } Invoke-SqlCmd -InputFile $supscriptionFilePath -ServerInstance "(local)" } $session | Remove-PSSession
  • 56. $vmNames = @("ilgonetest", "ilgtwotest", "ilgthreetest", "ilgfourtest") $storageAccountName = "ilagin" foreach($vm in $vmNames) { Remove-AzureDeployment -ServiceName $vm -Slot Production -DeleteVHD -Force Remove-AzureService -ServiceName $vm -Force } Remove-AzureVNetConfig Start-Sleep -s 30 Remove-AzureStorageAccount -StorageAccountName $storageAccountName
  • 57. Заключение Provisioning в один клик. Fun или необходимость?