问题描述
是否可以从ARM模板中参数文件的自定义数据(cloud-init)部分内部的密钥库中获取秘密?这是我要完成的工作:
为简单起见,我需要将config.json文件注入到vm的特定位置,例如/ tmp。我正在考虑使用cloud-init。
#other cloud-init directives here....
"user": {
"username": "admin","password": "password","role": "system_administrator","type": "local"
}
毋庸置疑,我正在寻找一种方法,以便不对将用cloud-init创建的文件中的密码进行硬编码。是否可以从cloud-init配置内部调用机密?
如果无法完成上述操作,是否可以在我的手臂模板中创建一个变量(该变量从密钥库获取密码),然后在cloud-init配置中引用该变量?
如果这也不可能,是否有人建议如何在cloud-init中创建具有密码的配置文件?
欢迎任何想法,最终将使用azure DevOps部署arm模板,那么也许还有另一种方法吗?还是云初始化不是要走的路?
解决方法
我不确定您的问题到底是什么,但是您可以使用this文章来了解如何使用模板中的密钥库机密,这很简单。
笔记夫妇:
- 您将不得不使用concat将机密信息插入您在问题中提到的一行
- 我合理地确定您需要将cloud-init文本作为以base64编码的单行提供,没有办法解决
- 您还可以在cloud-init中执行类似的操作,这可以减轻您的痛苦:
#include
http://somesite.com/path/to/cloud-init.txt
,
我建议将托管标识包装到对 Keyvault 具有 AccessPolicy READ 的 VM。然后只需通过 Powershell 或 API(invoke-restmethod)提取值作为 CustomData 字段中的内联命令。