שלום לכולם,
במאמר קצר זה אני הולך להראות לכם איך ליצור Golden Image מותאם אישית ואיך “להפיץ” באופן פשוט כולל הכנסה לדומיין בעזרת סקריפט.למי שלא מכיר -Golden Image מאפשר ליצור Template (תבנית) של מערכת הפעלה עם כל התוכנות, הגדרות שביצעתם ולהפיץ אותה לשרתים חדשים.פלטפורמת Azure מאפשרת ליצור Golden Image כתבנית בסיס בהתאם לתצורת העבודה בארגון לטובת יצירת מכונות וירטואליות חדשות במקום מתבנית נקייה של Windows/Linux ב-Azure Marketplace.חלק מיתרונות ביצירת Image מותאם אישית:
בוחרים את השרת הרצוי (השרת שביצענו Sysprep בשלב ה-I) ולוחצים על Capture
נותנים שם ל-Image ולאיזה ResourceGroup לשייך אותובנוסף, יש אפשרות לסמן ב-V שלאחר סיום ה-Capture תתבצע תהליך מחיקה אוטומטית ל-VM.
הערה: שימו לב שיש לבצע Sysprep (ביצענו בשלב ה-I) לפני שמריצים Capture.
לאחר סיום ה-Capture נוכל לראות תחת Images את ה-Image שיצרנו ונוכל להתחיל ליצור מכונות חדשות בלחיצה על Create VM
אני רוצה לשתף אתכם בסקריפט שכתבתי שמאפשר ליצור מכונות חדשות ולהכניס ישירות לדומיין.תהליך זה יעזור לכם בפריסה מהירה של מחשבים ואפשרות לתת למשתמשים מסוימים להרים מכונות חברות בדומיין בצורה קלה ופשוטה.לינק להורדה ישירה של הסקריפט: Deploy Azure VM from Image with Join AD
#Set Parameters
#VM Configuration
$VNName = "<VM Computer Name>"
$ResoureGroup = "<ResourceGroup Name>"
$SizeVM = "<Size of the VM>"
$Location = "<Azure Region Location>"
$VNetName = "<VNET Name>"
$SubnetName = "<Subnet Name>"
$ImageName = "<Image Name to Deploy>"
$ResoureGroupImage = "<ResourceGroup of the image>"
#Join to Domain (Need Domain Admin Credential)
$DomainName = "<Domain Name>"
$DomainJoinAdminName = "<Admin Account - Domain\UserName>"
$DomainJoinPassword = "<Admin Password>"
$OUDN = "<OU Distinguished Name>"
####MAIN Script###
#Get Image ID
$image = Get-AzureRMImage -ImageName:$ImageName -ResourceGroupName:$ResoureGroupImage -ErrorAction:Stop;
if ($Image) {
#Get VNET
$vnetDef = Get-AzureRmVirtualNetwork -ResourceGroupName:$ResoureGroup -Name:$VNetName -ErrorAction:Stop;
#Get Subnet
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name:$SubnetName -VirtualNetwork:$vnetDef -ErrorAction:Stop;
$nicName = "$VNName-NIC1"
#Create NIC
$nic = New-AzureRmNetworkInterface -ResourceGroupName:$ResoureGroup -Location:$Location -Name:$nicName -SubnetId:$subnet.Id -ErrorAction:Stop;
#Provide Local Admin Credential
$Cred = Get-Credential -Message:"Please Provide Local Admin User for VM" -ErrorAction:Stop;
if (!$Cred) {
Write-Host "Error: Invaild Local Admin Credential (The Windows will be close after 3 seconds)";
sleep -Seconds:3;
Exit -1
}
#VM Configuration
$vm = New-AzureRmVMConfig -VMName $VNName -VMSize $SizeVM;
$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id;
$vm = Set-AzureRmVMOSDisk -VM $vm -StorageAccountType standardLRS -DiskSizeInGB 128 -CreateOption FromImage -Caching ReadWrite;
$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $VNName -Credential $Cred -ProvisionVMAgent -EnableAutoUpdate;
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id;
#Create Azure VM
try {
New-AzureRmVM -VM $vm -ResourceGroupName $ResoureGroup -Location $Location;
} catch {
$ErrorMessage = $_.Exception.Message;
Write-Host "Failed To Create VM with error $errorMessage (The Windows will be close after 3 seconds)";
sleep -Seconds:3;
Exit -1
}
#Join to AD with ADExtension
try {
Set-AzureRMVMExtension -VMName $VNName -ResourceGroupName $ResoureGroup -Name "JoinAD" -ExtensionType "JsonADDomainExtension" -Publisher "Microsoft.Compute" -TypeHandlerVersion "1.0" -Location $Location -Settings @{ "Name" = $DomainName; "OUPath" = "$OUDN"; "User" = $DomainJoinAdminName; "Restart" = "true"; "Options" = 3} -ProtectedSettings @{ "Password" = $DomainJoinPassword}
} catch {
$ErrorMessage = $_.Exception.Message;
Write-Host "Failed To Join Domain with error $errorMessage";
}
}
בהצלחה
שלום לכולם,
במאמר קצר זה אני הולך להראות לכם איך ליצור Golden Image מותאם אישית ואיך “להפיץ” באופן פשוט כולל הכנסה לדומיין בעזרת סקריפט.למי שלא מכיר -Golden Image מאפשר ליצור Template (תבנית) של מערכת הפעלה עם כל התוכנות, הגדרות שביצעתם ולהפיץ אותה לשרתים חדשים.פלטפורמת Azure מאפשרת ליצור Golden Image כתבנית בסיס בהתאם לתצורת העבודה בארגון לטובת יצירת מכונות וירטואליות חדשות במקום מתבנית נקייה של Windows/Linux ב-Azure Marketplace.חלק מיתרונות ביצירת Image מותאם אישית:
בוחרים את השרת הרצוי (השרת שביצענו Sysprep בשלב ה-I) ולוחצים על Capture
נותנים שם ל-Image ולאיזה ResourceGroup לשייך אותובנוסף, יש אפשרות לסמן ב-V שלאחר סיום ה-Capture תתבצע תהליך מחיקה אוטומטית ל-VM.
הערה: שימו לב שיש לבצע Sysprep (ביצענו בשלב ה-I) לפני שמריצים Capture.
לאחר סיום ה-Capture נוכל לראות תחת Images את ה-Image שיצרנו ונוכל להתחיל ליצור מכונות חדשות בלחיצה על Create VM
אני רוצה לשתף אתכם בסקריפט שכתבתי שמאפשר ליצור מכונות חדשות ולהכניס ישירות לדומיין.תהליך זה יעזור לכם בפריסה מהירה של מחשבים ואפשרות לתת למשתמשים מסוימים להרים מכונות חברות בדומיין בצורה קלה ופשוטה.לינק להורדה ישירה של הסקריפט: Deploy Azure VM from Image with Join AD
#Set Parameters
#VM Configuration
$VNName = "<VM Computer Name>"
$ResoureGroup = "<ResourceGroup Name>"
$SizeVM = "<Size of the VM>"
$Location = "<Azure Region Location>"
$VNetName = "<VNET Name>"
$SubnetName = "<Subnet Name>"
$ImageName = "<Image Name to Deploy>"
$ResoureGroupImage = "<ResourceGroup of the image>"
#Join to Domain (Need Domain Admin Credential)
$DomainName = "<Domain Name>"
$DomainJoinAdminName = "<Admin Account - Domain\UserName>"
$DomainJoinPassword = "<Admin Password>"
$OUDN = "<OU Distinguished Name>"
####MAIN Script###
#Get Image ID
$image = Get-AzureRMImage -ImageName:$ImageName -ResourceGroupName:$ResoureGroupImage -ErrorAction:Stop;
if ($Image) {
#Get VNET
$vnetDef = Get-AzureRmVirtualNetwork -ResourceGroupName:$ResoureGroup -Name:$VNetName -ErrorAction:Stop;
#Get Subnet
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name:$SubnetName -VirtualNetwork:$vnetDef -ErrorAction:Stop;
$nicName = "$VNName-NIC1"
#Create NIC
$nic = New-AzureRmNetworkInterface -ResourceGroupName:$ResoureGroup -Location:$Location -Name:$nicName -SubnetId:$subnet.Id -ErrorAction:Stop;
#Provide Local Admin Credential
$Cred = Get-Credential -Message:"Please Provide Local Admin User for VM" -ErrorAction:Stop;
if (!$Cred) {
Write-Host "Error: Invaild Local Admin Credential (The Windows will be close after 3 seconds)";
sleep -Seconds:3;
Exit -1
}
#VM Configuration
$vm = New-AzureRmVMConfig -VMName $VNName -VMSize $SizeVM;
$vm = Set-AzureRmVMSourceImage -VM $vm -Id $image.Id;
$vm = Set-AzureRmVMOSDisk -VM $vm -StorageAccountType standardLRS -DiskSizeInGB 128 -CreateOption FromImage -Caching ReadWrite;
$vm = Set-AzureRmVMOperatingSystem -VM $vm -Windows -ComputerName $VNName -Credential $Cred -ProvisionVMAgent -EnableAutoUpdate;
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $nic.Id;
#Create Azure VM
try {
New-AzureRmVM -VM $vm -ResourceGroupName $ResoureGroup -Location $Location;
} catch {
$ErrorMessage = $_.Exception.Message;
Write-Host "Failed To Create VM with error $errorMessage (The Windows will be close after 3 seconds)";
sleep -Seconds:3;
Exit -1
}
#Join to AD with ADExtension
try {
Set-AzureRMVMExtension -VMName $VNName -ResourceGroupName $ResoureGroup -Name "JoinAD" -ExtensionType "JsonADDomainExtension" -Publisher "Microsoft.Compute" -TypeHandlerVersion "1.0" -Location $Location -Settings @{ "Name" = $DomainName; "OUPath" = "$OUDN"; "User" = $DomainJoinAdminName; "Restart" = "true"; "Options" = 3} -ProtectedSettings @{ "Password" = $DomainJoinPassword}
} catch {
$ErrorMessage = $_.Exception.Message;
Write-Host "Failed To Join Domain with error $errorMessage";
}
}
בהצלחה
הודעתך לא התקבלה - נסה שוב מאוחר יותר
Oops! Something went wrong while submitting the form