將現有系統發佈到Azure marketplace
上架商業市集
請參考下面資訊和模板範本將現有系統發佈到Azure marketplace
可以通過部署 Solution template 到 Azure Marketplace 實現將 IAAS 發佈至 Azure
請參考:
Plan a solution template for an Azure application offer | Microsoft Docs
此種部署方式最重要的部分是客制下面兩個json 檔
【mainTemplate.json】 實際就是ARM template
參考:
Publish service catalog managed app – Azure Managed Applications | Microsoft Docs
【createUiDefinition.json】用於客制化用戶部署時看到的頁面,用於提供用戶輸入ARM Template 的必要參數,
portal 有提供可視化 UI 協助設計這個 json 檔,相對簡單
參考:
CreateUiDefinition.json file for portal pane – Azure Managed Applications | Microsoft Docs
最重要的是 【mainTemplate.json】
主要參考下面幾個鏈接來製作
參考:
Create SQL Server VM using an ARM template – SQL Server on Azure VMs | Microsoft Docs
基本原理:
基於官方鏡像部署標磚SQL Server,然後基於VM 的DSC 擴展,通過PowerShell 執行sqlcmd 運行SQL 初始化資料庫,並下載部署Web site package
同時部署NSG rule 開啓3389(爲了測試,實際部署可以刪除此隊則),80,443 端口的公網訪問
相關範例
l
ARM template 參數,可以結合mainTemplate.json.json 進行測試
下載地址
https://ericshare.blob.core.windows.net/dsc/azuredeploy.parameters.json
l
ARM template ,用於部署VM+SQL+DSC+NSG 開啓ports
下載地址
https://ericshare.blob.core.windows.net/dsc/mainTemplate.json.json
l
範例UI 定義文件
下載地址
https://ericshare.blob.core.windows.net/dsc/createUiDefinition.json
l
DSC 脚本,請將powershell package zip獲得,然後上傳到自己的位置, 對應的就是createUiDefinition.json/azuredeploy.parameters.json 中的這個參數modulesUrl
將執行初始化資料庫,下載安裝web deploy package,請根據實際修改powershell
下載地址
https://ericshare.blob.core.windows.net/dsc/ConfigureWebServer.zip
請特別注意如下高亮部分DSC 包含的設定
1. WebDeploy 改爲較官方範例更改為直接通過 MSI 安裝,通過 WPI 安裝 WebDeploy 實測2019 上會發生報錯
2. SQL 最後加上 EXIT 避免部署 DSC 長時間卡住
Package WebDeploy_Installation
{
Ensure = “Present”
Name = “Microsoft Web Deploy 3.6”
ProductId = ‘6773A61D-755B-4F74-95CC-97920E45E696’
Arguments = “LicenseAccepted=’0′ ADDLOCAL=ALL”
}
Script DeployWebPackage
{
GetScript = {
@{
Result = “”
}
}
TestScript = {
$false
}
SetScript ={
#初始化資料庫
$initSQL = ”
CREATE DATABASE [$using:DbName]
GO
USE [$using:DbName]
GO
CREATE TABLE [dbo].[demo_table](
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
)
GO
EXIT
”
$initSQL | Out-File -filepath C:\WindowsAzure\initSQL.txt -append -width 200
sqlcmd -S “$using:DbServerName” -U “$using:DbUserName” -P “$using:DbPassword” -q $initSQL
#下載部署WEB Site
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
$WebClient = New-Object -TypeName System.Net.WebClient
$Destination= “C:\WindowsAzure\WebApplication.zip”
$WebClient.DownloadFile($using:WebDeployPackagePath,$destination)
$ConnectionStringName = “DefaultConnection-Web.config Connection String”
$ConnectionString = “Server=tcp:”+ “$using:DbServerName” + “,1433;Database=” + “$using:DbName” + “;User ID=” + “$using:DbUserName”+”;Password=” + “$using:DbPassword”+ “;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;”
$ConnectionString | Out-File -filepath C:\WindowsAzure\outfile.txt -append -width 200
$Argument = ‘-source:package=”C:\WindowsAzure\WebApplication.zip”‘ + ‘ -dest:auto,ComputerName=”localhost”,’+”username=$using:UserName” +”,password=$using:Password” + ‘ -setParam:name=”‘ + “$ConnectionStringName” + ‘”‘+’,value=”‘ + “$ConnectionString” + ‘” -verb:sync -allowUntrusted’
$MSDeployPath = (Get-ChildItem “HKLM:\SOFTWARE\Microsoft\IIS Extensions\MSDeploy” | Select -Last 1).GetValue(“InstallPath”)
Start-Process “$MSDeployPath\msdeploy.exe” $Argument -Verb runas
}
}
參考:
Provisioning WebDeploy in VSTS/TFS release via DSC script – Mummy’s blog (majcica.com)
Deploying Web Packages | Microsoft Docs
l 需要部署的web deploy package ,可以替換成自己的zip ,對應的就是createUiDefinition.json/azuredeploy.parameters.json 中的這個參數webdeploypkg
下載地址
https://ericshare.blob.core.windows.net/dsc/WebApplication3.zip
參照azuredeploy.parameters.json& mainTemplate.json.json 這兩個範例
測試ARM template
如何部署ARM Template請參考:
Deploy resources with Azure portal – Azure Resource Manager | Microsoft Docs
我側測試截圖
部署完成后,RDP 登入VM, 發現資料庫和站點也初始化成功,并且數據庫鏈接也有正確設定
確認Template 可以正常運作后,和createUiDefinition.json package 成zip
然後參考下面兩個鏈接逐步創建並上載並發佈Solution template zip 即可
參考:
近期留言