Tutorial: Mengembangkan modul IoT Edge dengan kontainer Linux menggunakan IoT Edge untuk Linux di Windows

Berlaku untuk:IoT Edge 1.4 checkmark IoT Edge 1.4

Penting

IoT Edge 1.4 adalah rilis yang didukung Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Gunakan Visual Studio 2019 untuk mengembangkan, men-debug, dan menyebarkan kode ke perangkat yang menjalankan IoT Edge untuk Linux di Windows.

Tutorial ini membahas pengembangan, penelusuran kesalahan, dan penyebaran kode Anda sendiri ke perangkat IoT Edge menggunakan IoT Edge untuk Linux di Windows. Artikel ini adalah prasyarat yang berguna untuk tutorial lainnya, yang membahas lebih detail tentang bahasa pemrogram tertentu atau layanan Azure.

Tutorial ini menggunakan contoh penyebaran modul C# ke perangkat Linux. Contoh ini dipilih karena merupakan skenario pengembang yang paling umum untuk solusi Azure IoT Edge. Bahkan jika Anda berencana menggunakan bahasa atau menyebarkan layanan Azure yang berbeda, tutorial ini masih berguna untuk mempelajari tentang alat dan konsep pengembangan. Selesaikan pendahuluan proses pengembangan ini, lalu pilih bahasa atau layanan Azure pilihan Anda untuk mempelajari detailnya.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Siapkan komputer pengembangan Anda.
  • Gunakan alat Azure IoT Edge untuk Visual Studio Code guna membuat proyek baru.
  • Buat proyek Anda sebagai kontainer dan simpan dalam registri kontainer Azure.
  • Sebarkan kode Anda ke perangkat Azure IoT Edge.

Prasyarat

Artikel ini mengasumsikan bahwa Anda menggunakan mesin yang menjalankan Windows sebagai mesin pengembangan Anda. Di komputer Windows, Anda dapat mengembangkan modul Windows atau Linux. Tutorial ini akan memandu Anda melalui pengembangan kontainer Linux, menggunakan IoT Edge untuk Linux di Windows untuk membangun dan menyebarkan modul.

Instal Visual Studio di mesin pengembangan Anda. Pastikan Anda menyertakan pengembangan Azure dan Pengembangan desktop dengan beban kerja C# di penginstalan Visual Studio 2019 Anda. Anda dapat Memodifikasi Visual Studio 2019 untuk menambahkan beban kerja yang diperlukan.

Setelah Visual Studio 2019 siap, Anda juga memerlukan alat dan komponen berikut:

Sumber daya cloud:

  • IoT Hub gratis atau standar di Azure.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Periksa versi alat Anda

  1. Dari menu Ekstensi, pilih Kelola Ekstensi. Perluas Alat yang Diinstal > dan Anda dapat menemukan Alat Azure IoT Edge untuk Visual Studio dan Cloud Explorer untuk Visual Studio.

  2. Perhatikan versi yang diinstal. Anda dapat membandingkan versi ini dengan versi terbaru di Visual Studio Marketplace (Cloud Explorer, Azure IoT Edge)

  3. Jika versi Anda lebih lama dari versi yang tersedia di Visual Studio Marketplace, perbarui alat Anda di Visual Studio seperti yang diperlihatkan di bagian berikut.

Catatan

Jika Anda menggunakan Visual Studio 2022, Cloud Explorer akan dihentikan. Untuk menyebarkan modul Azure IoT Edge, gunakan Azure CLI atau portal Azure.

Perbarui alat Anda

  1. Di jendela Kelola Ekstensi , perluas Pembaruan > Visual Studio Marketplace, pilih Azure IoT Edge Tools atau Cloud Explorer untuk Visual Studio dan pilih Perbarui.

  2. Setelah pembaruan alat diunduh, tutup Visual Studio untuk memicu pembaruan alat dengan penginstal VSIX.

  3. Di penginstal, pilih OK untuk memulai lalu Ubah untuk memperbarui alat.

  4. Setelah pembaruan selesai, pilih Tutup, lalu hidupkan ulang Visual Studio.

Konsep utama

