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

لذا ، دعنا نجرب في Microsoft Azure لإنشاء جهاز افتراضي باسم server-01 والإعدادات الافتراضية. يوضح الشكل التالي الفوضى التي لدينا في النهاية.

إذا كان كل شيء يناسبك هنا ، فلا يمكنك قراءة المزيد. حسنًا ، إذا كنت مثلي ، مثل الترتيب الإجمالي في الإدارة ، فأنا أخاطر باقتراح نظام تسمية جميل لمكونات Microsoft Azure ، والذي كنت أستخدمه خلال السنوات القليلة الماضية.
يتيح لك هذا النظام إحضار النظام بأكمله إلى النموذج الموحد التالي:
{مجموعة المكون} __ {العنصر}{المكون} - {Number} __ {Element} - {Number}لذا ، دعنا نبدأ ...
أضف مجموعة مواردResource groups >> +Add Resource group name: servers
إنشاء شبكة افتراضية وشبكة فرعيةبشكل افتراضي ، يقوم Microsoft Azure بتوسيع الشبكة الفرعية عبر الشبكة الافتراضية بالكامل. هذا ليس مناسبًا جدًا ، لأنه إذا لزم الأمر سيكون من الصعب جدًا إضافة شبكات فرعية جديدة (على سبيل المثال ، شبكة فرعية VPN). لذلك ، عادة ما أعطي الثمانيتين الأخيرتين (القناع 16) للشبكة الافتراضية ، وللشبكة الفرعية - الثماني الأخيرة (القناع 24).
Virtual networks >> +Add Name: servers__network Address space: 10.0.0.0/16 Subnet: Name: default Address range: 10.0.0.0/24 Network interfaces: +Add Name: server-01__ip-private-01 Virtual network: servers__network Subnet: default Private IP address: Static/10.0.0.101
يستخدم Azure العناوين القليلة الأولى للشبكة الفرعية (10.0.0.01 ... 03) لتناسب احتياجاته ، لذلك قمت بنقل عناوين العمل إلى نطاق أعلى من 100. وبالتالي ، سيتوافق رقم الخادم مع الرقم الأخير من عنوان IP: server-01 = 10.0.0.101 ، server-02 = 10.0.0.102 ، server-43 = 10.0.0.143 ، إلخ.
العنوان الخارجي ومجموعة الأمانإذا كان من المخطط أن ينظر الجهاز الظاهري إلى الخارج ، فقم بإنشاء عنوان عام ومجموعة أمان.
Public IP addresses: +Add Name: server-01__ip-public-01 IP address assignment: Static Public IP addresses >> server-01__ip-public-01 >> Associate: Resource type >> Network interface: server-01__ip-private-01
في Azure ، يمكن إنشاء مجموعة أمان لكل من الجهاز الفردي والشبكة الفرعية ككل. اعتمادًا على المتغير ، ستختلف الأسماء.
Network security groups >> +Add
خيار مجموعة الأمان لمضيف واحد:
Name: server-01__security-group Network interfaces >> +Associate: server-01__ip-private-01
مجموعة الأمان للشبكة الفرعية:
Name: servers__network-security-group Subnets >> +Associate: Virtual network: servers__network Subnet: default
القيادةلسوء الحظ ، لا يسمح لك Azure بإنشاء أقراص بأسماء عشوائية ، لذلك ستحتاج هنا إلى حل بديل من خلال إنشاء جهاز افتراضي وهمي ، ثم استخدام قرصه فارغًا لإنشاء جهاز عامل.
إنشاء آلة افتراضية وهمية Virtual machines >> +Add Basics: Name: server-01-raw VM disk type: Premium SSD Username: your-name SSH public key: your-public-key Settings: Availability set: None Network: servers__network Subnet: default Public IP address: None Select public inbound ports: No public inbound ports Monitoring: Disabled
بعد إنشاء آلة وهمية ، يمكنك إزالة جميع المكونات (بما في ذلك الجهاز نفسه) المميزة باللاحق الخام باستثناء القرص.
نقوم بإزالة لقطة من القرص Disks >> disk server-01-raw_OsDisk_... >> +Create snapshot Name: server-01-raw-snapshot
بناءً على اللقطة ، قم بإنشاء قرص عمل جديد:
Disks >> +Add Name: server-01__disk-01 Source type: Snapshot Source snapshot: server-01-raw-snapshot
ننشر آلة العمل على أساس قرص جديد Disks >> server-01__disk-01 >> + Create VM Basics: Name: server-01 Settings: Availability set: None Network: servers__network Subnet: default Public IP address: None Select public inbound ports: No public inbound ports Monitoring: Disabled
واجهات الشبكةإغفال آخر لـ Microsoft - عند إنشاء جهاز افتراضي من قرص في واجهة المستخدم الرسومية ، لا توجد طريقة لإرفاق واجهة الشبكة التي تم إنشاؤها مسبقًا بها. لذلك ، نقوم بإيقاف الجهاز ، وحذف واجهة الشبكة وإرفاق الواجهة التي أنشأناها أعلاه.
Virtual machines >> VM server-01 >> Stop Virtual machines >> VM server-01 >> Networking: Attach network interface >> server-01__ip-private-01 Detach network interface >> server-01982
التخلص من القمامةاللمسة الأخيرة هي إزالة الحطام المتبقي من التلاعبات التي قمنا بها.
حذف:
خادم الشبكة 01982 ،
مجموعة الأمان server-01-nsg ،
القيادة من آلة وهمية: server-01-raw_OsDisk ...
snapshot server-01-raw-snapshot
ها هي النتيجة:

