Kod olarak Azure İlkesi iş akışları tasarlama

Bulut İdaresi yolculuğunuza devam ettikçe, her ilke tanımını Azure portal veya çeşitli SDK'ler aracılığıyla el ile yönetmekten kurumsal ölçekte daha yönetilebilir ve yinelenebilir bir şeye geçiş yapmak zorunda kaldınız. Buluttaki büyük ölçekteki sistemleri yönetmeye yönelik baskın yaklaşımlardan ikisi:

  • Kod Olarak Altyapı: Ortamlarınızı tanımlayan içeriği, Azure Resource Manager şablonlarından (ARM şablonları) ve Azure İlkesi tanımlarından Azure Blueprints kaynak kodu olarak kullanma uygulaması.
  • DevOps: Son kullanıcılarımıza sürekli değer teslimi sağlamak için kişilerin, süreçlerin ve ürünlerin birlelesi.

Azure İlkesi olarak kod, bu fikirlerin birleşimidir. Temel olarak, ilke tanımlarınızı kaynak denetiminde ve her değişiklik yapıldı mı, bu değişikliği test ve doğrulamada tut. Ancak bu, ilkelerin Kod Olarak Altyapıya veya koda dahil DevOps.

Doğrulama adımı ayrıca diğer sürekli tümleştirme veya sürekli dağıtım iş akışlarının bir bileşeni de olabilir. Örnek olarak bir uygulama ortamı veya sanal altyapı dağıtabilirsiniz. Uygulama Azure İlkesi işlemleri, derleme ve dağıtım sürecinin erken bir bileşeni olarak doğrulanmasıyla, uygulama ve operasyon ekipleri, değişikliklerinin çok geç olmadan ve üretimde dağıtım yapmaya çalışmadan önce uyumlu olup değildir.

Tanımlar ve temel bilgiler

Kod iş akışı olarak Azure İlkesi önce aşağıdaki tanımları ve örnekleri gözden geçirebilirsiniz:

Dosya adları ilke veya girişim tanımının bölümleriyle hizalanır:

  • policy(set).json - Tanımın tamamı
  • policy(set).parameters.json - properties.parameters Tanımın bölümü
  • policy.rules.json - properties.policyRule Tanımın bölümü
  • policyset.definitions.json - properties.policyDefinitions Tanımın bölümü

Bu dosya biçimlerine örnek olarak Azure İlkesi GitHub kullanılabilir:

İş akışına genel bakış

Kod şu diyagrama benzer Azure İlkesi önerilen genel iş akışı:

Oluştur'Azure İlkesi Testten Dağıtıma Kod iş akışı kutuları olarak gösterilen diyagram.

Kodun Kod iş Azure İlkesi olarak gösterildiği diyagram. Oluşturma, ilke ve girişim tanımlarının oluşturulmasını kapsar. Test, zorlama modu devre dışıyken atamayı kapsar. Uyumluluk durumu için bir ağ geçidi denetimi ve ardından atamalara M S I izinleri verilmesi ve kaynakları düzeltmesi gerekir. Dağıtma, zorlama modu etkinleştirilmiş olarak atamanın güncelleştirilişlerini kapsar.

İlke tanımlarını oluşturma ve güncelleştirme

İlke tanımları JSON kullanılarak oluşturulur ve kaynak denetiminde depolanır. Her ilkenin, aynı klasörde depolanmış parametreler, kurallar ve ortam parametreleri gibi kendi dosya kümesi vardır. Aşağıdaki yapı, ilke tanımlarınızı kaynak denetiminde tutmanın önerilen bir yolu olabilir.

.
|
|- policies/  ________________________ # Root folder for policy resources
|  |- policy1/  ______________________ # Subfolder for a policy
|     |- policy.json _________________ # Policy definition
|     |- policy.parameters.json ______ # Policy definition of parameters
|     |- policy.rules.json ___________ # Policy rule
|     |- assign.<name1>.json _________ # Assignment 1 for this policy definition
|     |- assign.<name2>.json _________ # Assignment 2 for this policy definition
|  |- policy2/  ______________________ # Subfolder for a policy
|     |- policy.json _________________ # Policy definition
|     |- policy.parameters.json ______ # Policy definition of parameters
|     |- policy.rules.json ___________ # Policy rule
|     |- assign.<name1>.json _________ # Assignment 1 for this policy definition
|     |- assign.<name2>.json _________ # Assignment 2 for this policy definition
|

