هيكل مكون جميل في سحابة Microsoft Azure

تعد 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" ### SSD = "Premium_LRS"; HDD = "Standard_LRS" storage_type="Premium_LRS" 

إنشاء مجموعة موارد:

 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 . افتح البرنامج النصي في أي محرر نصوص ، وادفع في بياناتك ويمكنك نشر أجهزة افتراضية بأسماء جميلة بالضغط على بعض المفاتيح.

Source: https://habr.com/ru/post/ar422211/


All Articles