Tutorial ini membahas pengembangan modul Azure IoT Edge. Modul Azure IoT Edge, atau singkatnya hanya modul, adalah kontainer dengan kode yang dapat dieksekusi. Anda dapat menyebarkan satu atau beberapa modul ke perangkat Azure IoT Edge. Modul melakukan tugas tertentu seperti menyerap data dari sensor, membersihkan dan menganalisis data, atau mengirim pesan ke hub IoT. Untuk informasi selengkapnya, lihat Memahami modul Azure IoT Edge.

Saat mengembangkan modul Azure IoT Edge, penting untuk memahami perbedaan antara komputer pengembangan dan perangkat Azure IoT Edge target tempat modul nantinya akan disebarkan. Kontainer yang Anda bangun untuk menampung kode modul harus cocok dengan sistem operasi (OS) perangkat target. Misalnya, skenario paling umum adalah seseorang mengembangkan modul di komputer Windows yang bermaksud menargetkan perangkat Linux yang menjalankan Azure IoT Edge. Dalam kasus ini, sistem operasi kontainer adalah Linux. Saat Anda mengikuti tutorial ini, ingatlah perbedaan antara OS komputer pengembangan dan OS kontainer. Untuk tutorial ini, Anda akan menggunakan host Windows untuk pengembangan dan VM IoT Edge untuk Linux di Windows (EFLOW) untuk membangun dan menyebarkan modul.

Tutorial ini menargetkan perangkat yang menjalankan Azure IoT Edge dengan kontainer Linux. Anda dapat menggunakan sistem operasi pilihan Anda selama komputer pengembangan menjalankan kontainer Linux. Sebaiknya gunakan Visual Studio untuk mengembangkan dengan kontainer Linux, jadi itulah yang akan digunakan tutorial ini. Anda juga dapat menggunakan Kode Visual Studio, meskipun ada perbedaan dalam dukungan di antara kedua alat. Untuk informasi selengkapnya, lihat Mengembangkan modul Azure IoT Edge menggunakan Visual Studio Code.

Menyiapkan koneksi jarak jauh docker-cli dan mesin Docker

Modul Azure IoT Edge dikemas sebagai kontainer, jadi Anda memerlukan mesin kontainer di komputer pengembangan untuk membangun dan mengelolanya. Komputer virtual EFLOW sudah berisi instans mesin Docker, sehingga tutorial ini akan memandu tentang cara terhubung dari jarak jauh dari komputer pengembang Windows ke instans Docker VM EFLOW. Dengan menggunakan ini, kami menghapus dependensi pada Docker Desktop untuk Windows.

Langkah pertama adalah mengonfigurasi docker-cli pada komputer pengembangan Windows untuk dapat terhubung ke mesin docker jarak jauh.

  1. Unduh docker.exe versi docker-cli yang telah dikommpilasikan sebelumnya dari docker-cli Chocolatey. Anda juga dapat mengunduh proyek cli resmi dari GitHub docker/cli dan mengkompilasinya mengikuti instruksi repositori.
  2. Ekstrak docker.exe ke direktori di komputer pengembangan Anda. Misalnya, C:\Docker\bin
  3. Buka Tentang PC Anda ->Info Sistem ->Pengaturan sistem tingkat lanjut
  4. Pilih Tingkat Lanjut ->Variabel lingkungan -> Di bawah Variabel pengguna periksa Jalur
  5. Edit variabel Jalur dan tambahkan lokasi docker.exe
  6. Membuka sesi PowerShell yang ditingkatkan
  7. Periksa apakah Docker CLI dapat diakses menggunakan perintah
    docker --version
    

Jika semuanya berhasil dikonfigurasi, perintah sebelumnya harus menghasilkan versi docker, seperti Docker versi 20.10.12, build e91ed57.

Langkah kedua adalah mengonfigurasi mesin Docker komputer virtual EFLOW untuk menerima koneksi eksternal, dan menambahkan aturan firewall yang sesuai.

Peringatan

