我正在设置生产环境,并希望保护与环境相关的变量。 目前,每个环境都有其自己的应用程序参数文件,该文件运行良好,但我不希望团队中的每个开发人员都知道生产连接字符串和可能会出现在其中的其他敏感内容。
所以我正在寻找所有可能的可能性。 我已经看到在我目前用于CI / CD的Azure DevOps中,存在一些可能的变量替换(xml转换)。它可以在SF项目中使用吗? 我在另一个项目中看到了与章鱼类似的东西。 是否有其他工具可以帮助我安全(轻松)地按环境管理变量? 我最终可以使用KeyVault这样做吗? 有什么建议吗? 谢谢
所以我想要的就是与此类似的东西,它可以分离并注入值。
答案 0 :(得分:2)
您可以在部署XML之前将其转换为ApplicationParameter文件,以更新其中的值。
另一种选择是使用Powershell更新应用程序并将参数作为参数传递给脚本。
Start-ServiceFabricApplicationUpgrade
命令接受带有参数的哈希表作为参数,从技术上讲,VSTS \ DevOps中的内置任务将哈希表中的应用程序参数转换为脚本,如下所示:
void inputDataInVector (int v[])
{
int i = 0; value = 0;
while(value != -1)
{
cin >> value;
v[i] = value;
i++;
}
}
int main(void)
{
int v[] = {0};
int *p = v;
inputDataInVector(p);
return 0;
}
请记住,现有的VSTS Task还具有其他操作,例如将包复制到SF并在映像存储区中注册应用程序版本,则需要将其复制。您可以从服务结构项目中的#Get the existing parameters
$app = Get-ServiceFabricApplication -ApplicationName "fabric:/AzureFilesVolumePlugin"
#Create a temp hashtable and populate with existing values
$parameters = @{ }
$app.ApplicationParameters | ForEach-Object { $parameters.Add($_.Name, $_.Value) }
#Replace the desired parameters
$parameters["test"] = "123test" #Here you would replace with your variable, like $env:username
#Upgrade the application
Start-ServiceFabricApplicationUpgrade -ApplicationName "fabric:/AzureFilesVolumePlugin" -ApplicationParameter $parameters -ApplicationTypeVersion "6.4.617.9590" -UnmonitoredAuto
文件复制完整脚本,然后将其替换为您的更改。另一种方法是获取VSTS任务here的源代码并添加您的更改。
如果您打算使用KeyVault,我建议应用程序直接在KeyVault上访问值,而不是将其传递给SF,这样,您可以在KeyVault中更改值而无需重新部署应用程序。在部署中,您将仅通过KeyVault凭据\配置。