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.
IoT cihaz yaşam döngünüzü yönetmek için GitHub Actions gibi otomasyon araçlarını kullanın. Bu öğreticide, Azure Cihaz Sağlama Hizmeti'ni (DPS) kullanarak bir cihazı IoT hub'ına bağlayan bir GitHub Actions iş akışı gösterilmektedir.
Bu eğitimde şunları öğreniyorsunuz:
- Kimlik doğrulama kimlik bilgilerini depo sırları olarak kaydedin.
- IoT Hub ve Cihaz Sağlama Hizmeti kaynaklarını sağlamak için bir iş akışı oluşturun.
- İş akışını çalıştırın ve IoT Hub'a bağlanırken simülasyon cihazını izleyin.
Önkoşullar
Azure aboneliği
Eğer bir Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.
Azure CLI
Azure Cloud Shell'de Bash ortamını kullanın.
Veya CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalıştırıyorsanız Azure CLI'yi bir Docker kapsayıcısında çalıştırmayı göz önünde bulundurun.
Yerel bir kurulum kullanıyorsanız, az login komutunu kullanarak Azure CLI'ye giriş yapın.
Yüklü olan sürümü ve bağımlı kütüphaneleri bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
Sahip olduğunuz depoya veya yönetici erişimine sahip olduğunuz depoya sahip bir GitHub hesabı. Daha fazla bilgi için bkz. GitHub'ı kullanmaya başlama.
1 - Depo (repository) gizli anahtarlar oluşturma
Sonraki bölümde tanımladığınız iş akışı, kaynakları oluşturmak ve yönetmek için Azure aboneliğinize erişim gerektirir. Bu bilgileri bulunabilecek korumasız bir dosyaya koymak istemezsiniz, bu nedenle bu bilgileri depolamak için depo gizli dizilerini kullanırız ancak yine de iş akışında ortam değişkeni olarak erişilebilir hale getiririz. Daha fazla bilgi için bkz. GitHub Actions'ta gizli bilgileri kullanma.
Yalnızca depo sahipleri ve yöneticileri depo gizli bilgilerini yönetebilir.
Hizmet sorumlusu oluşturma
Kişisel erişim kimlik bilgilerinizi sağlamak yerine, bir hizmet ilkesi oluşturur ve bu kimlik bilgilerini depo gizli bilgileri olarak ekleriz. Yeni bir hizmet sorumlusu oluşturmak için Azure CLI'yi kullanın. Daha fazla bilgi için bkz . Azure CLI ile Azure hizmet sorumlusu oluşturma.
Bir hizmet asıl kimliği oluşturmak için az ad sp create-for-rbac komutunu kullanarak belirli bir kaynak grubuna katkıda bulunan erişim sağlayın. ve
<SUBSCRIPTION_ID>öğesini kendi bilgilerinizle değiştirin<RESOURCE_GROUP_NAME>.Bu komut, abonelikte sahip veya kullanıcı erişim yöneticisi rolleri gerektirir.
az ad sp create-for-rbac --name github-actions-sp --role contributor --scopes /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>Sonraki bölümde kullanmak üzere hizmet sorumlusu oluşturma komutunun çıktısından aşağıdaki öğeleri kopyalayın:
- clientId.
- clientSecret. Bu değer, yeniden erişemediğiniz hizmet sorumlusu için oluşturulan bir paroladır.
- TenantId.
Hizmet sorumlusuna iki erişim rolü daha atamak için az role assignment create komutunu kullanın: Cihaz Sağlama Hizmeti Veri Katkıda Bulunanı ve IoT Hub Veri Katkıda Bulunanı. değerini, önceki komutun çıkışından kopyaladığınız
<SP_CLIENT_ID>değeriyle değiştirin.az role assignment create --assignee "<SP_CLIENT_ID>" --role "Device Provisioning Service Data Contributor" --resource-group "<RESOURCE_GROUP_NAME>"az role assignment create --assignee "<SP_CLIENT_ID>" --role "IoT Hub Data Contributor" --resource-group "<RESOURCE_GROUP_NAME>"
Hizmet sorumlusu kimlik bilgilerini gizli olarak kaydetme
GitHub.com'da deponuzun Ayarlar bölümüne gidin.
Gezinme menüsünden Gizli ve ardından Eylemler seçeneğini seçin.
Yeni depo gizli anahtarını seçin.
Hizmet ilkesi kimliğiniz için bir gizli anahtar oluşturun.
-
İsim:
APP_ID - Gizli: Hizmet sorumlusu oluşturma komutunun çıktısından kopyaladığınız clientId'yi yapıştırın.
-
İsim:
Gizli dizi ekle'yi ve ardından yeni depo gizli dizisi'ni seçerek ikinci bir gizli dizi ekleyin.
Hizmet sorumlusu parolanız için bir gizli anahtar oluşturun.
-
İsim:
SECRET - Gizli: Hizmet sorumlusu oluşturma komutunun çıktısından kopyaladığınız clientSecret'i yapıştırın.
-
İsim:
Gizli ekle'yi seçin, ardından son sırrı eklemek için Yeni depo sırrı seçin.
Azure kiracınız için bir gizli anahtar oluşturun.
-
İsim:
TENANT - Gizli: Hizmet sorumlusu oluşturma komutunun çıktısından kopyaladığınız tenantId değerini yapıştırın.
-
İsim:
Add secret öğesini seçin.
2 - İş akışı oluşturma
GitHub Actions iş akışı, bir olay iş akışını tetikledikten sonra çalışan görevleri tanımlar. İş akışı, paralel veya sıralı olarak çalışabilen bir veya daha fazla iş içerir. Daha fazla bilgi için bkz. GitHub Actions'ı anlama.
Bu öğreticide, aşağıdaki görevlerin her biri için işleri içeren bir iş akışı oluştururuz:
- IoT Hub örneği ve DPS örneği oluşturun.
- IoT Hub ve DPS örneklerini birbirine bağlayın.
- DPS örneğinde tek bir kayıt oluşturun ve DPS kaydı aracılığıyla simetrik anahtar kimlik doğrulamasını kullanarak cihazı IoT hub'ına kaydedin.
- Cihazın simülasyonunu beş dakika boyunca yapın ve IoT hub olaylarını izleyin.
İş akışları, bir deponun .github/workflows/ dizininde bulunan YAML dosyalarıdır.
GitHub deponuzda Eylemler sekmesine gidin.
Eylemler bölmesinde Yeni iş akışı'nı seçin.
İş akışı seçin sayfasında, kullanılacak önceden oluşturulmuş şablonları seçebilirsiniz. Bu öğretici için kendi iş akışımızı oluşturacağız, bu nedenle Kendiniz iş akışını ayarlayın'ı seçin.
GitHub sizin için yeni bir iş akışı dosyası oluşturur.
.github/workflows/dizininde olduğuna dikkat edin. Yeni dosyaya gibidps-tutorial.ymlanlamlı bir ad verin.İş akışınıza bir ad vermek için name parametresini ekleyin.
name: DPS Tutorialon.workflow_dispatch parametresini ekleyin.
onparametresi, bir iş akışının ne zaman çalıştığını tanımlar. parametresi,workflow_dispatchiş akışını el ile tetiklemek istediğimizi gösterir. Bu parametreyle, her çalıştırmada iş akışına geçirilecek bir parametre tanımlayabilirizinputs, ancak bu öğreticide kullanmayızinputs.on: workflow_dispatchİş akışında oluşturduğunuz kaynakların ortam değişkenlerini tanımlayın. Bu değişkenler iş akışındaki tüm işler için kullanılabilir. Ayrıca, tek tek işler için veya işler içindeki tek tek adımlar için ortam değişkenleri tanımlayabilirsiniz.
Yer tutucu değerlerini kendi değerlerinizle değiştirin. Hizmet sorumlusunun erişimi olan kaynak grubunu belirttiğinizden emin olun.
env: HUB_NAME: <Globally unique IoT hub name> DPS_NAME: <Desired Device Provisioning Service name> DEVICE_NAME: <Desired device name> RESOURCE_GROUP: <Solution resource group where resources will be created>Önceki bölümde oluşturduğunuz gizli diziler için ortam değişkenlerini tanımlayın.
SP_USER: ${{ secrets.APP_ID }} SP_SECRET: ${{ secrets.SECRET }} SP_TENANT: ${{ secrets.TENANT }}jobs parametresini iş akışı dosyasına ekleyin.
jobs:İş akışımız için
provisionişi olarak adlandırdığımız ilk işi tanımlayın. Bu görev IoT Hub ve DPS örneklerini hazırlar.provision: runs-on: ubuntu-latest steps: - name: Provision Infra run: | az --version az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot hub create -n "$HUB_NAME" -g "$RESOURCE_GROUP" az iot dps create -n "$DPS_NAME" -g "$RESOURCE_GROUP"Bu işte çalıştırılacak komutlar hakkında daha fazla bilgi için bkz:
DPS ve IoT Hub örneklerine
configureyönelik bir iş tanımlayın. Bu işin needs parametresini kullandığına dikkat edin, bu da listelenen iş kendi çalışmasını başarıyla tamamlayana kadarconfigureişin çalışmayacağı anlamına gelir.configure: runs-on: ubuntu-latest needs: provision steps: - name: Configure Infra run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot dps linked-hub create --dps-name "$DPS_NAME" --hub-name "$HUB_NAME"Bu işte çalıştırılacak komutlar hakkında daha fazla bilgi için bkz:
registeradlı, tek bir kayıt oluşturan ve bu kaydı cihazı IoT Hub'a kaydetmek için kullanan bir iş tanımlayın.register: runs-on: ubuntu-latest needs: configure steps: - name: Create enrollment run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot dps enrollment create -n "$DPS_NAME" --eid "$DEVICE_NAME" --attestation-type symmetrickey --auth-type login - name: Register device run: | az iot device registration create -n "$DPS_NAME" --rid "$DEVICE_NAME" --auth-type loginUyarı
Bu iş ve diğer işler, işlemin geçerli Microsoft Entra oturumundaki hizmet sorumlusunu kullanması gerektiğini belirtmek için bazı komutlarda
--auth-type loginparametresini kullanır. Alternatifi--auth-type key, hizmet sorumlusu yapılandırması gerektirmez, ancak daha az güvenlidir.Bu işte çalıştırılacak komutlar hakkında daha fazla bilgi için bkz:
IoT hub'ına
simulatebağlanan ve örnek telemetri iletileri gönderen bir IoT cihazına iş tanımlayın.simulate: runs-on: ubuntu-latest needs: register steps: - name: Simulate device run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot device simulate -n "$HUB_NAME" -d "$DEVICE_NAME"Bu işte çalıştırılacak komutlar hakkında daha fazla bilgi için bkz:
Olaylar için IoT hub uç noktasına bir iş
monitortanımlayın ve simülasyon cihazından gelen iletileri izleyin. Simülasyon ve izleme işlerinin her ikisinin de kendi parametresinde kayıt işini tanımladığına dikkat edin. Bu yapılandırma, kayıt işi başarıyla tamamlandıktan sonra her iki işin de paralel olarak çalıştığı anlamına gelir.monitor: runs-on: ubuntu-latest needs: register steps: - name: Monitor d2c telemetry run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot hub monitor-events -n "$HUB_NAME" -yBu işte çalıştırılacak komutlar hakkında daha fazla bilgi için bkz:
İş akışı dosyasının tamamı aşağıdaki örnekteki gibi görünmelidir ve bilgileriniz ortam değişkenlerindeki yer tutucu değerlerin yerini almalıdır:
name: DPS Tutorial on: workflow_dispatch env: HUB_NAME: <Globally unique IoT hub name> DPS_NAME: <Desired Device Provisioning Service name> DEVICE_NAME: <Desired device name> RESOURCE_GROUP: <Solution resource group where resources will be created> SP_USER: ${{ secrets.APP_ID }} SP_SECRET: ${{ secrets.SECRET }} SP_TENANT: ${{ secrets.TENANT }} jobs: provision: runs-on: ubuntu-latest steps: - name: Provision Infra run: | az --version az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot hub create -n "$HUB_NAME" -g "$RESOURCE_GROUP" az iot dps create -n "$DPS_NAME" -g "$RESOURCE_GROUP" configure: runs-on: ubuntu-latest needs: provision steps: - name: Configure Infra run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az iot dps linked-hub create --dps-name "$DPS_NAME" --hub-name "$HUB_NAME" register: runs-on: ubuntu-latest needs: configure steps: - name: Create enrollment run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot dps enrollment create -n "$DPS_NAME" --eid "$DEVICE_NAME" --attestation-type symmetrickey --auth-type login - name: Register device run: | az iot device registration create -n "$DPS_NAME" --rid "$DEVICE_NAME" --auth-type login simulate: runs-on: ubuntu-latest needs: register steps: - name: Simulate device run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot device simulate -n "$HUB_NAME" -d "$DEVICE_NAME" monitor: runs-on: ubuntu-latest needs: register steps: - name: Monitor d2c telemetry run: | az login --service-principal -u "$SP_USER" -p "$SP_SECRET" --tenant "$SP_TENANT" az extension add --name azure-iot az iot hub monitor-events -n "$HUB_NAME" -yBu yeni dosyayı kaydedin, işleyin ve GitHub deponuza gönderin.
3 - İş akışını çalıştırma
GitHub deponuzun Eylemler sekmesine gidin.
Eylemler bölmesinde, iş akışı dosyasında tanımladığımız ad olan DPS Öğreticisi'ni seçin ve ardından İş akışı çalıştır açılan kutusunu seçin.
İş akışınızı main dışında bir dalda oluşturduysanız dalı değiştirin ve ardından İş akışını çalıştır'ı seçin.
Devam eden yeni bir iş akışı çalışması görünür. Çalıştırma oturumunun ayrıntılarını görüntülemek için adı seçin.
İş akışı özetinde, her işin başlayıp tamamlanmasını izleyebilirsiniz. Ayrıntılarını görüntülemek için herhangi bir iş adını seçin. Simülasyon cihazı işi beş dakika boyunca çalışır ve IoT Hub'a telemetri gönderir. Bu süre boyunca, cihazdan gönderilen iletileri izlemek için simülasyon işini ve IoT Hub tarafından alınan iletileri izlemek için izleme işini seçin.
Tüm işler başarıyla tamamlandığında, her birinin yeşil onay işaretlerini görmeniz gerekir.
Kaynakları temizle
Bu öğreticide oluşturulan bu kaynakları kullanmaya devam etmeyecekseniz, aşağıdaki adımlarla bunları silin.
Azure CLI'yi kullanın:
Kaynak grubunuzdaki kaynakları listeleyin.
az resource list --resource-group <RESOURCE_GROUP_NAME>Tek tek kaynakları silmek için kaynak kimliğini kullanın.
az resource delete --resource-group <RESOURCE_GROUP_NAME> --ids <RESOURCE_ID>Kaynak grubunun tamamını ve içindeki tüm kaynakları silmek istiyorsanız aşağıdaki komutu çalıştırın:
az group delete --resource-group <RESOURCE_GROUP_NAME>
Azure portalını kullanın:
- Azure portalında yeni kaynakları oluşturduğunuz kaynak grubuna gidin.
- Kaynak grubunun tamamını silebilir veya kaldırmak istediğiniz kaynakları tek tek seçip Sil'i seçebilirsiniz.
Sonraki Adımlar
Diğer otomasyon araçlarıyla DPS örneklerini sağlamayı öğrenin.