Mengekspos mesin Docker ke koneksi eksternal dapat meningkatkan risiko keamanan. Konfigurasi ini hanya boleh digunakan untuk tujuan pengembangan. Pastikan untuk mengembalikan konfigurasi ke pengaturan default setelah pengembangan selesai.

  1. Buka sesi PowerShell yang ditingkatkan dan jalankan perintah berikut

    # Configure the EFLOW virtual machine Docker engine to accept external connections, and add the appropriate firewall rules.
    Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT"
    
    # Create a copy of the EFLOW VM _docker.service_ in the system folder.
    Invoke-EflowVmCommand "sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service"
    
    # Replace the service execution line to listen for external connections.
    Invoke-EflowVmCommand "sudo sed -i 's/-H fd:\/\// -H fd:\/\/ -H tcp:\/\/0.0.0.0:2375/g'  /etc/systemd/system/docker.service"
    
    # Reload the EFLOW VM services configurations.
    Invoke-EflowVmCommand "sudo systemctl daemon-reload"
    
    # Reload the Docker engine service.
    Invoke-EflowVmCommand "sudo systemctl restart docker.service"
    
    # Check that the Docker engine is listening to external connections.
    Invoke-EflowVmCommand "sudo netstat -lntp | grep dockerd"
    

    Berikut ini adalah contoh output.

    PS C:\> # Configure the EFLOW virtual machine Docker engine to accept external connections, and add the appropriate firewall rules.
    PS C:\> Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT"
    PS C:\>
    PS C:\> # Create a copy of the EFLOW VM docker.service in the system folder.
    PS C:\> Invoke-EflowVmCommand "sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service"
    PS C:\>
    PS C:\> # Replace the service execution line to listen for external connections.
    PS C:\> Invoke-EflowVmCommand "sudo sed -i 's/-H fd:\/\// -H fd:\/\/ -H tcp:\/\/0.0.0.0:2375/g' /etc/systemd/system/docker.service"
    PS C:\>
    PS C:\> # Reload the EFLOW VM services configurations.
    PS C:\> Invoke-EflowVmCommand "sudo systemctl daemon-reload"
    PS C:\>
    PS C:\> # Reload the Docker engine service.
    PS C:\> Invoke-EflowVmCommand "sudo systemctl restart docker.service"
    PS C:\>
    PS C:\> # Check that the Docker engine is listening to external connections.
    PS C:\> Invoke-EflowVmCommand "sudo netstat -lntp | grep dockerd"
    tcp6       0      0 :::2375                 :::*                    LISTEN      2790/dockerd
    
  2. Langkah terakhir adalah menguji koneksi Docker ke mesin Docker EFLOW VM. Pertama, Anda akan memerlukan alamat IP VM EFLOW.

    Get-EflowVmAddr
    

    Tip

    Jika VM EFLOW disebarkan tanpa IP Statis, alamat IP dapat berubah di seluruh boot ulang OS host Windows atau perubahan jaringan. Pastikan Anda menggunakan alamat IP VM EFLOW yang benar setiap kali Anda ingin membuat koneksi mesin Docker jarak jauh.

    Berikut ini adalah contoh output.

    PS C:\> Get-EflowVmAddr
    [03/15/2022 15:22:30] Querying IP and MAC addresses from virtual machine (DESKTOP-J1842A1-EFLOW)
     - Virtual machine MAC: 00:15:5d:6f:da:78
     - Virtual machine IP : 172.31.24.105 retrieved directly from virtual machine
    00:15:5d:6f:da:78
    172.31.24.105 
    
  3. Dengan menggunakan alamat IP yang diperoleh, sambungkan ke mesin Docker VM EFLOW, dan jalankan kontainer sampel Hello-World. Ganti <EFLOW-VM-IP> dengan alamat IP EFLOW VM yang diperoleh pada langkah sebelumnya.

    docker -H tcp://<EFLOW-VM-IP>:2375 run --rm hello-world
    

    Anda akan melihat bahwa kontainer sedang diunduh, dan setelah itu akan berjalan dan menghasilkan yang berikut.

    PS C:\> docker -H tcp://172.31.24.105:2375 run --rm hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    2db29710123e: Pull complete
    Digest: sha256:4c5f3db4f8a54eb1e017c385f683a2de6e06f75be442dc32698c9bbe6c861edd
    Status: Downloaded newer image for hello-world:latest
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    To generate this message, Docker took the following steps:
     1. The Docker client contacted the Docker daemon.
     2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
        (amd64)
     3. The Docker daemon created a new container from that image which runs the
        executable that produces the output you are currently reading.
     4. The Docker daemon streamed that output to the Docker client, which sent it
        to your terminal.
    
    To try something more ambitious, you can run an Ubuntu container with:
     $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
     https://hub.docker.com/
    
    For more examples and ideas, visit:
     https://docs.docker.com/get-started/
    

