نظرة عامة على تكوين الحالة المطلوبة للمهندسين
هذا المستند مخصص لفرق المطورين والعمليات لفهم فوائد تكوين الحالة المطلوبة ل PowerShell (DSC). للحصول على عرض عالي المستوى للقيمة التي يوفرها DSC، يرجى الاطلاع على نظرة عامة على تكوين الحالة المطلوبة لصانعي القرار
فوائد تكوين الحالة المطلوبة
DSC موجود ل:
- تقليل تعقيد البرمجة النصية في Windows
- زيادة سرعة التكرار
أصبح مفهوم "التوزيع المستمر" أكثر أهمية. يعني التوزيع المستمر القدرة على النشر بشكل متكرر، وربما عدة مرات في اليوم. لا يتمثل الغرض من عمليات التوزيع هذه في إصلاح شيء ما ولكن نشر شيء ما بسرعة. من خلال الحصول على ميزات جديدة من خلال التطوير في العمل بسلاسة وموثوقية قدر الإمكان، فإنك تقلل من الوقت إلى القيمة لمنطق الأعمال الجديد.
يشير الانتقال نحو حوسبة السحابة إلى حل توزيع يستخدم نموذج قالب "تعريفي"، حيث يتم الإعلان عن بيئة الحالة النهائية كنص ونشرها على محرك التوزيع. تسمح تقنية التوزيع هذه بالتغيير السريع، على نطاق واسع، مع المرونة ضد تهديد الفشل لأنه في أي وقت يمكن تكرار التوزيع باستمرار لضمان حالة النهاية. يعد إنشاء الأدوات والخدمات التي تدعم هذا النمط من العمليات من خلال التشغيل التلقائي استجابة لهذه التغييرات.
DSC هو نظام أساسي يوفر النشر والتكوين والتوافق التعريفي وغير المتكرر (القابل للتكرار). يمكنك النظام الأساسي DSC من التأكد من أن مكونات مركز البيانات لديك لديها التكوين الصحيح، ما يتجنب الأخطاء ويمنع فشل التوزيع المكلف. من خلال التعامل مع تكوينات DSC كجزء من التعليمات البرمجية للتطبيق، تمكن DSC النشر المستمر. يجب تحديث تكوين DSC كجزء من التطبيق، ما يضمن أن المعرفة اللازمة لنشر التطبيق محدثة دائما وجاهزة للاستخدام.
"لدي PowerShell، لماذا أحتاج إلى تكوين الحالة المطلوبة؟"
تفصل تكوينات DSC الهدف، أو "ما أريد القيام به"، عن التنفيذ، أو "كيف أريد القيام بذلك." وهذا يعني أن منطق التنفيذ مضمن داخل الموارد. لا يتعين على المستخدمين معرفة كيفية تنفيذ ميزة أو توزيعها عند توفر مورد DSC لتلك الميزة. يسمح هذا للمستخدم بالتركيز على بنية توزيعه.
على سبيل المثال، يجب أن تبدو البرامج النصية PowerShell كما يلي:
# Create a share in Windows Server 8
New-SmbShare -Name MyShare -Path C:\Demo\Temp -FullAccess Alice -ReadAccess Bob
هذا البرنامج النصي بسيط ومفهوم ومباشر. ومع ذلك، إذا حاولت وضع هذا البرنامج النصي في الإنتاج، فست واجهت العديد من المشكلات. ماذا يحدث إذا تم تشغيل هذا البرنامج النصي مرتين على التوالي؟ ماذا يحدث إذا كان لدى Bob حق الوصول الكامل إلى المشاركة مسبقا؟
للتعويض عن هذه المشكلات، سيبدو الإصدار "الحقيقي" من البرنامج النصي أقرب إلى شيء مثل:
# But actually creating a share in an idempotent way would be
$shareExists = $false
$smbShare = Get-SmbShare -Name $Name -ErrorAction SilentlyContinue
if($smbShare -ne $null)
{
Write-Verbose -Message "Share with name $Name exists"
$shareExists = $true
}
if ($shareExists -eq $false)
{
Write-Verbose "Creating share $Name to ensure it is Present"
New-SmbShare @PSBoundParameters
}
else
{
# Need to call either Set-SmbShare or *ShareAccess cmdlets
if ($PSBoundParameters.ContainsKey("ChangeAccess"))
{
#...etc, etc, etc
}
}
هذا البرنامج النصي أكثر تعقيدا، مع الكثير من المنطق ومعالجة الأخطاء. البرنامج النصي أكثر تعقيدا لأنك لم تعد تذكر ما تريد القيام به، ولكن كيفية القيام بذلك.
يسمح لك DSC بقول ما تريد القيام به، ويتم تجريد المنطق الأساسي بعيدا.
# A configuration is a special kind of PowerShell function
Configuration Sample_Share
{
Import-DSCResource -ModuleName xSmbShare
# Nodes are the endpoint we wish to configure
# A Configuration block can have zero or more Node blocks
Node $NodeName
{
# Next, specify one or more resource blocks
# Resources are simply PowerShell modules that
# implement the logic of "how" to execute a task
xSmbShare MySMBShare
{
Ensure = "Present"
Name = "MyShare"
Path = "C:\Demo\Temp"
ReadAccess = "Bob"
FullAccess = "Alice"
Description = "This is an updated description for this share"
}
}
}
#Run the function to compile the configuration
Sample_Share
#Pass the configuration to the nodes we defined and configure them
Start-DscConfiguration Sample_Share
تم تنسيق هذا البرنامج النصي بشكل نظيف ومباشر للقراءة. لا تزال مسارات المنطق ومعالجة الأخطاء موجودة في تنفيذ المورد ، ولكنها غير مرئية لمؤلف البرنامج النصي.
فصل البيئة عن البنية
النمط الشائع في DevOps هو أن يكون لديك بيئات متعددة للتوزيع. على سبيل المثال، قد تكون هناك بيئة "dev" تستخدم لنموذج أولي للتعليمات البرمجية الجديدة بسرعة. تنتقل التعليمات البرمجية من بيئة "dev" إلى بيئة "اختبار"، حيث يتحقق الأشخاص الآخرون من الوظيفة الجديدة. وأخيرا، تنتقل التعليمات البرمجية إلى "prod"، أو بيئة إنتاج الموقع المباشر.
تستوعب تكوينات DSC مسار dev-test-prod هذا من خلال استخدام بيانات التكوين.
هذا يلخص أيضا الفرق بين بنية التكوين من العقد التي تتم إدارتها. على سبيل المثال، يمكنك تعريف تكوين يتطلب خادم SQL وخادم IIS وخادم من المستوى المتوسط. بغض النظر عن العقد التي تتلقى الأجزاء المختلفة من هذا التكوين، ستكون هذه العناصر الثلاثة موجودة دائما. يمكنك استخدام بيانات التكوين للإشارة إلى جميع العناصر الثلاثة نحو نفس الجهاز لبيئة التطوير، وفصل العناصر الثلاثة إلى ثلاثة أجهزة مختلفة لبيئة اختبار، وأخيرا نحو جميع خوادم الإنتاج الخاصة بك لبيئة prod. للنشر في البيئات المختلفة، يمكنك استدعاء Start-DscConfiguration
ببيانات التكوين الصحيحة للبيئة التي تريد استهدافها.