public void Install(RunningDeployment deployment) { var variables = deployment.Variables; var subscriptionId = variables[SpecialVariables.Action.Azure.SubscriptionId]; var tenantId = variables[SpecialVariables.Action.Azure.TenantId]; var clientId = variables[SpecialVariables.Action.Azure.ClientId]; var password = variables[SpecialVariables.Action.Azure.Password]; var resourceManagementEndpoint = variables.Get(SpecialVariables.Action.Azure.ResourceManagementEndPoint, DefaultVariables.ResourceManagementEndpoint); if (resourceManagementEndpoint != DefaultVariables.ResourceManagementEndpoint) { Log.Info("Using override for resource management endpoint - {0}", resourceManagementEndpoint); } var activeDirectoryEndPoint = variables.Get(SpecialVariables.Action.Azure.ActiveDirectoryEndPoint, DefaultVariables.ActiveDirectoryEndpoint); if (activeDirectoryEndPoint != DefaultVariables.ActiveDirectoryEndpoint) { Log.Info("Using override for Azure Active Directory endpoint - {0}", activeDirectoryEndPoint); } var resourceGroupName = variables[SpecialVariables.Action.Azure.ResourceGroupName]; var deploymentName = !string.IsNullOrWhiteSpace(variables[SpecialVariables.Action.Azure.ResourceGroupDeploymentName]) ? variables[SpecialVariables.Action.Azure.ResourceGroupDeploymentName] : GenerateDeploymentNameFromStepName(variables[SpecialVariables.Action.Name]); var deploymentMode = (DeploymentMode)Enum.Parse(typeof(DeploymentMode), variables[SpecialVariables.Action.Azure.ResourceGroupDeploymentMode]); var template = TemplateReplacement.ResolveAndSubstituteFile(fileSystem, templateFile, filesInPackage, variables); var parameters = !string.IsNullOrWhiteSpace(templateParametersFile) ? parameterNormalizer.Normalize(TemplateReplacement.ResolveAndSubstituteFile(fileSystem, templateParametersFile, filesInPackage, variables)) : null; Log.Info($"Deploying Resource Group {resourceGroupName} in subscription {subscriptionId}.\nDeployment name: {deploymentName}\nDeployment mode: {deploymentMode}"); // We re-create the client each time it is required in order to get a new authorization-token. Else, the token can expire during long-running deployments. Func <IResourceManagementClient> createArmClient = () => { var token = new TokenCredentials(ServicePrincipal.GetAuthorizationToken(tenantId, clientId, password, resourceManagementEndpoint, activeDirectoryEndPoint)); var resourcesClient = new ResourceManagementClient(token) { SubscriptionId = subscriptionId, BaseUri = new Uri(resourceManagementEndpoint), }; resourcesClient.HttpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); resourcesClient.HttpClient.BaseAddress = new Uri(resourceManagementEndpoint); return(resourcesClient); }; CreateDeployment(createArmClient, resourceGroupName, deploymentName, deploymentMode, template, parameters); PollForCompletion(createArmClient, resourceGroupName, deploymentName, variables); }
public string GetSubstitutedTemplateContent(string relativePath, bool inPackage, IVariables variables) { return(replacement.ResolveAndSubstituteFile( () => resolver.Resolve(relativePath, inPackage, variables).Value, fileSystem.ReadFile, variables)); }
private void DeployCloudFormation(RunningDeployment deployment) { Guard.NotNull(deployment, "deployment can not be null"); WriteCredentialInfo(deployment); WaitForStackToComplete(deployment, false); TemplateReplacement.ResolveAndSubstituteFile( fileSystem, templateFile, filesInPackage, deployment.Variables) .Tee(template => DeployStack(deployment, template)); GetOutputVars(deployment); }