Buat perangkat Azure IoT Edge

Templat proyek IoT Edge di Visual Studio membuat solusi yang dapat disebarkan ke perangkat IoT Edge. Pertama, Anda membuat solusi Azure IoT Edge, dan kemudian Anda menghasilkan modul pertama dalam solusi itu. Setiap solusi IoT Edge dapat berisi lebih dari satu modul.

Tip

Struktur proyek IoT Edge yang dibuat oleh Visual Studio tidak sama dengan di Visual Studio Code.

  1. Di Visual Studio, buat proyek baru.

  2. Pada halaman Buat proyek baru, cari Azure IoT Edge. Pilih proyek yang cocok dengan platform (modul Linux IoT Edge) dan arsitektur untuk perangkat IoT Edge Anda, dan pilih Berikutnya.

    Create New Project

  3. Pada halaman Konfigurasikan proyek baru Anda, masukkan nama proyek Anda dan tentukan lokasinya, lalu pilih Buat.

  4. Pada jendela Tambahkan Modul, pilih jenis modul yang ingin Anda kembangkan. Anda juga dapat memilih Modul yang ada untuk menambahkan modul IoT Edge yang ada ke penyebaran Anda. Tentukan nama modul dan repositori gambar modul Anda.

    Visual Studio secara otomatis mengisi URL repositori dengan localhost:5000/<nama> modul. Jika Anda menggunakan registri Docker lokal untuk pengujian, maka localhost baik-baik saja. Jika Anda menggunakan Azure Container Registry, ganti localhost:5000 dengan server masuk dari pengaturan registri Anda. Server masuk terlihat seperti <nama> registri.azurecr.io. Hasil akhir akan terlihat seperti <nama> registri.azurecr.io/< namamodule.>

    Pilih Tambahkan untuk menambahkan modul Anda ke proyek.

    Screenshot of adding how to add an application and module to Visual Studio solution

Sekarang, Anda memiliki proyek IoT Edge dan modul IoT Edge di solusi Visual Studio Anda.

Folder modul berisi file untuk kode modul Anda, bernama Program.cs atau main.c tergantung bahasa yang Anda pilih. Folder ini juga berisi file bernama module.json yang menjelaskan metadata modul Anda. Berbagai file Docker menyediakan informasi yang diperlukan untuk membangun modul Anda sebagai kontainer Windows atau Linux.

Folder proyek berisi daftar semua modul yang disertakan dalam proyek itu. Saat ini seharusnya hanya menampilkan satu modul, tetapi Anda dapat menambahkan lebih banyak.

Folder proyek juga berisi file bernama deployment.template.json. File ini adalah templat manifes penyebaran IoT Edge, yang menentukan semua modul yang akan berjalan pada perangkat bersama dengan bagaimana mereka akan berkomunikasi satu sama lain. Untuk informasi selengkapnya tentang manifes penyebaran, lihat Pelajari cara menyebarkan modul dan menetapkan rute. Jika Anda membuka templat penyebaran ini, Anda akan melihat bahwa dua modul runtime, edgeAgent dan edgeHub disertakan, bersama dengan modul kustom yang Anda buat dalam proyek Visual Studio ini. Modul keempat bernama SimulatedTemperatureSensor juga disertakan. Modul default ini menghasilkan data simulasi yang dapat Anda gunakan untuk menguji modul Anda, atau menghapusnya jika tidak diperlukan. Untuk melihat cara kerja sensor suhu yang disimulasikan, lihat kode sumber SimulatedTemperatureSensor.csproj.

