使用 Kusto 查询 Azure 用户分配的托管身份
在 Azure Portal 的用户分配托管身份资源列表中,可按名称、资源组、订阅等信息筛选,但无法直接通过 Client ID 搜索。借助 Azure Resource Graph 的 Kusto 查询功能,可以在所有订阅中按 Client ID 查询 UAI。
在 Azure VMSS 实例中运行命令
Azure VMSS(虚拟机规模集)是一项 PaaS 服务,用于创建和管理一组自动伸缩的虚拟机实例,常见用途包括 Azure DevOps Agent Pool、AKS 节点池等。在某些情况下,我们需要在特定 VMSS 实例中运行命令来调试、安装软件或执行运维操作。Azure CLI 提供了 az vmss run-command invoke 命令,可以方便地在远程实例中执行命令。
给 Windows WSL2 虚拟磁盘瘦身
使用 Windows 一段时间后,尽管没有安装大型软件,但 C 盘剩余空间不足,已经显示为红色。最终怀疑是 WSL2 导致的,很可能是因为最近在多个项目中运行了 npm install,安装了大量的软件包。经过排查,确实如此:WSL2 的虚拟磁盘空间不断增长,但在 WSL2 里删除文件后,它并不会主动把磁盘空间归还给 Windows 系统。不过可以使用多种方法对 WSL2 的虚拟磁盘进行瘦身,比如使用 diskpart 压缩磁盘文件。
检查并更改 Google 账户关联的地区
Google 账户关联的地区可能会影响到用户在 Google 服务中的体验。比如,某些服务在特定地区可能不可用,或者显示的内容和推荐有所不同。Google 提供了一个在线表单,允许用户检查和更改账户关联的地区。
解决 libvirt 启动失败的问题:外部磁盘权限限制
我在 LinuxMint 上使用 Cockit 和 libvirt 来管理虚拟机。安装好了虚拟机后,我又给它挂载了一个硬盘,磁盘位于我的第二块外置硬盘上(挂载到了 /mnt/data)。每次启动虚拟机时都会失败,提示没有权限打开磁盘文件。但是,如果手动卸载了该硬盘,然后再次添加到虚拟中,虚拟机又可以正常启动。每次这么手动操作未免过于复杂,而且虚拟机无法自动启动了。后来我发现,问题的根源在于 libvirt 的默认安全策略限制了对外部磁盘的访问。解决方法是修改 libvirt 的安全策略,允许访问指定的磁盘路径。
在 Linux Mint 上使用 Nerd Font
Nerd Font 是一套为开发者设计的字体,包含了大量的图标和符号,非常适合在终端、代码编辑器等开发工具中使用。比如 starship 依赖 Nerd Font 显示各种图标。
排查 pulumi preview 在本地卡住的问题
在使用 Pulumi 管理 Azure 上的资源时,我遇到一个长期困扰的问题:在本地执行 pulumi preview 命令时,整个过程非常慢,甚至经常会卡住不动。我常以为是网络问题,但最终发现是一个出乎意料的外部因素导致的……
在 Azure 中通过 Client ID 查找用户分配的托管身份(UAI)
用户分配的托管身份(User Assigned Identity,UAI)是可在多个 Azure 资源间共享的托管身份。很多场景中会用到 UAI 的 Object ID 来查找身份,但有时我们只知道该身份的 Client ID(客户端 ID),需要通过 Client ID 反查 UAI。Azure 门户并未提供跨订阅按 Client ID 搜索 UAI 的直接功能,因此需要借助命令行或资源查询来完成此操作。
Azure ADLS Gen2 ACL:Pulumi 与 UAI 访问问题分析
最近在使用 Pulumi 创建 Azure 上的基础设施时遇到这样一个现象:我在本地运行 pulumi up 成功创建资源,但同样使用绑定了 User Assigned Identity(UAI)的 CI/CD Pipeline 在运行 pulumi up 时,报错提示没有权限访问 Pulumi 使用的 blob 文件;而在某些项目中,Pipeline 的 UAI 则不会遇到该问题。
让 Pulumi 在 3.227.0 及以后版本使用全局 Python 环境
在 Pulumi CLI 于 2026 年 3 月19 发布的 3.227.0 版本中(Changelog),引入了一项改动:不再支持使用全局 Python 环境来运行插件(见 PR#22234。这个改动的目的是很明显的:大部分的 Python 项目都会使用虚拟环境来管理依赖。但是,在某些环境下,确实期望使用全局 Python 环境来运行插件,但是为了向后兼容性,它目前还支持全局的 Python 环境:
We don't support running plugins using the global or ambient Python environment, but we do for programs for backwards compatibility.