إدارة البيئات المختلطة باستخدام PowerShell في وظائف Azure والاتصالات المختلطة الخاصة بخدمة التطبيقات

تمكن ميزة الاتصالات المختلطة لخدمة التطبيقات Azure من الوصول إلى الموارد في الشبكات الأخرى. يمكنك معرفة المزيد حول هذه الإمكانية في وثائقالاتصالات المختلطة. توضح هذه المقالة كيفية استخدام هذه الإمكانية لتشغيل وظائف PowerShell التي تستهدف خادمًا محليًّا. يمكن استخدام هذا الخادم لإدارة كافة الموارد في البيئة المحلية من وظيفة Azure PowerShell.

تكوين خادم محلي لإعادة اتصال PowerShell عن بُعد

يمكن البرنامج النصي التالي تمكين اتصال PowerShell عن بعد، ثم يقوم بإنشاء قاعدة جدار حماية جديدة ووحدة استماع Https WinRM. يتم استخدام شهادة موقعة ذاتيًّا، لأغراض اختبارية. نوصي باستخدام شهادة موقعة، في بيئة إنتاج.

# For configuration of WinRM, see
# https://learn.microsoft.com/windows/win32/winrm/installation-and-configuration-for-windows-remote-management.

# Enable PowerShell remoting.
Enable-PSRemoting -Force

