بيانات المستخدم لجهاز Azure الظاهري

تسمح لك بيانات المستخدم بتمرير البرامج النصية أو بيانات التعريف الخاصة بك إلى جهازك الظاهري.

ما هي "بيانات المستخدم"

بيانات المستخدم هي مجموعة من البرامج النصية أو بيانات التعريف الأخرى التي يتم إدراجها إلى جهاز Azure الظاهري في وقت التوفير. يمكن لأي تطبيق على الجهاز الظاهري الوصول إلى بيانات المستخدم من خدمة بيانات تعريف مثيل Azure (IMDS) بعد تكوين إعدادات تشغيل الخدمة.

بيانات المستخدم هي إصدار جديد من البيانات المخصصة وتوفر مزايا إضافية:

  • يمكن استرداد بيانات المستخدم من خدمة بيانات تعريف مثيل Azure (IMDS) بعد تكوين إعدادات تشغيل الخدمة.

  • بيانات المستخدم مستمرة. ستكون متاحة خلال مدة بقاء VM.

  • يمكن تحديث بيانات المستخدم من خارج الجهاز الظاهري، دون إيقاف الجهاز الظاهري أو إعادة تشغيله.

  • يمكن الاستعلام عن بيانات المستخدم عبر GET VM/VMSS API مع خيار $expand.

بالإضافة إلى ذلك، إذا لم تتم إضافة بيانات المستخدم في وقت التوفير، فلا يزال بإمكانك إضافتها بعد التوفير.

تحذير الأمان

تحذير

لن يتم تشفير بيانات المستخدم، ويمكن لأي عملية على الجهاز الظاهري الاستعلام عن هذه البيانات. يجب عليك عدم تخزين المعلومات السرية في بيانات المستخدم.

تأكد من حصولك على أحدث واجهة برمجة تطبيقات Azure Resource Manager لاستخدام ميزات بيانات المستخدم الجديدة. يجب ترميز المحتويات باستخدام base64 قبل تمريرها إلى واجهة برمجة التطبيقات. لا يمكن أن يتجاوز الحجم 64 كيلوبايت.

إنشاء بيانات المستخدم من أجل Azure VM/VMSS

إضافة بيانات المستخدم عند إنشاء جهاز ظاهري جديد

استخدم قالب Azure Resource Manager هذا لإنشاء جهاز ظاهري جديد يحتوي على بيانات المستخدم. إذا كنت تستخدم rest API، لأجهزة ظاهرية واحدة، أضف "UserData" إلى قسم "الخصائص" مع طلب PUT لإنشاء الجهاز الظاهري.

{
  "name": "testVM",
  "location": "West US",
  "properties": {
    "hardwareProfile": {
      "vmSize": "Standard_A1"
    },
    "storageProfile": {
      "osDisk": {
        "osType": "Windows",
        "name": "osDisk",
        "createOption": "Attach",
        "vhd": {
          "uri": "http://myaccount.blob.core.windows.net/container/directory/blob.vhd"
        }
      }
    },
    "userData": "c2FtcGxlIHVzZXJEYXRh",
    "networkProfile": { "networkInterfaces" : [ { "name" : "nic1" } ] },
  }
}

إضافة بيانات المستخدم عند إنشاء مجموعة مقياس جهاز ظاهري جديدة

باستخدام واجهة برمجة تطبيقات rest، أضف "UserData" إلى قسم "virtualMachineProfile" مع طلب PUT عند إنشاء مجموعة مقياس الجهاز الظاهري.

