-
Notifications
You must be signed in to change notification settings - Fork 0
/
azure-pipelines.yml
111 lines (100 loc) · 5.45 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
trigger:
- master
pool:
"default"
variables:
- name: CloudInitContent #La variable qui va stocker la configuration du site
jobs: #Le pipeline est separe sur 2 jobs, un pour la validation et l'autre pour le deploiement
- job: TestValidation
displayName: "Validation du modèle ARM"
steps:
- task: AzureResourceManagerTemplateDeployment@3
displayName: "Validation Key Vaults"
name: 'ValidationKeyVaults'
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'Azure subscription 1(48795d1d-efc3-44f3-a40e-3565ec977a1a)'
subscriptionId: '48795d1d-efc3-44f3-a40e-3565ec977a1a'
action: 'Create Or Update Resource Group'
resourceGroupName: 'RG2' #nom du ressource groupe
location: 'East US'
templateLocation: 'Linked artifact'
csmFile: '$(Build.SourcesDirectory)\KeyVault\azuredeploy.json'
csmParametersFile: '$(Build.SourcesDirectory)\KeyVault\azuredeploy.parameters.json'
overrideParameters: |
-AdminPass $(secret)
deploymentMode: 'Validation' # le mode de deployement 'validation' permet de compiler et valider uniquement
- task: AzureResourceManagerTemplateDeployment@3
displayName: "Validation VM scale sets"
name: 'ValidationVMSS'
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'Azure subscription 1(48795d1d-efc3-44f3-a40e-3565ec977a1a)'
subscriptionId: '48795d1d-efc3-44f3-a40e-3565ec977a1a'
action: 'Create Or Update Resource Group'
resourceGroupName: 'RG1' #nom du ressource groupe
location: 'East US'
templateLocation: 'Linked artifact'
csmFile: '$(Build.SourcesDirectory)\AzureResourceGroup1\azuredeploy.json'
csmParametersFile: '$(Build.SourcesDirectory)\AzureResourceGroup1\azuredeploy.parameters.json'
overrideParameters: '-customData $(CloudInitContent) -adminPassword $(AdminPass)' #changemenet des valeurs des parametres
deploymentMode: 'Validation'
- job: Deployment #Le job de deploiement
displayName: "Déploiement du modèle ARM" #Le nom qui sera affiché lors du deploiement
dependsOn: TestValidation
condition: succeeded()
steps:
- task: AzureResourceManagerTemplateDeployment@3
displayName: "Deploiement Key Vaults"
name: 'DeploiementKeyVaults'
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'Azure subscription 1(48795d1d-efc3-44f3-a40e-3565ec977a1a)'
subscriptionId: '48795d1d-efc3-44f3-a40e-3565ec977a1a'
action: 'Create Or Update Resource Group'
resourceGroupName: 'RG2'
location: 'East US'
templateLocation: 'Linked artifact'
csmFile: '$(Build.SourcesDirectory)\KeyVault\azuredeploy.json' #Le répertoire $(Build.SourcesDirectory) se situe dans l'agent de build
csmParametersFile: '$(Build.SourcesDirectory)\KeyVault\azuredeploy.parameters.json'
overrideParameters: |
-AdminPass $(secret)
deploymentMode: 'Incremental'
- task: AzureKeyVault@2 #Rrecuperation du secret
inputs:
azureSubscription: 'Azure subscription 1(48795d1d-efc3-44f3-a40e-3565ec977a1a)'
KeyVaultName: 'keyvaultdevoir11'
SecretsFilter: 'AdminPass'
RunAsPreJob: false
- task: PowerShell@2
inputs:
targetType: 'inline' #Le powershell s'éxecute en mode inline
script: |
# Lire le contenu du fichier cloud-init.txt dans le dossier AzureResourceGroup1
# et le stocker dans la variable $CloudContent.
$CloudContent = Get-Content -Path .\AzureResourceGroup1\cloud-init.txt -RAW
# Convertir le contenu du fichier texte en chaîne Base64.
# Cela permet de garantir que le contenu peut être utilisé dans des paramètres
# ou des variables qui exigent une chaîne encodée (par exemple, pour les paramètres Azure).
$EncodedContent = [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes($CloudContent))
# Afficher le contenu encodé en Base64 dans les logs pour vérifier le résultat.
Write-Host $encodedContent
# Définir une variable pipeline Azure DevOps nommée CloudInitContent
# et y assigner la valeur encodée en Base64.
# Cette variable peut être utilisée dans d'autres étapes du pipeline.
Write-Host "##vso[task.setvariable variable=CloudInitContent;]$encodedContent"
- task: AzureResourceManagerTemplateDeployment@3
displayName: "Deploiement du VMSS"
name: 'DeploiementVMSS'
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'Azure subscription 1(48795d1d-efc3-44f3-a40e-3565ec977a1a)'
subscriptionId: '48795d1d-efc3-44f3-a40e-3565ec977a1a'
action: 'Create Or Update Resource Group'
resourceGroupName: 'RG1'
location: 'East US'
templateLocation: 'Linked artifact'
csmFile: '$(Build.SourcesDirectory)\AzureResourceGroup1\azuredeploy.json'
csmParametersFile: '$(Build.SourcesDirectory)\AzureResourceGroup1\azuredeploy.parameters.json'
overrideParameters: '-customData $(CloudInitContent) -adminPassword $(AdminPass)'
deploymentMode: 'Incremental'