# Create firewall rule for WinRM. The default HTTPS port is 5986.
New-NetFirewallRule -Name "WinRM HTTPS" `
                    -DisplayName "WinRM HTTPS" `
                    -Enabled True `
                    -Profile "Any" `
                    -Action "Allow" `
                    -Direction "Inbound" `
                    -LocalPort 5986 `
                    -Protocol "TCP"

# Create new self-signed-certificate to be used by WinRM.
$Thumbprint = (New-SelfSignedCertificate -DnsName $env:COMPUTERNAME  -CertStoreLocation Cert:\LocalMachine\My).Thumbprint

# Create WinRM HTTPS listener.
$Cmd = "winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname=""$env:COMPUTERNAME ""; CertificateThumbprint=""$Thumbprint""}"
cmd.exe /C $Cmd

إنشاء تطبيق وظيفة PowerShell في المدخل

تتوفر ميزة الاتصالات المختلطة لخدمة التطبيقات فقط في خطط التسعير الأساسية والمعيارية والمعزولة. قم بإنشاء أو تحديد إحدى هذه الخطط، عند إنشاء تطبيق الوظائف باستخدام PowerShell.

  1. من قائمة مدخل Azure أو الصفحة الرئيسية، حدد Create a resource.

  2. في صفحة New، قم باختيار Compute>Function App.

  3. في صفحةالأساسيات، استخدم "إعدادات تطبيق الوظائف" على النحو المحدد في الجدول التالي.

    الإعدادات القيمة المقترحة ‏‏الوصف
    الاشتراك اشتراكك الاشتراك الذي تم من خلاله إنشاء تطبيق الوظائف الجديد هذا.
    مجموعة الموارد myResourceGroup اسم مجموعة الموارد الجديدة التي يتم من خلالها إنشاء تطبيق الوظيفة.
    اسم تطبيق الوظائف اسم فريد عالميًا الاسم الذي يحدد تطبيق الوظائف الجديد. الأحرف الصالحة هي a-z (غير حساسة لحالة الأحرف)، و0-9، و-.
    نشر الرمز خيار نشر ملفات الرمز البرمجية أو حاوية «Docker».
    مكدس وقت التشغيل اللغة المفضلة اختر ذاكرة PowerShell الأساسية.
    ‏‏الإصدار رقم الإصدار اختر إصدار وقت التشغيل المثبت.
    المنطقة المنطقة المفضلة اختر منطقةقريبة منك، أو بالقرب من الخدمات التي تصل إليها الوظائف.

    Create a function app - Basics.

  4. حدد "Next : Hosting". في صفحة "Hosting" أدخل الإعدادات التالية.

    الإعدادات القيمة المقترحة ‏‏الوصف
    حساب التخزين اسم فريد عالميًا أنشئ حساب تخزين يستخدمه تطبيق الوظائف لديك. يجب أن تكون أسماء حسابات بين 3 أحرف و24 حرفًا في الطول ويجب استخدام أرقام وأحرف صغيرة فقط. كما يمكنك استخدام حساب موجود، والذي ينبغي أن يفي بمتطلبات حساب التخزين.
    نظام التشغيل نظام التشغيل المفضل يُحدد نظام التشغيل لك مسبقًا بالاستناد إلى تحديد مكدس وقت التشغيل، غير أنه يمكنك تغيير الإعداد إذا لزم الأمر.
    نوع الخطة خطة خدمة التطبيقات قم باختيار"إنشاء خطة خدمة التطبيق". يجب عليك إدارةتحجيم نطاق وظيفة التطبيق الخاصة بك، عندما تقوم بتشغيل خطة App Service.

    Create a function app - Hosting.

  5. حدد Next : Monitoring. في صفحة Monitoring أدخل الإعدادات التالية.

    الإعدادات القيمة المقترحة ‏‏الوصف
    Application Insights الإعداد الافتراضي أنشئ "مورد Application Insights" بنفساسم التطبيقفي أقرب منطقة مدعومة. من خلال توسيع هذا الإعداد أو تحديدإنشاء جديد، يمكنك تغيير اسم Application Insights أو اختيار منطقة مختلفة فيجغرافية Azureحيث تريد تخزين البيانات.

    Create a function app - Monitoring.

  6. حدد "تقييم + إنشاء"لتقييم اختيارات تكوين التطبيق.

  7. في صفحة Review + create راجع الإعدادات، ثم قم باختيار create لتوفير تطبيق الوظيفة ونشره.

  8. قم باختيار رمز Notifications في الزاوية العلوية اليمنى من المدخل وستشاهد رسالة نجح النشر.

  9. حدد الانتقال إلى المورد لعرض تطبيق الوظيفة الجديد. يمكنك أيضًا تحديدتثبيت في لوحة المعلومات. يُسهل التثبيت العودة إلى مورد تطبيق الوظيفة هذا من لوحة المعلومات الخاصة بك.

إنشاء الاتصال المختلط لتطبيق الوظائف

يتم تكوين الاتصالات المختلطة من قسم الشبكات الخاص بتطبيق الوظائف:

  1. أسفلالإعداداتفي تطبيق الوظائف الذي أنشأته للتو، حدد"الشبكات".

  2. حدد"تكوين نقاط النهاية للاتصالات المختلطة".

    Configure the hybrid connection endpoints.

  3. حدد"إضافة اتصال مختلط".

    Add a hybrid connection.

  4. أدخل معلومات حول الاتصال المختلط كما هو موضح بعد لقطة الشاشة التالية. بالنسبة إلى مضيف نقطة النهاية، استخدم اسم المضيف للخادم المحلي الذي قمت بإنشاء الشهادة الموقعة ذاتيا له. ستكون لديك مشكلات في الاتصال عندما لا يتطابق اسم الشهادة واسم المضيف للخادم المحلي. يتطابق المنفذ مع منفذ خدمة الإدارة عن بعد الخاص بـ Windows الافتراضي الذي تم تحديده على الخادم في وقت سابق.

    Add hybrid connection.

    الإعدادات القيمة المقترحة
    اسم اتصال مختلط ContosoHybridOnPremisesServer
    المضيف الخاص بنقطة النهاية الماليات 1
    منفذ نقطة النهاية 5986
    مساحة اسم خدمة serviceBus إنشاء جديد
    Location اختيار موقع متوفر
    الاسم contosopowershell المختلط
  5. حدد "موافق" لإنشاء الاتصال المختلط.

تنزيل وتثبيت عامل مختلط

  1. حدد "تنزيل مدير الاتصال"لحفظ ملف.msiبصفة محلية على الكمبيوتر الخاص بك.

    Download the installer.

  2. نسخ ملف.msiمن الكمبيوتر المحلي إلى الخادم المحلي.

  3. قم بتشغيل "مثبت إدارة الاتصال المختلط" لتثبيت الخدمة على الخادم المحلي.

    Install the hybrid connection.

  4. من المدخل، افتح "الاتصال المختلط" ثم انسخ سلسلة اتصال البوابة إلى الحافظة.

    Copy the hybrid connection string.

  5. افتح "واجهة مستخدم إدارة الاتصال المختلط" على الخادم المحلي.

    Open the Hybrid Connection UI.

  6. حدد"إدخال يدويًّا" وألصق "سلسلة الاتصال" من الحافظة.

    Paste the hybrid connection.

  7. قم بإعادة تشغيل إدارة الاتصال المختلط من PowerShell إذا لم تظهر على أنها متصلة.

    Restart-Service HybridConnectionManager
    

إنشاء إعداد تطبيق لكلمة مرور خاصة بحساب مسؤول

  1. أسفلإعدادات تطبيق الوظيفة الخاص بك، حدد"تكوين".

  2. حدد"إعداد تطبيق جديد+".

    Configure a password for the administrator account.

  3. قم بتسمية "إعداد"كلمة مرور مستخدم Contoso، وأدخل "كلمة المرور". حدد موافق.

  4. حدد"حفظ"لتخزين كلمة المرور في تطبيق الوظيفة.

    Save the password for the administrator account.

إنشاء مشغل وظيفة HTTP

  1. في تطبيق الوظائف، حدد"وظائف"، ثم حدد"إضافة".

    Create new HTTP trigger.

  2. حدد قالب HTTP trigger

    Select the HTTP trigger template.

  3. قم بتسمية الوظيفة الجديدة وحدد"إنشاء وظيفة".

    Name and create the new HTTP trigger function.

اختبار الوظيفة

  1. في الوظيفة الجديدة، حدد"التعليمة البرمجية+ اختبار". استبدال التعليمة البرمجية لـ PowerShell من القالب بالتعليمة البرمجية التالية:

    # Input bindings are passed in via param block.
    param($Request, $TriggerMetadata)
    
    # Write to the Azure Functions log stream.
    Write-Output "PowerShell HTTP trigger function processed a request."
    
    # Note that ContosoUserPassword is a function app setting, so I can access it as $env:ContosoUserPassword.
    $UserName = "ContosoUser"
    $securedPassword = ConvertTo-SecureString  $Env:ContosoUserPassword -AsPlainText -Force
    $Credential = [System.management.automation.pscredential]::new($UserName, $SecuredPassword)
    
    # This is the name of the hybrid connection Endpoint.
    $HybridEndpoint = "finance1"
    
    $Script = {
        Param(
            [Parameter(Mandatory=$True)]
            [String] $Service
        )
        Get-Service $Service
    }
    
    Write-Output "Scenario 1: Running command via Invoke-Command"
    Invoke-Command -ComputerName $HybridEndpoint `
                   -Credential $Credential `
                   -Port 5986 `
                   -UseSSL `
                   -ScriptBlock $Script `
                   -ArgumentList "*" `
                   -SessionOption (New-PSSessionOption -SkipCACheck)
    
  2. حدد حفظ.

    Change the PowerShell code and save the HTTP trigger function.

  3. حدد "اختبار"، ثم حدد"تشغيل" لاختبار الوظيفة. قيم "التسجيلات" للتحقق من نجاح الاختبار.

    Test HTTP trigger function.

إدارة أنظمة محلية أخرى

يمكنك استخدام الخادم المحلي المتصل للاتصال بخوادم وأنظمة إدارة أخرى في البيئة المحلية. يمكنك ذلك من إدارة عمليات مركز البيانات من Azure باستخدام وظائف PowerShell. يسجل البرنامج النصي التالي جلسة تكوين PowerShell والتي يتم تشغيلها وفقًا لبيانات الاعتماد المتوفرة. يجب أن تكون بيانات الاعتماد هذه خاصة بالمسؤول عن الخوادم المدارة عن بعد. يمكنك بعد ذلك استخدام هذا التكوين للوصول إلى نقاط نهاية أخرى على الخادم المحلي أو مركز البيانات.

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."

# Note that ContosoUserPassword is a function app setting, so I can access it as $env:ContosoUserPassword.
$UserName = "ContosoUser"
$SecuredPassword = ConvertTo-SecureString  $Env:ContosoUserPassword -AsPlainText -Force
$Credential = [System.management.automation.pscredential]::new($UserName, $SecuredPassword)

# This is the name of the hybrid connection Endpoint.
$HybridEndpoint = "finance1"

# The remote server that will be connected to run remote PowerShell commands on
$RemoteServer = "finance2".

Write-Output "Use hybrid connection server as a jump box to connect to a remote machine"

# We are registering an endpoint that runs under credentials ($Credential) that has access to the remote server.
$SessionName = "HybridSession"
$ScriptCommand = {
    param (
        [Parameter(Mandatory=$True)]
        $SessionName)

    if (-not (Get-PSSessionConfiguration -Name $SessionName -ErrorAction SilentlyContinue))
    {
        Register-PSSessionConfiguration -Name $SessionName -RunAsCredential $Using:Credential
    }
}

Write-Output "Registering session on hybrid connection jumpbox"
Invoke-Command -ComputerName $HybridEndpoint `
               -Credential $Credential `
               -Port 5986 `
               -UseSSL `
               -ScriptBlock $ScriptCommand `
               -ArgumentList $SessionName `
               -SessionOption (New-PSSessionOption -SkipCACheck)

# Script to run on the jump box to run against the second machine.
$RemoteScriptCommand = {
    param (
        [Parameter(Mandatory=$True)]
        $ComputerName)
        # Write out the hostname of the hybrid connection server.
        hostname
        # Write out the hostname of the remote server.
        Invoke-Command -ComputerName $ComputerName -Credential $Using:Credential -ScriptBlock {hostname} `
                        -UseSSL -Port 5986 -SessionOption (New-PSSessionOption -SkipCACheck)
}

Write-Output "Running command against remote machine via jumpbox by connecting to the PowerShell configuration session"
Invoke-Command -ComputerName $HybridEndpoint `
               -Credential $Credential `
               -Port 5986 `
               -UseSSL `
               -ScriptBlock $RemoteScriptCommand `
               -ArgumentList $RemoteServer `
               -SessionOption (New-PSSessionOption -SkipCACheck) `
               -ConfigurationName $SessionName

استبدال المتغيرات التالية في هذا البرنامج النصي بالقيم القابلة للتطبيق من خلال البيئة الخاصة بك:

  • $HybridEndpoint
  • $ خادم مدار عن بعد

في السيناريوهين السابقين، يمكنك الاتصال وإدارة البيئات المحلية باستخدام PowerShell في وظائف Azure وفي الاتصالات المختلطة. نشجعك على معرفة المزيد عنالاتصالات المختلطةوPowerShell في الوظائف.

يمكنك أيضًا استخدام شبكات Azureالظاهريةللاتصال بالبيئة المحلية الخاصة بك من خلال وظائف Azure.

الخطوات التالية