再来谈一个用Terraform部署VDI过程中遇到的问题,具体部署的过程就不赘述了,dependency比较多,又要把module分享出来,还得把具体的配置写清楚,比较麻烦

首先来说下我们部署的VDI环境,VDI我们用的就是Azure Virtual Desktop,然后将session host部署到VNET中,身份认证方式这里没有用AD认证,而是用的AAD认证

遇到的问题主要是部署完成后,session host一直显示unavailable

Terraform 部署VDI问题_后台管理

具体的报错内容就是domain join一直提示failed

Terraform 部署VDI问题_VDI_02

一开始一直怀疑是部署脚本有问题,尤其是查看了aad join的extention log,位置在这里

C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.ActiveDirectory.AADLoginForWindows\1.0.0.1

里边一直显示identity not found,找不到tenant,所以高度怀疑是因为部署脚本中漏掉了什么参数,导致是不是一直把请求发送到Azure Global去了,导致找不到这个tenant

Terraform 部署VDI问题_虚拟桌面_03

但是最后发现其实是被这个报错误导了,花费了很多的冤枉时间,root cause实际上是因为部署的脚本里没有给VM开启managed identity

Terraform 部署VDI问题_VDI_04

而手动开启identity或者修改脚本添加identity之后,domain join check这步就可以通过了

Terraform 部署VDI问题_VDI_05

这个问题其实也体现了IAC的其中一个缺点,就是如果是portal手动操作的,这些dependency实际上完全是由后台管理的,我们不需要太关心,但是如果是由IAC部署的,很多时候部署都会因为这种细节问题导致最终失败