Yeni bir ilke ekleniyorsa veya mevcut bir ilke güncelleştirildiğinde, iş akışının Azure'da ilke tanımını otomatik olarak güncelleştirmesi gerekir. Yeni veya güncelleştirilmiş ilke tanımının testi sonraki bir adımda gelir.

Ayrıca, mevcut tanımlarınızı Azure İlkesi kaynak kodu yönetim ortamına almak için Kaynak kaynaklarını dışarı aktarma'GitHub.

Girişim tanımlarını oluşturma ve güncelleştirme

Benzer şekilde, girişimler de kendi JSON dosyalarına ve aynı klasörde depolanmış ilgili dosyalara sahip olur. Girişim tanımı için ilke tanımının zaten mevcut olması gerekir, bu nedenle ilkenin kaynağı kaynak denetiminde güncelleştirilene ve ardından Azure'da güncelleştirilene kadar oluşturulamıyor veya güncelleştirilemez. Aşağıdaki yapı, girişim tanımlarınızı kaynak denetiminde tutmanın önerilen bir yolu olabilir:

.
|
|- initiatives/ ______________________ # Root folder for initiatives
|  |- init1/ _________________________ # Subfolder for an initiative
|     |- policyset.json ______________ # Initiative definition
|     |- policyset.definitions.json __ # Initiative list of policies
|     |- policyset.parameters.json ___ # Initiative definition of parameters
|     |- assign.<name1>.json _________ # Assignment 1 for this policy initiative
|     |- assign.<name2>.json _________ # Assignment 2 for this policy initiative
|
|  |- init2/ _________________________ # Subfolder for an initiative
|     |- policyset.json ______________ # Initiative definition
|     |- policyset.definitions.json __ # Initiative list of policies
|     |- policyset.parameters.json ___ # Initiative definition of parameters
|     |- assign.<name1>.json _________ # Assignment 1 for this policy initiative
|     |- assign.<name2>.json _________ # Assignment 2 for this policy initiative
|

İlke tanımları gibi, mevcut bir girişimi eklerken veya güncelleştirerek iş akışının da Azure'da girişim tanımını otomatik olarak güncelleştirmesi gerekir. Yeni veya güncelleştirilmiş girişim tanımının testi sonraki bir adımda gelir.

Güncelleştirilmiş tanımı test etmek ve doğrulamak

Otomasyon yeni oluşturduğunuz veya güncelleştiren ilke veya girişim tanımlarınızı aldıktan ve Azure'da nesne için güncelleştirme gerçekleştirdiğinde, yapılan değişiklikleri test etmek için zamanı geldi. İlke veya parçası olduğu girişimler, üretimden en uzak ortamdaki kaynaklara atanmalıdır. Bu ortam genellikle Dev ortamıdır.

Kaynak oluşturma ve güncelleştirmelerin engellenmesini engellemek, ancak mevcut kaynakların güncelleştirilmiş ilke tanımına uyumluluk için hala denetlenmiş olması için atama devre dışı zorlamamode'yu kullansın. enforcementMode ile bile, atama kapsamının bir kaynak grubu veya özellikle ilkeleri doğrulamaya yönelik bir abonelik olması önerilir.

Not

Zorlama modu yararlı olur ancak bir ilke tanımını çeşitli koşullar altında kapsamlı bir şekilde test etmek yerine kullanılamaz. İlke tanımı ile test REST API çağrıları, uyumlu ve uyumlu olmayan kaynaklar ve kaynakta eksik bir özellik gibi PUT PATCH uç durumlarını tanımlamanız gerekir.

Atama dağıtıldıktan sonra, yeni atamaya ilişkin uyumluluk verilerini almak için Azure İlkesi SDK'sını, Azure İlkesi Uyumluluk Taraması GitHub Eylem'iveya Azure Pipelines Güvenlik ve Uyumluluk Değerlendirmesi görevini kullanın. İlkeleri ve atamaları test etmek için kullanılan ortamın hem uyumlu hem de uyumlu olmayan kaynaklara sahip olması gerekir. Kod için iyi bir birim testi gibi, kaynakların beklendiği gibi olduğunu ve hatalı pozitif veya hatalı negatif olmadığını test etmek de istiyor. Yalnızca beklediğiniz gibi test ve doğrulamalar yaptısanız, ilkeden beklenmeyen ve tanımlanamayan bir etki olabilir. Daha fazla bilgi için bkz. Yeni bir Azure İlkesi..