Menetapkan versi {i>runtime

Ekstensi Azure IoT Edge {i>defaultruntime

  1. Di Penjelajah Solusi, klik kanan nama proyek Anda dan pilih Setel versi runtime IoT Edge.

    Right-click your project name and select set IoT Edge runtime version.

  2. Gunakan menu drop-down untuk memilih versi runtime yang dijalankan perangkat IoT Edge Anda, lalu pilih OK untuk menyimpan perubahan Anda.

  3. Kembalikan manifes penyebaran Anda dengan versi runtime baru. Klik kanan nama proyek Anda dan pilih Buat penyebaran untuk IoT Edge.

Peringatan

Jika Anda mengubah versi runtime IoT Edge, pastikan templat penyebaran mencerminkan perubahan yang diperlukan. Saat ini, ada masalah yang diketahui dengan Azure IoT Edge Tools yang tidak akan mengubah "schemVersion" di dalam objek "properties.desired" modul "$edgeHub" (bagian terakhir dari file json).

Menyiapkan instans mesin Docker jarak jauh Visual Studio 2019

Gunakan ekstensi alat Azure IoT Edge untuk Visual Studio Code ke modul IoT Edge dan konfigurasikan untuk menggunakan mesin Docker jarak jauh yang berjalan di dalam komputer virtual EFLOW.

  1. Pilih Alat ->Alat Azure IoT Edge ->Pengaturan alat IoT Edge...

  2. Ganti nilai localhost DOCKER_HOST dengan alamat IP VM EFLOW. Jika Anda tidak ingat alamat IP, gunakan cmdlet Get-EflowVmAddr PowerShell EFLOW untuk mendapatkannya. Untuk exmaple, jika alamat IP VM EFLOW adalah 172.20.1.100, maka nilai baru harus tcp://172.20.1.100:2375.

    Screenshot of IoT Edge Tools settings

  3. Pilih OK

Mengembangkan modul Anda

Saat Anda menambahkan modul baru, modul ini dilengkapi dengan kode default yang siap dibuat dan disebarkan ke perangkat sehingga Anda dapat memulai pengujian tanpa menyentuh kode apa pun. Kode modul terletak di dalam folder modul dalam file bernama Program.cs (untuk C#) atau main.c (untuk C).

Solusi default dibuat sehingga data simulasi dari modul SimulatedTemperatureSensor dirutekan ke modul Anda, yang mengambil input dan mengirimkannya ke IoT Hub.

Saat Anda siap untuk menyesuaikan templat modul dengan kode Anda sendiri, gunakan SDK Azure IoT Hub untuk membangun modul lain yang memenuhi kebutuhan utama untuk solusi IoT seperti keamanan, manajemen perangkat, dan keandalan.

Membangun dan mendorong satu modul

Biasanya, Anda harus menguji dan melakukan debug setiap modul sebelum menjalankannya dalam seluruh solusi dengan beberapa modul. Karena solusinya akan dibangun atau debug menggunakan mesin Docker yang berjalan di dalam EFLOW VM, langkah pertama adalah membangun dan menerbitkan modul untuk mengaktifkan penelusuran kesalahan jarak jauh.

  1. Di Penjelajah Solusi, klik kanan folder modul dan pilih Atur sebagai Proyek Pengaktifan dari menu.

    Screenshot of setting the start-up project

  2. Untuk men-debug modul C# Linux, kita perlu memperbarui Dockerfile.amd64.debug untuk mengaktifkan layanan SSH. Perbarui file Dockerfile.amd64.debug untuk menggunakan templat berikut: Dockerfile untuk Modul Azure IoT Edge AMD64 C# dengan Dukungan Debug Jarak Jauh.

    Catatan

    Saat memilih Debug, Visual Studio menggunakan Dockerfile.(amd64|windows-amd64).debug untuk membuat gambar Docker. Ini termasuk debugger baris perintah .NET Core VSDBG dalam gambar kontainer Anda saat membangunnya. Untuk modul IoT Edge siap produksi, kami sarankan Anda menggunakan konfigurasi Rilis, yang menggunakan Dockerfile.(amd64|windows-amd64) tanpa VSDBG.

    Peringatan

    Pastikan baris terakhir template ENTRYPOINT ["dotnet", "IotEdgeModule1.dll"] nama DLL cocok dengan nama proyek modul IoT Edge Anda.

    Screenshot of setting the Dockerfile template

  3. Untuk membuat koneksi SSH dengan modul Linux, kita perlu membuat kunci RSA. Buka sesi PowerShell yang ditingkatkan dan jalankan perintah berikut untuk membuat kunci RSA baru. Pastikan Anda menyimpan kunci RSA di bawah folder modul IoT Edge yang sama, dan nama kuncinya id_rsa.

    ssh-keygen -t RSA -b 4096 -m PEM
    

    Screenshot of how to create an SSH key

  4. Jika Anda menggunakan registri pribadi seperti Azure Container Registry (ACR), gunakan perintah Docker berikut untuk masuk ke dalamnya. Anda bisa mendapatkan nama pengguna dan kata sandi dari halaman Kunci akses registri Anda di portal Azure. Jika Anda menggunakan registri lokal, Anda dapat menjalankan registri lokal.

    docker -H tcp://<EFLOW-VM-IP>:2375 login -u <ACR username> -p <ACR password> <ACR login server>
    
  5. Di Penjelajah Solusi, klik kanan folder proyek dan pilih Buat dan Dorong Modul IoT Edge untuk membuat dan mendorong gambar Docker untuk setiap modul.

Menyebarkan dan men-debug solusi

  1. Jika Anda menggunakan registri pribadi seperti Azure Container Registry, Anda perlu menambahkan informasi masuk registri Anda ke pengaturan runtime yang ditemukan dalam file deployment.template.json. Ganti tempat penampung dengan nama pengguna, kata sandi, dan nama registri admin ACR Anda yang sebenarnya.

          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {
              "registry1": {
                "username": "<username>",
                "password": "<password>",
                "address": "<registry name>.azurecr.io"
              }
            }
          }
    

    Catatan

    Artikel ini menggunakan kredensial login admin untuk Azure Container Registry, yang sesuai untuk skenario pengembangan dan pengujian. Saat Anda siap untuk skenario produksi, kami merekomendasikan opsi autentikasi dengan hak paling rendah seperti perwakilan layanan. Untuk informasi selengkapnya, lihat Kelola akses ke registri kontainer Anda.

  2. Anda perlu mengekspos port 22 untuk mengakses layanan SSH modul. Tutorial ini menggunakan 10022 sebagai port host, tetapi Anda dapat menentukan port yang berbeda, yang akan digunakan sebagai port SSH untuk terhubung ke modul Linux C#. Anda perlu menambahkan informasi port SSH ke "createOptions" dari pengaturan modul Linux ini yang ditemukan dalam file deployment.debug.template.json.

         "createOptions": {
            "HostConfig": {
               "Privileged": true,
               "PortBindings": {
                     "22/tcp": [
                        {
                           "HostPort": "10022"
                        }
                     ]
               }
            }
         }
    
  3. Di Penjelajah Solusi, klik kanan folder proyek dan pilih Hasilkan Penyebaran untuk IoT Edge untuk membangun json penyebaran IoT Edge baru.

  4. Buka Cloud Explorer dengan mengeklik Tampilkan>Cloud Explorer. Pastikan Anda sudah masuk ke Visual Studio 2019.

  5. Di Cloud Explorer, buka langganan Anda, temukan Azure IoT Hub dan perangkat Azure IoT Edge yang ingin Anda terapkan.

  6. Klik kanan pada perangkat IoT Edge dan pilih Buat penyebaran. Navigasikan ke manifes penyebaran debug yang dikonfigurasi untuk platform Anda yang terletak di folder konfigurasi di solusi Visual Studio Anda, seperti deployment.amd64.json.

  7. Di Cloud Explorer, klik kanan perangkat edge Anda dan refresh untuk melihat modul baru yang berjalan bersama dengan modul $edgeAgent dan $edgeHub .

  8. Menggunakan dan meningkatkan sesi PowerShell menjalankan perintah berikut

    1. Dapatkan moduleId berdasarkan nama yang digunakan untuk modul Linux C#. Pastikan untuk mengganti <tempat penampung iot-edge-module-name> dengan nama modul Anda.

      $moduleId = Invoke-EflowVmCommand "sudo docker ps -aqf name=<iot-edge-module-name>"
      
    2. Periksa apakah $moduleId sudah benar - Jika variabel kosong, pastikan Anda menggunakan nama modul yang benar

    3. Memulai layanan SSH di dalam kontainer Linux

      Invoke-EflowVmCommand "sudo docker exec -it -d $moduleId service ssh start"
      
    4. Buka port SSH modul pada VM EFLOW (tutorial ini menggunakan port 10022)

      Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 10022 -j ACCEPT"
      

    Peringatan

    Untuk alasan keamanan, setiap kali VM EFLOW di-boot ulang, aturan tabel IP akan menghapus dan kembali ke pengaturan asli. Selain itu, layanan SSH modul harus dimulai lagi secara manual.

  9. Setelah berhasil memulai layanan SSH, pilih Debug ->Lampirkan ke Proses, atur Jenis Koneksi ke SSH, dan target Koneksi ion ke alamat IP VM EFLOW Anda. Jika Anda tidak tahu IP VM EFLOW, Anda dapat menggunakan Get-EflowVmAddr cmdlet PowerShell. Pertama, ketik IP lalu tekan enter. Di jendela pop-up, masukkan konfigurasi berikut:

    Bidang Nilai
    Hostname Menggunakan IP VM EFLOW
    Port 10022 (Atau yang Anda gunakan dalam konfigurasi penyebaran Anda)
    Username akar
    Jenis autentikasi Kunci privat
    File Kunci Privat Jalur lengkap ke id_rsa yang sebelumnya dibuat di Langkah 5
    Frase sandi Yang digunakan untuk kunci yang dibuat di Langkah 5

    Screenshot of how to connect to a remote system

  10. Setelah berhasil menyambungkan ke modul menggunakan SSH, Anda dapat memilih proses dan memilih Lampirkan. Untuk modul C# Anda perlu memilih proses dotnet dan Lampirkan ke Terkelola (CoreCLR). Mungkin perlu waktu 10/C20 detik saat pertama kali Anda melakukannya.

    Screenshot of how to attach an edge module process.

  11. Tetapkan titik henti untuk memeriksa modul.

    • Jika mengembangkan di C#, atur titik henti dalam PipeMessage() fungsi di ModuleBackgroundService.cs.
    • Jika menggunakan C, setel titik henti dalam fungsi InputQueue1Callback() di main.c.
  12. Output dari SimulatedTemperatureSensor harus dialihkan ke input1 modul Linux C# kustom. Titik henti harus dipicu. Anda dapat menonton variabel di jendela Visual Studio Locals.

    Screenshot of how to debug a single module

  13. Tekan Ctrl + F5 atau plih tombol stop untuk menghentikan penelusuran kesalahan.

Membersihkan sumber daya

Jika berencana untuk melanjutkan ke artikel yang disarankan berikutnya, Anda dapat menyimpan sumber daya dan konfigurasi yang Anda buat dan menggunakannya kembali. Anda juga dapat tetap menggunakan perangkat IoT Edge yang sama sebagai perangkat uji.

Jika tidak, Anda dapat menghapus konfigurasi lokal dan sumber daya Azure yang Anda gunakan dalam artikel ini untuk menghindari tagihan.

Menghapus sumber daya Azure

Menghapus sumber daya Azure dan grup sumber daya tidak dapat diubah. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat hub IoT di dalam grup sumber daya yang sudah ada yang berisi sumber daya yang ingin Anda simpan, hapus hanya sumber daya hub IoT itu sendiri, bukan grup sumber daya.

Untuk menghapus sumber daya:

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.

  2. Pilih nama grup sumber daya yang berisi sumber daya pengujian IoT Edge Anda.

  3. Tinjau daftar sumber daya yang terdapat dalam grup sumber daya Anda. Jika ingin menghapus semuanya, Anda dapat memilih Hapus grup sumber daya. Jika hanya ingin menghapus beberapa sumber daya, Anda dapat mengklik setiap sumber daya untuk menghapusnya satu per satu.

Langkah berikutnya

Dalam tutorial ini, Anda menyiapkan Visual Studio di komputer pengembangan Anda dan menyebarkan dan men-debug modul IoT Edge pertama Anda darinya. Sekarang setelah Anda mengetahui konsep dasarnya, coba tambahkan fungsionalitas ke modul sehingga modul dapat menganalisis data yang melewati modul.