如何解决使用角色分配增量重新部署 ARM 模板会引发错误
如果我使用 Azure Pipelines 对包含角色分配的 ARM 模板进行“增量”“资源组”范围的部署,似乎我无法重新运行/重新部署管道而不在角色分配资源上收到错误:
RoleAssignmentUpdateNotPermitted: Tenant ID,application ID,principal ID,and scope are not allowed to be updated.
这看起来是一个明显的问题,必须有一个通用的解决方法? 我希望将角色分配分解到一个单独的模板中,也许会在每个部署中删除并重新创建角色分配?
解决方法
使用角色分配增量重新部署 ARM 模板会引发错误
正如你所说,这是一个明显的问题。对于相同的范围或资源,您只能将相同的角色分配给服务主体一次。
因此,存在与您尝试通过此模板创建的同名的现有角色分配,结果显示“ public function up()
{
Schema::create('books',function (Blueprint $table) {
$table->id();
$table->string('bookname');
$table->string('auther');
$table->string('cost');
$table->binary('book_image');
$table->timestamps();
/* $table->bigIncrements('std_id');
$table->foreign('std_id')
->references('id')
->on('students')
->onDelete('cascade'); */
$table->foreignId('sudents_id')->constrained('students');
});
}
”错误。
要解决此问题,我们需要确保每次部署到不同资源组时使用不同的 GUID 进行角色分配,但同时确保部署到同一资源组时使用相同的 GUID。
我们可以使用 RoleAssignmentUpdateNotPermitted
函数!它需要一个或多个用于计算散列的字符串,非常类似于 uniquestring 函数;只有这个会生成一个 GUID 格式的字符串:
guid
您可以参考文档 Defining RBAC Role Assignments in ARM Templates 了解更多详情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。