Düzeltme görevlerini etkinleştirme

Atamanın doğrulanması beklentileri karşılarsa, sonraki adım düzeltmeyi doğrulamaktır. deployIfNotExists veya değişiklik kullanan ilkeler bir düzeltme görevine sızarak uyumlu olmayan bir durumdan kaynakları düzeltebilirsiniz.

Kaynakları düzeltmenin ilk adımı, ilke atamasını ilke tanımında tanımlanan rol atamasını vermektir. Bu rol ataması, ilke ataması yönetilen kimliğine kaynağı uyumlu hale gelecek gerekli değişiklikleri yapmak için yeterli hakları verir.

İlke ataması uygun haklara sahip olduktan sonra, uyumlu olmayan bir kaynak kümesine karşı bir düzeltme görevi tetiklemek için İlke SDK'sını kullanın. Devam etmeden önce bu düzeltmiş görevlere karşı üç test tamamlanır:

  • Düzeltme görevinin başarıyla tamamlanmış olduğunu doğrulama
  • İlke uyumluluk sonuçlarının beklendiği gibi güncelleştirilmiş olduğunu görmek için ilke değerlendirmesini çalıştırın
  • Özelliklerinin değiştiğini doğrulamak için doğrudan kaynaklara karşı bir ortam birimi testi çalıştırma

Hem güncelleştirilmiş ilke değerlendirme sonuçlarını hem de ortamı doğrudan test etmek, düzeltme görevlerinin bekleneni değiştirdiğini ve ilke tanımının uyumluluk değişikliğini beklendiği gibi gördüğünü onaylar.

Zorunlu atamalara güncelleştirme

Tüm doğrulama geçitleri tamamlandıktan sonra atamayı enforcementMode etkin olacak şekilde güncelleştirin. Bu değişikliğin başlangıçta üretimden uzak olan aynı ortamda olması önerilir. Bu ortam beklendiği gibi çalıştığı doğrulandıktan sonra, ilke üretim kaynaklarına dağıtılana kadar değişikliğin kapsamı bir sonraki ortamı içerecek şekilde ve bu şekilde devam eder.

Tümleşik değerlendirmeleri işleme

Kod olarak Azure İlkesi genel iş akışı, büyük ölçekte bir ortama ilke ve girişim geliştirme ve dağıtmaya yöneliktir. Ancak ilke değerlendirmesi, Azure'da uygulama dağıtma veya altyapı oluşturmak için ARM şablonları çalıştırma gibi kaynakları dağıtan veya oluşturan tüm iş akışları için dağıtım sürecinin bir parçası olması gerekir.

Bu gibi durumlarda, uygulama veya altyapı dağıtımı bir test aboneliğine veya kaynak grubuna yapıldıktan sonra, tüm mevcut ilkelerin ve girişimlerin doğrulanmasına yönelik kapsam denetimi için ilke değerlendirmesi yapılması gerekir. Bu tür bir ortamda enforcementMode devre dışı bırakılmış olarak yalıtılabilirler, ancak bir uygulamanın veya altyapı dağıtımının ilke tanımlarını erken ihlal ediyor olup oi olduğunu erken bilmek yararlı olur. Bu nedenle bu ilke değerlendirmesi, bu iş akışlarında bir adım olmalı ve uyumlu olmayan kaynaklar oluşturan dağıtımlar başarısız olmalıdır.

Gözden geçirme

Bu makale, kod olarak Azure İlkesi genel iş akışını ve ilke değerlendirmesinin diğer dağıtım iş akışlarının bir parçası olması gereken yeri kapsar. Bu iş akışı, tetikleyicilere dayalı betik adımlarını ve otomasyonu destekleyen herhangi bir ortamda kullanılabilir. İş akışında bu iş akışını kullanmaya GitHub öğretici için bkz. Öğretici: Azure İlkesi ile Kod GitHub.

Sonraki adımlar