تثبيت البرامج وإعداد الموارد للبرنامج التعليمي
هام
لم يعد Azure SQL Edge يدعم النظام الأساسي ARM64.
ستقوم في هذا البرنامج التعليمي المكون من ثلاثة أجزاء بإنشاء نموذج التعلم الآلي للتنبؤ بشوائب خام الحديد كنسبة مئوية من السيليكا، ثم نشر النموذج في حافة Azure SQL Edge. في الجزء الأول، ستقوم بتثبيت البرنامج المطلوب، ونشر موارد Azure.
المتطلبات الأساسية
- إذا لم يكن لديك اشتراك Azure، فيمكنك إنشاء حساب مجاني.
- تثبيت Visual Studio 2019 باستخدام
- أدوات حافة Azure IoT Edge
- تطوير المنصات المشتركة عن طريق NET Core
- أدوات تطوير الحاويات
- تثبيت Azure Data Studio
- افتح استوديو بيانات Azure، وقم بتهيئة لغة بايثون لأجهزة الكمبيوتر المحمولة. للحصول على التفاصيل، راجع تكوين Python لدفاتر الملاحظات. قد تستغرق هذه الخطوة عدة دقائق.
- تثبيت أحدث إصدار من Azure CLI. تتطلب البرامج النصية التالية تثبيت أحدث إصدار من AZ PowerShell (3.5.0 فبراير 2020).
- قم بإعداد البيئة لتصحيح أخطاء حل IoT Edge وتشغيله واختباره عن طريق تثبيت Azure IoT EdgeHub Dev Tool.
- تثبيت Docker.
نشر موارد Azure باستخدام برنامج PowerShell النصي
نشر موارد Azure المطلوبة من خلال هذا البرنامج التعليمي لحافة Azure SQL Edge. يمكن نشر هذه الموارد إما باستخدام برنامج نصي PowerShell أو من خلال مدخل Microsoft Azure. يستخدم هذا البرنامج التعليمي برنامج PowerShell النصي.
إشعار
تستخدم هذه المقالة أحدث إصدار من ملحق Azure IoT، ويطلق عليه azure-iot
. يسمى الإصدار القديم azure-cli-iot-ext
. يجب أن يكون لديك إصدار واحد فقط مُثبت في كل مرة. يمكنك استخدام الأمر az extension list
للتحقق من صحة الملحقات المثبتة حالياً.
استخدم az extension remove --name azure-cli-iot-ext
لإزالة الإصدار القديم من الملحق.
استخدم az extension add --name azure-iot
لإضافة الإصدار الجديد من الملحق.
لمعرفة ما هي الملحقات التي قمت بتثبيتها، استخدم az extension list
.
استعادة الوحدات النمطية اللازمة لتشغيل البرنامج النصي PowerShell في هذا البرنامج التعليمي.
Import-Module Az.Accounts -RequiredVersion 1.7.3 Import-Module -Name Az -RequiredVersion 3.5.0 Import-Module Az.IotHub -RequiredVersion 2.1.0 Import-Module Az.Compute -RequiredVersion 3.5.0 az extension add --name azure-iot az extension add --name azure-cli-ml
قم بتعريف المتغيرات المطلوبة بواسطة البرنامج النصي PowerShell.
$ResourceGroup = "<name_of_the_resource_group>" $IoTHubName = "<name_of_the_IoT_hub>" $location = "<location_of_your_Azure_Subscription>" $SubscriptionName = "<your_azure_subscription>" $NetworkSecGroup = "<name_of_your_network_security_group>" $StorageAccountName = "<name_of_your_storage_account>"
قم بتعريف باقي المتغيرات.
$IoTHubSkuName = "S1" $IoTHubUnits = 4 $EdgeDeviceId = "IronOrePredictionDevice" $publicIpName = "VMPublicIP" $imageOffer = "iot_edge_vm_ubuntu" $imagePublisher = "microsoft_iot_edge" $imageSku = "ubuntu_1604_edgeruntimeonly" $AdminAcc = "iotadmin" $AdminPassword = ConvertTo-SecureString "IoTAdmin@1234" -AsPlainText -Force $VMSize = "Standard_DS3" $NetworkName = "MyNet" $NICName = "MyNIC" $SubnetName = "MySubnet" $SubnetAddressPrefix = "10.0.0.0/24" $VnetAddressPrefix = "10.0.0.0/16" $MyWorkSpace = "SQLDatabaseEdgeDemo" $containerRegistryName = $ResourceGroup + "ContRegistry"
لبدء إنشاء الأصول، سجل الدخول إلى Azure.
Login-AzAccount az login
أعد معرف الاشتراك في Azure
Select-AzSubscription -Subscription $SubscriptionName az account set --subscription $SubscriptionName
أنشأ مجموعة الموارد إذا لم تكن موجودة بالفعل.
$rg = Get-AzResourceGroup -Name $ResourceGroup if($rg -eq $null) { Write-Output("Resource Group $ResourceGroup does not exist, creating Resource Gorup") New-AzResourceGroup -Name $ResourceGroup -Location $location } else { Write-Output ("Resource Group $ResourceGroup exists") }
أنشأ حساب التخزين، وحاوية حساب التخزين في مجموعة الموارد.
$sa = Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName if ($sa -eq $null) { New-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName -SkuName Standard_LRS -Location $location -Kind Storage $sa = Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName $storageKey = Get-AzStorageAccountKey -ResourceGroupName $ResourceGroup -Name $StorageAccountName $storageContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $storageKey[0].Value New-AzStorageContainer -Name "sqldatabasedacpac" -Context $storageContext } else { Write-Output ("Storage Account $StorageAccountName exists in Resource Group $ResourceGroup") }
تحميل ملف قاعدة البيانات
dacpac
إلى حساب التخزين وإنشاء عنوان URL SAS للكائن الثنائي كبير الحجم. دون ملاحظة عن عنوان URL SAS للكائن الثنائي كبير الحجم لقاعدة البياناتdacpac
.$file = Read-Host "Please Enter the location to the zipped Database DacPac file:" Set-AzStorageBlobContent -File $file -Container "sqldatabasedacpac" -Blob "SQLDatabasedacpac.zip" -Context $sa.Context $DacpacFileSASURL = New-AzStorageBlobSASToken -Container "sqldatabasedacpac" -Blob "SQLDatabasedacpac.zip" -Context $sa.Context -Permission r -StartTime (Get-Date).DateTime -ExpiryTime (Get-Date).AddMonths(12) -FullUri
أنشأ سجل حاويات Azure ضمن مجموعة الموارد المذكورة
$containerRegistry = Get-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName if ($containerRegistry -eq $null) { New-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName -Sku Standard -Location $location -EnableAdminUser $containerRegistry = Get-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName } else { Write-Output ("Container Registry $containerRegistryName exists in Resource Group $ResourceGroup") }
أنشأ مجموعة أمان الشبكة ضمن مجموعة الموارد.
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NetworkSecGroup if($nsg -eq $null) { Write-Output("Network Security Group $NetworkSecGroup does not exist in the resource group $ResourceGroup") $rule1 = New-AzNetworkSecurityRuleConfig -Name "SSH" -Description "Allow SSH" -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 22 $rule2 = New-AzNetworkSecurityRuleConfig -Name "SQL" -Description "Allow SQL" -Access Allow -Protocol Tcp -Direction Inbound -Priority 101 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 1600 New-AzNetworkSecurityGroup -Name $NetworkSecGroup -ResourceGroupName $ResourceGroup -Location $location -SecurityRules $rule1, $rule2 $nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NetworkSecGroup } else { Write-Output ("Network Security Group $NetworkSecGroup exists in the resource group $ResourceGroup") }
أنشأ جهاز افتراضي Azure لتمكين حافة SQL Edge. يعمل هذا الجهاز الظاهري كجهاز Edge.
$AzVM = Get-AzVM -ResourceGroupName $ResourceGroup -Name $EdgeDeviceId If($AzVM -eq $null) { Write-Output("The Azure VM with Name- $EdgeVMName is not present in the Resource Group- $ResourceGroup ") $SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix $Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroup -Location $location -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet $publicIp = New-AzPublicIpAddress -Name $publicIpName -ResourceGroupName $ResourceGroup -AllocationMethod Static -Location $location $NIC = New-AzNetworkInterface -Name $NICName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id -PublicIpAddressId $publicIp.Id ##Set-AzNetworkInterfaceIpConfig -Name "ipconfig1" -NetworkInterface $NIC -PublicIpAddress $publicIp $Credential = New-Object System.Management.Automation.PSCredential ($AdminAcc, $AdminPassword); $VirtualMachine = New-AzVMConfig -VMName $EdgeDeviceId -VMSize $VMSize $VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $EdgeDeviceId -Credential $Credential $VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id $VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName $imagePublisher -Offer $imageOffer -Skus $imageSku -Version latest $VirtualMachine = Set-AzVMPlan -VM $VirtualMachine -Name $imageSku -Publisher $imagePublisher -Product $imageOffer $AzVM = New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $VirtualMachine -Verbose $AzVM = Get-AzVM -ResourceGroupName $ResourceGroup -Name $EdgeDeviceId } else { Write-Output ("The Azure VM with Name- $EdgeDeviceId is present in the Resource Group- $ResourceGroup ") }
إنشاء مركز إنترنت الأشياء ضمن مجموعة الموارد.
$iotHub = Get-AzIotHub -ResourceGroupName $ResourceGroup -Name $IoTHubName If($iotHub -eq $null) { Write-Output("IoTHub $IoTHubName does not exists, creating The IoTHub in the resource group $ResourceGroup") New-AzIotHub -ResourceGroupName $ResourceGroup -Name $IoTHubName -SkuName $IoTHubSkuName -Units $IoTHubUnits -Location $location -Verbose } else { Write-Output ("IoTHub $IoTHubName present in the resource group $ResourceGroup") }
أضف جهاز Edge إلى مركز إنترنت الأشياء. تهدف هذه الخطوة فقط إلى إنشاء الهوية الرقمية للجهاز.
$deviceIdentity = Get-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId If($deviceIdentity -eq $null) { Write-Output("The Edge Device with DeviceId- $EdgeDeviceId is not registered to the IoTHub- $IoTHubName ") Add-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId -EdgeEnabled } else { Write-Output ("The Edge Device with DeviceId- $EdgeDeviceId is registered to the IoTHub- $IoTHubName") } $deviceIdentity = Get-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId
احصل على سلسلة الاتصال الأساسي للجهاز، وهو مطلوب لاحقا للجهاز الظاهري. يستخدم الأمر التالي واجهة سطر الأوامر Azure CLI لعمليات النشر.
$deviceConnectionString = az iot hub device-identity connection-string show --device-id $EdgeDeviceId --hub-name $IoTHubName --resource-group $ResourceGroup --subscription $SubscriptionName $connString = $deviceConnectionString[1].Substring(23,$deviceConnectionString[1].Length-24) $connString
تحديث سلسلة الاتصال في ملف تهيئة IoT Edge على جهاز Edge. تستخدم الأوامر التالية Azure CLI لعمليات النشر.
$script = "/etc/iotedge/configedge.sh '" + $connString + "'" az vm run-command invoke -g $ResourceGroup -n $EdgeDeviceId --command-id RunShellScript --script $script
إنشاء مساحة عمل التعلم الآلي في Azure ضمن مجموعة الموارد.
az ml workspace create -w $MyWorkSpace -g $ResourceGroup
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