在以前的文章中,给你们介绍了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模块依赖,方便咱们进行快速开发