我的公司开发了一个基于Azure资源管理器的解决方案,该解决方案部署了一组资源(主要是存储,SQL数据库和Web应用程序),它已经作为新客户的配置流程实现。
但是,我们现在正在研究执行更新的最佳方法,我们正在考虑的一个假设是使用一个特定的模板来更新此应用程序的二进制文件。
我们的想法是拥有一个单独的模板,该模板只有Web应用程序,应用程序主机和MSDeploy资源,可以获取最新版本的软件包并将其重新上载到该Web应用程序。
我在这个解决方案中遇到的唯一问题是能够处理更新版二进制文件所需的配置更改 - 我们不希望用户必须重新输入他们为原始文件放置的任何参数部署(通过部署到Azure按钮完成),因此,必须在应用程序中执行任何配置 - 计划是使用Microsoft.WindowsAzure.Management.WebSites库。
使用Microsoft.WindowsAzure.Management.WebSites的主要限制是您只能使用证书或服务主体进行身份验证。理想情况下,我们希望找到一种方法,使更新除了您在部署更新时提供的身份验证之外不需要任何身份验证。
对于这种情况,是否有任何关于最佳做法的建议?
谢谢。
答案 0 :(得分:1)
只能通过ARM模板进行更新。 例如,即使在创建依赖资源本身时,也可以将连接字符串自动添加到应用程序设置中。 防爆。帐户存储连接字符串。
只有首次创建您的网站需要花费更多时间,例如30秒。
如果WebApp已经存在,ARM将不会销毁它们。它只会更新。 如果没有变化,那么部署速度非常快。
如果您的更改需要新的Appsettings参数,则可以在ARM中输入,请检入您的存储库。 下一次部署将获取并更新WebApp。
因此无需任何人登录和更新。
答案 1 :(得分:0)
我们的最终决定是放弃独家使用ARM。通过SDK,Service Principal解决方案将允许我们使用Web作业或站点扩展来执行包含配置更改的(自动或提示)更新。但是,它需要“太多”特权 - 为什么客户会信任一个可以随意创建新资源或更新现有资源以增加Azure账单的应用程序?
决定仅将Powershell用于更新 - 如果客户可以查看脚本并验证自己,则不需要考虑。可悲的是,这增加了更新的复杂性,但我们发现这是一个必要的恶。