通过 Jenkins 在 Azure VM 中使用 Azure CLI 的最佳实践

Best practices for using Azure CLI in a Azure VM via Jenkins

我是 Azure 的新手。 我有一个詹金斯集群。工作是在奴隶中启动的。从属是 Azure VM (Ubuntu)。

我需要运行一些 Azure CLI 命令来将文件部署到 Azure 存储 Blob。

我想我需要有一个身份(用户?)允许在 VM 中使用 Azure CLI。

也许我可以只为 Jenkins 创建一个特定的用户? 托管标识也可以使用 Azure CLI 吗?

我想知道完成此任务的最佳方法是什么。 谢谢。

我已经在我的环境中进行了测试。

请使用门户或 Azure CLI 创建服务主体。

要使用 CLI 创建服务主体,请使用以下命令:

az ad sp create-for-rbac --name ServicePrincipalName

详情请参考:https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli

要使用门户创建服务主体,

转到 Azure Active Directory --> 应用程序注册 --> 新注册 --> 填写表格 --> 注册

转到您的存储帐户 --> Select 访问控制 (IAM)--> 添加角色分配 --> 在角色下,select 存储帐户参与者 --> 在 Select,搜索您的服务委托人 --> 单击保存

现在,服务主体将拥有存储帐户贡献者访问权限。您可以使用 CLI 将文件部署到 Azure 存储。

转到 Azure Active Directory --> 应用程序注册 --> 搜索您的服务主体并单击它。

请注意应用程序 ID、租户 ID。

转到“客户和机密”--> 单击“新建客户端机密”--> 填写表格并单击“确定”。

记下客户端密钥。

在 VM 内,请使用以下命令使用您的服务主体登录到 Azure

az login --service-principal -u <app-id> -p <client-secret> --tenant <tenant-id>

现在您可以使用 CLI 从 VM 将文件部署到 Azure 存储帐户。

要将文件上传到您的存储帐户,请使用以下 CLI 命令:

az storage blob upload --account-name StorageAccountName --container-name ContainerName --name fileName --file sourceFileName