CLI
ربما لاحظت بالفعل أن جلب الجمال إلى Azure مهمة مزعجة إلى حد ما. ولكن يتم تبسيط كل شيء بشكل كبير إذا كنت تستخدم سطر الأوامر (CLI). يوفر Microsoft Azure واجهة سطر الأوامر (CLI) لكل من وحدة تحكم PowerShell و Linux الأصلية. سيتم وصف الخيار الأخير أدناه.
تسجيل الدخول:
az login -u AzureUserName
احصل على قائمة بالمواقع المتاحة
az account list-locations
احصل على قائمة بأحجام الأجهزة الافتراضية:
az vm list-sizes --location locationName
قمنا بتعيين قائمة معلمات الشبكة والجهاز الظاهري (في جميع الأوامر اللاحقة سيتم إرسال هذه البيانات عبر المتغيرات):
location="westindia" resource_group="servers" virt_network="servers__network" virt_network_range="10.0.0.0/16" subnet="default" subnet_range="10.0.0.0/24" user="username" ssh_key="ssh-public-key" name="server-01" image="UbuntuLTS" ip="10.0.0.101" interface_suffix="__ip-private-01" disk_suffix="__disk-01" size="Standard_B1s"
إنشاء مجموعة موارد:
az group create --location ${location} --name ${resource_group}
إنشاء شبكة افتراضية وشبكة فرعية:
az network vnet create --location ${location} --resource-group ${resource_group} --name ${virt_network} --address-prefixes ${virt_network_range}
az network vnet subnet create --resource-group ${resource_group} --vnet-name ${virt_network} --name ${subnet} --address-prefix ${subnet_range}
إنشاء واجهة شبكة:
az network nic create --resource-group ${resource_group} --location ${location} --name ${name}${interface_suffix} --subnet ${subnet} --vnet-name ${virt_network} --private-ip-address ${ip}
إنشاء آلة افتراضية وهمية:
az vm create --name ${name} --admin-username ${user} --ssh-key-value "${ssh_key}" --resource-group ${resource_group} --location ${location} --image ${image} --size ${size} --nics ${name}${interface_suffix} --storage-sku ${storage_type}
تطبيع القرص:
az vm stop --name ${name} --resource-group ${resource_group} disk_old=$(az vm get-instance-view --name ${name} --resource-group ${resource_group} | grep -o "${name}_OsDisk[0-9a-z\_]\{1,\}" | head -1) az disk create --location ${location} --resource-group ${resource_group} --name ${name}${disk_suffix} --source ${disk_old} --sku ${storage_type}
نقوم بإزالة آلة وهمية ونشر آلة العمل:
az vm delete --name ${name} --resource-group ${resource_group} --yes az vm create --name ${name} --resource-group ${resource_group} --location ${location} --size ${size} --nics ${name}${interface_suffix} --attach-os-disk ${name}${disk_suffix} --os-type Linux ${availability_set_as_option}
احذف القرص الوهمي:
az disk delete --resource-group ${resource_group} --name ${disk_old} --yes
الأتمتة
لأتمتة عملية نشر الأجهزة الافتراضية في سحابة Microsoft Azure ، قمت بدمج جميع الأوامر المذكورة أعلاه في برنامج نصي bash واحد azure-create-vm.sh ، والذي يمكن أخذه من
Github . افتح البرنامج النصي في أي محرر نصوص ، وادفع في بياناتك ويمكنك نشر أجهزة افتراضية بأسماء جميلة بالضغط على بعض المفاتيح.