Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunun için geçerlidir:
IoT Edge 1.6
Önemli
IoT Edge 1.6 LTS desteklenen sürümdür. IoT Edge 1.5 LTS desteği 10 Kasım 2026'da sona erer; IoT Edge 1.4 LTS, 12 Kasım 2024'te ömrünün sonuna ulaştı. Önceki bir sürümü kullanıyorsanız bkz. Update IoT Edge.
Azure IoT Edge otomatik dağıtım oluşturmak ve aynı anda birçok cihaz için dağıtımları yönetmek için Azure CLI kullanın. IoT Edge için otomatik dağıtımlar, Azure IoT Hub device management özelliğinin bir parçasıdır. Dağıtımlar birden çok cihaza birden çok modül dağıtmanıza, modüllerin durumunu ve durumunu izlemenize ve gerektiğinde değişiklik yapmanıza olanak tanır.
Bu makalede, Azure CLI ve IoT uzantısını ayarlarsınız. Ardından modülleri bir dizi IoT Edge cihazına dağıtır ve CLI komutlarını kullanarak ilerleme durumunu izlersiniz.
Önkoşullar
Azure aboneliğinizde bir IoT hub.
Bir veya daha fazla IoT Edge cihazı.
Ayarlanmış bir IoT Edge cihazınız yoksa Azure bir sanal makinede bir cihaz oluşturabilirsiniz. Şu hızlı başlangıç makalelerinden birinde yer alan adımları izleyin: Virtual Linux cihazı oluşturma veya Virtual Windows cihazı oluşturma.
Ortamınızdaki Azure CLI. Azure CLI sürümünüz 2.0.70 veya üzeri olmalıdır. Denetlemek için kullanın
az --version. Bu sürüm, az uzantı komutlarını destekler ve Knack komut çerçevesini kullanıma sunar.
Dağıtım manifestosunu yapılandırın
Dağıtım bildirimi, dağıtılacak modülleri, modüller arasında verilerin nasıl aktığını ve modül ikizlerinin istenen özelliklerini açıklayan bir JSON belgesidir. Daha fazla bilgi için bkz. IoT Edge'da modülleri dağıtmayı ve yolları oluşturmayı öğrenin.
Azure CLI kullanarak modülleri dağıtmak için dağıtım bildirimini yerel olarak .json dosyası olarak kaydedin. Yapılandırmayı cihazınıza uygulamak için komutunu çalıştırdığınızda sonraki bölümde dosya yolunu kullanacaksınız.
Aşağıda örnek olarak tek modül içeren temel bir dağıtım bildirimi verilmiştir.
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.1",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.6",
"createOptions": "{}"
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.6",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
}
}
},
"modules": {
"SimulatedTemperatureSensor": {
"version": "1.6",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.6",
"createOptions": "{}"
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.1",
"routes": {
"upstream": "FROM /messages/* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Not
Bu örnek dağıtım bildirimi, IoT Edge aracısı ve hub'ı için şema sürümü 1.1'i kullanır. Şema sürümü 1.1, IoT Edge sürüm 1.0.10 ile birlikte yayınlanır. Modül başlangıç sırası ve rota önceliklendirmesi gibi özellikleri kullanmanıza olanak tanır.
Katmanlı dağıtım
Katmanlı dağıtımlar, üst üste yığabileceğiniz bir otomatik dağıtım türüdür. Katmanlı dağıtımlar hakkında daha fazla bilgi için IoT Edge otomatik dağıtımlarını tek cihazlar veya genel ölçekte anlamak konusuna bakın.
Yalnızca birkaç farkla, herhangi bir otomatik dağıtım gibi Azure CLI katmanlı dağıtımlar oluşturabilir ve yönetebilirsiniz. Katmanlı dağıtım oluşturduktan sonra, Azure CLI tüm dağıtımlarda olduğu gibi katmanlı dağıtımlar için de çalışır. Katmanlı dağıtım oluşturmak için create komutuna --layered bayrağını ekleyin.
İkinci fark, dağıtım bildirimini nasıl oluşturduğunuzdur. Standart otomatik dağıtımlar sistem çalışma zamanı modüllerini ve tüm kullanıcı modüllerini içermelidir. Katmanlı dağıtımlar yalnızca kullanıcı modüllerini içerebilir. Katmanlı dağıtımlar, sistem çalışma zamanı modülleri gibi her IoT Edge cihazın gerekli bileşenlerini sağlamak için cihazda standart bir otomatik dağıtıma da ihtiyaç duyar.
Aşağıda örnek olarak bir modül içeren temel katmanlı dağıtım bildirimi verilmiştir.
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired.modules.SimulatedTemperatureSensor": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.6",
"createOptions": "{}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.6"
}
},
"$edgeHub": {
"properties.desired.routes.upstream": "FROM /messages/* INTO $upstream"
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Not
Bu katmanlı dağıtım bildirimi, standart dağıtım bildiriminden biraz farklı bir biçime sahiptir. Çalışma zamanı modüllerinin istenen özellikleri daraltılır ve nokta gösterimi kullanılır. Bu biçimlendirme, Azure portalının katmanlı dağıtımı tanıması için gereklidir. Örneğin:
properties.desired.modules.<module_name>properties.desired.routes.<route_name>
Önceki örnekte bir modülün katmanlı dağıtım ayarı properties.desired gösterilmektedir. Bu katmanlı dağıtım, aynı modülün zaten yüklü olduğu bir cihazı hedefliyorsa, var olan istenen özelliklerin üzerine yazılır. İstenen özelliklerin üzerine yazmak yerine güncelleştirmek için yeni bir alt bölüm tanımlayın. Örneğin:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"SendData": true,
"SendInterval": 5
}
}
Aynı ifadeyi aşağıdaki söz dizimiyle de ifade edebilirsiniz:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties.SendData" : true,
"properties.desired.layeredProperties.SendInterval": 5
}
Not
Şu anda tüm katmanlı dağıtımların geçerli olması için bir edgeAgent nesne içermesi gerekir. Katmanlı dağıtım yalnızca modül özelliklerini güncelleştirse bile boş bir nesne ekleyin. Örneğin: "$edgeAgent":{}. Boş edgeAgent nesne içeren katmanlı dağıtım, modül ikizinde hedeflenmiş olarak gösterilir, edgeAgent.
Katmanlı dağıtım oluşturmak için:
- Azure CLI oluştur komutuna
--layeredbayrağını ekleyin. - Sistem modüllerini eklemeyin.
- "
$edgeAgentve$edgeHubaltında nokta notasyonunu kullanın."
Katmanlı dağıtımlarda modül ikizlerini yapılandırma hakkında daha fazla bilgi için bkz. Katmanlı dağıtım.
Etiketleri kullanarak cihazları tanımlama
Dağıtım oluşturmadan önce, hangi cihazları etkilemek istediğinizi belirtmeniz gerekir. Azure IoT Edge cihaz ikizinde tags kullanarak cihazları tanımlar.
Her cihazda çözümünüz için anlamlı olan herhangi bir şekilde tanımladığınız birden çok etiket bulunabilir. Örneğin, akıllı binaların yerleşkesini yönetiyorsanız bir cihaza aşağıdaki etiketleri ekleyebilirsiniz:
"tags":{
"location":{
"building": "20",
"floor": "2"
},
"roomtype": "conference",
"environment": "prod"
}
Cihaz ikizleri ve etiketler hakkında daha fazla bilgi için bkz. IoT Hub cihaz ikizlerini anlama ve kullanma.
Dağıtım oluşturun
Dağıtım bildirimini ve diğer parametreleri içeren bir dağıtım oluşturarak modülleri hedef cihazlara dağıtın.
Dağıtım oluşturmak için az iot edge deployment create komutunu çalıştırın:
az iot edge deployment create --deployment-id <deployment-id> --hub-name <hub-name> --content <file-path> --labels "<labels>" --target-condition "<target-query>" --priority <priority>
Katmanlı bir dağıtım oluşturmak için --layered bayrağını ekleyin.
az iot edge deployment create komutu aşağıdaki parametreleri kullanır:
- --layered: Dağıtımı katmanlı dağıtım olarak tanımlayan isteğe bağlı bayrak.
-
--deployment-id: IoT hub'ında oluşturulan dağıtımın adı. En fazla 128 küçük harf içeren benzersiz bir ad kullanın. Boşluklardan ve şu geçersiz karakterlerden kaçının:
& ^ [ ] { } \ | " < > /. Bu parametre zorunludur. - --content: Dağıtım bildirimi JSON dosyasının dosya yolu. Bu parametre zorunludur.
-
--hub-name: Dağıtımın oluşturulduğu IoT hub'ının adı. Hub geçerli abonelikte olmalıdır. komutunu çalıştırarak
az account set -s <subscription-name>geçerli aboneliğinizi değiştirin. -
--labels: Dağıtımları açıklayan ve izlemenize yardımcı olan ad/değer çiftleri. Etiketler, adlar ve değerler için JSON biçimlendirmesi kullanır. Örneğin:
{"HostPlatform":"Linux", "Version":"3.0.1"}. -
--target-condition: Bu dağıtımla hangi cihazların hedeflendiğini belirleyen koşul. Koşul, cihaz ikizi etiketlerini veya cihaz ikizi tarafından bildirilen özellikleri temel alır ve ifade formatıyla uyumlu olmalıdır. Örneğin:
tags.environment='test' and properties.reported.devicemodel='4000x'. Hedef koşulu belirtmezseniz, dağıtım hiçbir cihaza uygulanmaz. - --priority: Pozitif tamsayı. İki veya daha fazla dağıtım aynı cihazı hedeflediyse, en yüksek önceliğe sahip dağıtım uygulanır.
-
--metrics: Bir dağıtımın
edgeHubdurumunu izlemek için bildirilen özellikleri sorgulayan ölçümler. Ölçümler JSON girişini veya dosya yolunu kullanır. Örneğin:'{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.
Azure CLI ile bir dağıtımı izlemek için bkz. Monitor IoT Edge dağıtımları.
Not
Yeni bir IoT Edge dağıtımı oluşturduğunuzda, IoT Hub yeni yapılandırmayı işlemesi ve istenen yeni özellikleri hedeflenen cihazlara göndermesi 5 dakika kadar sürebilir.
Dağıtımı değiştirme
Bir dağıtımı değiştirdiğinizde, değişiklikler hemen tüm hedeflenen cihazlara çoğaltılır.
Hedef koşulu güncelleştirirseniz aşağıdaki değişiklikler gerçekleşir:
- Bir cihaz eski hedef koşulu karşılamadıysa ancak yeni hedef koşulu karşılıyorsa ve bu dağıtım bu cihaz için en yüksek öncelikse, bu dağıtım cihaza uygulanır.
- Şu anda bu dağıtımı çalıştıran bir cihaz artık hedef koşulu karşılamıyorsa, bu dağıtımı kaldırır ve bir sonraki en yüksek öncelikli dağıtımı alır.
- Şu anda bu dağıtımı çalıştıran bir cihaz artık hedef koşulu karşılamıyorsa ve başka bir dağıtımın hedef koşulunu karşılamıyorsa cihazda herhangi bir değişiklik olmaz. Cihaz mevcut modüllerini mevcut durumunda çalıştırmaya devam eder ancak artık bu dağıtımın bir parçası olarak yönetilmemektedir. Cihaz başka bir dağıtımın hedef koşulunu karşıladıktan sonra bu dağıtımı kaldırır ve yenisini alır.
Dağıtım bildiriminde tanımlanan modülleri ve yolları içeren bir dağıtımın içeriğini güncelleştiremezsiniz. Bir dağıtımın içeriğini güncelleştirmek için, daha yüksek önceliğe sahip aynı cihazları hedefleyen yeni bir dağıtım oluşturun. Mevcut modülün hedef koşul, etiketler, ölçümler ve öncelik gibi belirli özelliklerini değiştirebilirsiniz.
Dağıtımı güncelleştirmek için az iot edge deployment update komutunu kullanın:
az iot edge deployment update --deployment-id <deployment-id> --hub-name <hub-name> --set <property1.property2='value'>
Dağıtım güncelleştirme komutu aşağıdaki parametreleri kullanır:
- --deployment-id: IoT hub'ında dağıtımın adı.
-
--hub-name: Dağıtımın bulunduğu IoT hub'ının adı. Hub geçerli abonelikte olmalıdır. Başka bir aboneliğe geçmek için komutunu çalıştırın
az account set -s <subscription-name>. -
--set: Dağıtımdaki bir özelliği değiştirin. Aşağıdaki özellikleri değiştirebilirsiniz:
-
targetCondition(örneğin,targetCondition=tags.location.state='Oregon') labelspriority
-
- --add: Dağıtıma hedef koşullar veya etiketler de dahil olmak üzere yeni bir özellik ekleyin.
- --remove: Hedef koşullar veya etiketler de dahil olmak üzere mevcut bir özelliği kaldırın.
Dağıtımı silme
Bir dağıtımı sildiğinizde, cihazlar bir sonraki en yüksek öncelikli dağıtımlarını kullanır. Cihazlar başka bir dağıtımın hedef koşulunu karşılamıyorsa, dağıtımı sildiğinizde modüller kaldırılmaz.
Dağıtımı silmek için az iot edge deployment delete komutunu çalıştırın:
az iot edge deployment delete --deployment-id <deployment-id> --hub-name <hub-name>
deployment delete komutu aşağıdaki parametreleri kullanır:
- --deployment-id. IoT hub'ında bulunan dağıtımın adı.
-
--hub-name. Dağıtımın bulunduğu IoT hub'ının adı. Hub geçerli abonelikte olmalıdır. komutunu
az account set -s [subscription name]kullanarak istediğiniz aboneliğe geçin.
Sonraki adımlar
Modülleri IoT Edge cihazlarına dağıtma hakkında daha fazla bilgi alın.