{
  "location": "West US",
  "sku": {
    "name": "Standard_A1",
    "capacity": 1
  },
  "properties": {
    "upgradePolicy": {
      "mode": "Automatic"
    },
    "virtualMachineProfile": {
      "userData": "VXNlckRhdGE=",
      "osProfile": {
        "computerNamePrefix": "TestVM",
        "adminUsername": "TestUserName",
        "windowsConfiguration": {
          "provisionVMAgent": true,
          "timeZone": "Dateline Standard Time"
        }
      },
      "storageProfile": {
        "osDisk": {
          "createOption": "FromImage",
          "caching": "ReadOnly"
        },
        "imageReference": {
          "publisher": "publisher",
          "offer": "offer",
          "sku": "sku",
          "version": "1.2.3"
        }
      },
      "networkProfile": {"networkInterfaceConfigurations":[{"name":"nicconfig1","properties":{"ipConfigurations":[{"name":"ip1","properties":{"subnet":{"id":"vmssSubnet0"}}}]}}]},
      "diagnosticsProfile": {
        "bootDiagnostics": {
          "enabled": true,
          "storageUri": "https://crputest.blob.core.windows.net"
        }
      }
    },
    "provisioningState": 0,
    "overprovision": false,
    "uniqueId": "00000000-0000-0000-0000-000000000000"
  }
}

استرداد بيانات المستخدم

يمكن للتطبيقات التي تعمل داخل الجهاز الظاهري استرداد بيانات المستخدم من نقطة نهاية IMDS. للحصول على التفاصيل، راجع عينة التعليمات البرمجية لـ IMDS هنا.

يمكن للعملاء استرداد القيمة الحالية لبيانات المستخدم عبر واجهة برمجة تطبيقات REST باستخدام $expand=userData endpoint (يمكن ترك نص الطلب فارغاً).

أجهزة ظاهرية فردية:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachines/{VMName}?$expand=userData"

مجموعة مقياس الجهاز الظاهري:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMSSName}?$expand=userData"

الجهاز الظاهري لمجموعة مقياس الجهاز الظاهري:

GET "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/virtualMachineScaleSets/{VMSSName}/virtualmachines/{vmss instance id}?$expand=userData"

تحديث بيانات المستخدم

باستخدام واجهة برمجة تطبيقات REST، يمكنك استخدام طلب PUT أو PATCH عادي لتحديث بيانات المستخدم. يتم تحديث بيانات المستخدم دون الحاجة إلى إيقاف الجهاز الظاهري أو إعادة تشغيله.

PUT "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/ virtualMachines/{VMName}

PATCH "/subscriptions/{guid}/resourceGroups/{RGName}/providers/Microsoft.Compute/ virtualMachines/{VMName}

يجب أن تحتوي VM.Properties في هذه الطلبات على حقل UserData المطلوب، كما يلي:

"properties": {
        "hardwareProfile": {
          "vmSize": "Standard_D1_v2"
        },
        "storageProfile": {
          "imageReference": {
            "sku": "2016-Datacenter",
            "publisher": "MicrosoftWindowsServer",
            "version": "latest",
            "offer": "WindowsServer"
          },
          "osDisk": {
            "caching": "ReadWrite",
            "managedDisk": {
              "storageAccountType": "StandardSSD_LRS"
            },
            "name": "vmOSdisk",
            "createOption": "FromImage"
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "/subscriptions/{subscription-id}/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/{existing-nic-name}",
              "properties": {
                "primary": true
              }
            }
          ]
        },
        "osProfile": {
          "adminUsername": "{your-username}",
          "computerName": "{vm-name}",
          "adminPassword": "{your-password}"
        },
        "diagnosticsProfile": {
          "bootDiagnostics": {
            "storageUri": "http://{existing-storage-account-name}.blob.core.windows.net",
            "enabled": true
          }
        },
        "userData": "U29tZSBDdXN0b20gRGF0YQ=="
      } 

ملاحظة

إذا قمت بتمرير سلسلة فارغة ل "userData" في هذه الحالة، يتم حذف بيانات المستخدم.

بيانات المستخدم والبيانات المخصصة

تستمر البيانات المخصصة في العمل بنفس الطريقة التي تعمل بها اليوم. لاحظ أنه لا يمكنك استرداد البيانات المخصصة من IMDS.

إضافة بيانات المستخدم إلى جهاز ظاهري موجود

إذا كان لديك جهاز ظاهري/VMSS موجود بدون بيانات مستخدم، فلا يزال بإمكانك إضافة بيانات المستخدم إلى هذا الجهاز الظاهري باستخدام أوامر التحديث، كما هو موضح في قسم "تحديث بيانات المستخدم". تأكد من الترقية إلى أحدث إصدار من واجهة برمجة تطبيقات Azure Resource Manger.

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

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