在以前的文章中,給你們介紹了Azure IOT Edge服務以及部署,包括利用開源的容器註冊表服務和IOT Edge進行,如今Azure容器註冊表(ACR)在中國已經上線預覽了,因此針對於Azure IOT Edge的主要服務組件已經準備好了,整個的系統就能夠快速部署起來了: python
接下來的問題就在於,針對於Azure IOT Edge V2的示例代碼比較少,尤爲是Python,Java等等,對於不少開源開發人員來講並不方便快速上手,例如咱們最常測試的tempSensor是用.net本文主要介紹如何使用python語言,Azure容器註冊表,開發和部署Edge V2的模擬邊界設備。 git
目前預覽版本的容器註冊表暫時只支持中國北區,固然你可使用Azure界面建立容器註冊表,但對於開發人員來講,可能命令行更快速吧:) github
https://docs.microsoft.com/zh-cn/cli/azure/install-azure-cli?view=azure-cli-latest docker
例如我當前版本是: 服務器
az cloud set -n AzureChinaCloud cookie
az login 工具
3. 建立資源組,建立容器註冊表,容器註冊表名稱爲stevendemoacr,目前預覽版本只能在中國北部建立: 測試
az group create --name steveniotdemogroup --location chinanorth spa
az acr create --resource-group steveniotdemogroup --name stevendemoacr --sku Basic .net
4.登陸到Azure管理界面,能夠看到容器註冊表建立成功,默認配額10GB
5. 登陸到容器註冊表
az acr login --name stevendemoacr --resource-group steveniotdemogroup
注意:若是你的登陸出現問題,或者hang在這裏,請注意檢查一下你的.docker/config.jsdon文件,頗有啃呢個你之前登陸過其餘註冊服務器,裏面的登陸服務器是錯誤的,修改爲正確的容器註冊表服務器便可。
6. 先作一個測試,本地拉下來一個image
docker pull microsoft/aci-helloworld
# 得到容器註冊表的登陸服務器
az acr list --resource-group steveniotdemogroup --query "[].{acrLoginServer:loginServer}" --output table
# 查看當前容器註冊表中的鏡像,應該爲空
az acr repository list --name stevendemoacr --output table
# 標記,並推送咱們拉下來的本地helloworld鏡像到容器註冊表
docker tag microsoft/aci-helloworld stevendemoacr.azurecr.cn/aci-helloworld:v1
docker push stevendemoacr.azurecr.cn/aci-helloworld:v1
# 查看容器註冊表中的鏡像
7. 最後爲方便後續部署,啓用管理員,用戶名就是註冊表名稱,密碼能夠經過以下方式得到
az acr update --name stevendemoacr --admin-enabled true
az acr credential show --name stevendemoacr --query "passwords[0].value"
pip install --upgrade --user cookiecutter
在Mac上若是你使用的是Anconda,可使用以下命令安裝:
conda install -c conda-forge cookiecutter
2. 在VSCode中,打開命令控制面板,搜索"Azure IOT Edge:New IOT Edge Solution",按照提示選擇,輸入solution名稱,選擇Python solution模版,在指定容器註冊表的時候,使用你的容器註冊表地址,例如本例中就是stevendemoacr.azurecr.cn,替換localhost:5000而後回車進行建立,實際上Edge插件執行的是以下命令:
cookiecutter --no-input https://github.com/Azure/cookiecutter-azure-iot-edge-module module_name=StevenPythonModule image_repository=stevendemoacr.azurecr.cn/stevenpythonmodule --checkout master
注意:因爲Click組件的python3的問題,你有可能會碰到相似於"python 3 was configured to use ascii as encoding for the environment"的錯誤,致使整個執行錯誤終止,解決辦法是在你的環境變量裏面加上LANG=zh_CN.UTF-8的聲明便可。
3. 生成的項目是VS Code工做區,以下圖所示,在生成的項目裏面找到.env文件,輸入以前得到你的容器註冊表的用戶名和密碼,相似以下字段:
CONTAINER_REGISTRY_USERNAME_stevendemoacr=stevendemoacr
CONTAINER_REGISTRY_PASSWORD_stevendemoacr= vFjKAE2G2PoDsQWPgfrnbfr
查看生成的工做區項目結構:
能夠看到該項目自動建立了sample code,Dockerfile以及模塊定義和python模塊依賴,方便咱們進行快速開發