Pierre Chesné
Technology Solution Professional
pierrc@microsoft.com
Frederi Mandin
P-Seller
frederi.mandin@edifixio.com
Modélisation, déploiement et
gestion des infrastructures
Cloud : outils et bonnes
pratiques
• Rappel sur le modèle ARM (Azure Resource Manager)
• Déploiement d’infrastructure
– CLI
– PowerShell
– JSON
• Installation d’applications
– PowerShell DSC
– Automation DSC Configuration
– Solutions tiers
Agenda
N° 4
Rappel sur le modèle ARM
N° 5
• Ressources :
VM; Réseau; Network Security Group; Stockage; Load Balancer; IP ; Nic; Groupe de disponibilité; ……
• Groupe de ressource :
Conteneur réunissant les ressources associées ( ex : Une application ; …)
• Fournisseur de ressources :
Service qui fournit les ressources à déployer ( ex : Microsoft.Compute; Microsoft.Storage; Microsoft.Web)
• Modèle Resource Manager :
Fichier JSON (JavaScript Objet Notation) qui définit une ou plusieurs ressources à déployer vers un groupe de
ressources
• Syntaxe déclarative :
Permet de déclarer « Voici ce que je souhaite créer » sans avoir à écrire la séquence de commandes de
programmation pour le créer.
Rappel sur le modèle ARM
Terminologie
N° 6
Rappel sur le modèle ARM
Déploiement d’une VM (« Resource group »)
N° 7
Resource Group
(PS) New-AzureRmResourceGroup `
-Name $RG `
-Location $Location
(CLI) azure group create 
--name $RGName 
--location $Location
• L’appartenance à un groupe de
ressources est exclusive
• Les ressources peuvent être
multi-régions
• Contrôle d’accès (Role-Based
Access Control), audit
Rappel sur le modèle ARM
Déploiement d’une VM (« Network »)
N° 8
• Microsoft.Network/virtualNetworks
• Microsoft.Network/networkInterfaces
• Microsoft.Network/loadBalancers
• Microsoft.Network/networkSecurityGroups
• Microsoft.Network/publicIPAddresses
• Microsoft.Network/routeTables
Network Resource Provider
Virtual Network
Subnet
NetworkInteface
PublicIPAddress
LoadBalancer
NetworkSecurityGroup
Rappel sur le modèle ARM
Déploiement d’une VM (« Storage »)
N° 9
• Microsoft.Storage/storageAccounts
Storage Resource Provider
Rappel sur le modèle ARM
Déploiement d’une VM (Compute)
N° 10
• Microsoft.Compute/availabilitySets
• Microsoft.Compute/virtualMachines
• Microsoft.Compute/virtualMachines/extensions
• Microsoft.Compute/virtualMachineScaleSets
Compute Rresource Provider
Rappel sur le modèle ARM
Déploiement d’une simple VM (Exemple)
N° 11
TCP 3389
Resource Group
SRP
CRP
NRP
Public IP address (PIP)
*.westeurope.cloudapp.azure.com
Nic
Vnet
Sub-Front Sub-Back
Source /protocol/ port
range
Destination /port range
Allow/Deny
NSG
Private IP
Rappel sur le modèle ARM
Déploiement avec un LB (Exemple)
Resource Group
SRP CRP NRP
Public IP address
*.westeurope.cloudapp.azure.com
Nic
Vnet
Sub-1
Private IP
Private IP
BackEnd Pool
Sonde
(TCP ou Url)
Règles :
• TCP/UDP ->BackEnd Poll
(Ex: TCP 443)
Inbound Nat Rules :
• Exposition TCP/UDP N° port
• Redirection sur cible (VM)
TCP/UDP N° port
(ex: TCP 5001 -> TCP 22
TCP 5002 -> TCP 22)
Démonstration
Déploiement de VM avec le
portail
N° 13
Command-Line Interface (CLI)
N° 14
Azure CLI: Installation
« Command-Line Interface »
Les CLI Microsoft Azure offre un ensemble de commandes
multiplateforme open source pour l’utilisation de la plateforme
Microsoft Azure.
Windows installer : http://go.microsoft.com/?linkid=9828653&clcid=0x409
OS X installer : http://go.microsoft.com/fwlink/?linkid=252249&clcid=0x409
Linux installer : http://go.microsoft.com/fwlink/?linkid=253472&clcid=0x409
L’installation des CLI utilise Node.js et NPM (Node Package Manager).
Possibiliter d’une installation dans un “container in a Docker”.
https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-install/
Source code:
https://github.com/azure/azure-xplat-cli
Command-Line Interface (CLI)
Exemple
N° 16
Azure PowerShell
N° 17
Azure PowerShell est un ensemble de modules fournissant des « cmdlet » pour gérer
vos environnements Azure
Installation :
Windows Management Framework 5.0 (https://msdn.microsoft.com/en-
us/powershell/wmf/5.0/requirements)
Install-Module AzureRM (Installation NuGet provider version ‘2.8.5.201’)
Vérification :
Get-Module –ListAvailable
Azure PowerShell
C:Program FilesWindowsPowerShellModules
Azure PowerShell
Exemple
N° 19
JSON
N° 20
• Format léger d’échange de données
• http://json.org/json-fr.html
• Standard de l’industrie
• Format texte complètement indépendant de tout language
• Déclaratif
• Facile à lire ou à écrire pour des humains  (les IT sont
obligés d’installer Visual Studio)
• Schéma JSON
• Schéma de modèle de déploiement (Deployment Template)
• Schéma de modèle de Resource Provider
JSON
Rappels
Azure resource Manager template
N° 22
{
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
Paramètres nécessaires à donner pour le déploiement ( Ex: User; Pwd; Images
…..)
},
"variables": {
Variable avec des valeurs (Ex: Stockage, Network , Nic , LB …..)
},
"resources": [
Resource à déployer ou à mettre à jour en s’appuyant sur les paramètres/variables
]
}
• Référencés sur Azure.com
• https://azure.microsoft.com/en-us/documentation/templates/
• Possibilité de déployer
• Dépôt sur Github
• https://github.com/Azure/azure-quickstart-templates
• Possibilité de déployer
• http://armviz.io
• Contributions de Microsoft ou de la communauté
• Visual Studio Community 2015 (gratuit )
• Portail Azure
• Possibilité de générer les fichiers de configuration ( JSON, SH, PS …) à partir
d’une ressource déjà déployée
• Possibilité de charger une configuration depuis Github
• Possibilité de passer par « Template deployment »
• Possibilité de passer par « Template » (preview)
Bien démarrer avec les « Azure templates »
Plusieurs possibilités
N° 23
Modèle « Azure Template »
« Infrastructure as code »
N° 24
Powershell :
CLI :
Modèle « Azure Template »
N° 25
Modèle « Azure Template »
N° 26
Template Deployement
N° 27
N° 28
Exemple de configuration
JSON
N° 29
PowerShell DSC / Automation
N° 30
• DSC est une plateforme de gestion de Windows PowerShell qui permet de
déployer et gérer les données de configuration des services logiciels, et de
gérer l’environnement dans lequel ces services s’exécutent.
• DSC vous permet également de mettre à jour et de gérer des
existantes.
• DSC est une plateforme déclarative employée pour la configuration, le
déploiement et la gestion des systèmes.
• Application des configurations:
• Mode « Push »
• Mode « Pull »
• DSC s’appuie sur 3 composants
• Scripts PowerShell déclaratifs qui définissent et configurent des instances de ressources.
• Modules ( find-module; Install-Module; get-dscresource; powershellgallery.com …)
• Gestionnaire de configuration local (ou « LCM »)
• L’agent « Microsoft.Powershell.DSC »
PowerShell DSC
Desired State Configuration (rappel)
PowerShell DSC
Compilation Appliqué à :
Fichier MOF de configuration
Nœuds
Scripts de configuration
Mode Push
Configuration
Staging Area
(Contient les
données DSC)Langages et
outils tiers
Définition
(peut inclure du code
classique ou déclaratif)
Staging
• Configuration déclarative
utilisant des instances MOF
standard DMTF
• Configuration calculée pour
chaque noeud
PowerShell
Exécution
La configuration déclarative est
appliquée via des providers
Parser and
Dispatcher
Imperative
ProvidersAvantages de PowerShell :
• Syntaxe declarative
• Intellisense par rapport au schéma
• Validation du schéma (early-binding)
Les providers (ressources)
implémentent les changements
Local
Configuration
Store
Mode Push
Déploiement en PowerShell
Module xPSDesiredStateConfiguration à installer sur son poste
Mode Push
N° 35
Déploiement en PowerShell
Mode Push
N° 36
Déploiement avec fichier de
configuration JSON
À « zipper » et copier dans le repository
Ex: https://moncompte.blob.core.windows.net/confdsc/FourthCoffeeV6.ps1.zip
Mode Push
N° 37
Déploiement avec fichier de
configuration JSON
Mode Pull
Pull Server
(Contient les
données DSC et les
modules)Langages et
outils tiers
Définition
(peut inclure du code
classique ou déclaratif)
Staging
• Configuration déclarative
utilisant des instances MOF
standard DMTF
• Configuration calculée pour
chaque noeud
PowerShell
Exécution
La configuration déclarative est
appliquée via des providers
Parser and
Dispatcher
Imperative
ProvidersAvantages de PowerShell :
• Syntaxe declarative
• Intellisense par rapport au schéma
• Validation du schéma (early-binding)
Les providers (ressources)
implémentent les changements
Local
Configuration
Store
• Console de gestion de
configuration
• Azure Automation DSC
s'appuie sur les concepts
de base introduits dans
PowerShell DSC. (même
fichier de configuration)
• Les serveurs cibles peuvent
être dans Azure ou sur site
• Environnement Windows
ou Linux
Azure Automation DSC
Mode Pull
Démonstartion
PowerShell DSC / Automation
N° 40
24/10/2016
Déploiement automatisé sur Azure avec
ARM & Chef
Frédéri Mandin
EdifiXio
3 core activities
• Consulting
• Managed Services
• System integration
Focus on Public Clouds
Missions
• Deliver the Digital Solutions which represent an actual competitiveness or productivity
challenge
• Deliver an industrial robustness combined with a unique agility and creativity.
Microsoft
Azure
Agenda
L’architecture à déployer
Architecture Chef générale
Le processus de déploiement
Demo
Les bonus Chef
Les autres outils
Architecture cible
Architecture Chef
Processus de déploiement
Azure Resource Manager
• Pour les composants Azure
– Storage account
– VMs
– Azure Database
– Load Balancer
– NSG
– Redis Cache
Chef
• Pour les composants dans les VMs
– Pour les middleware TomCat dans les VMs et leur configuration
– Pour l’application elle-même (package .war)
– Pour les scripts BD
– Application des policy de sécurité et moyens d’accès (SSHd et clés)
Powershell script
Script powershell
ARM
Les recettes Chef
Les recettes
Un environnement
Une node
Tout est prêt, on fait cuire
Bonus Chef
Maintien des configurations
• Exécution régulière préventive des recettes
– Au reboot
– De manière planifiée
Restauration d’un état attendu
 Exécution corrective des recettes
Mise à jour d’un composant dans la VM
 Mode idempotent
Outils disponibles
123, rue Jules Guesde
92300 Levallois-Perret
+33 6 79 12 15 83
VOS INTERLOCUTEURS
Frédéri Mandin
frederi.mandin@edifixio.com
@CloudInTheAlps
N° 60
@microsoftfrance @Technet_France @msdev_fr
N° 61
N° 62

Modélisation, déploiement et gestion des infrastructures Cloud : outils et bonnes pratiques

  • 2.
  • 3.
    Modélisation, déploiement et gestiondes infrastructures Cloud : outils et bonnes pratiques
  • 4.
    • Rappel surle modèle ARM (Azure Resource Manager) • Déploiement d’infrastructure – CLI – PowerShell – JSON • Installation d’applications – PowerShell DSC – Automation DSC Configuration – Solutions tiers Agenda N° 4
  • 5.
    Rappel sur lemodèle ARM N° 5
  • 6.
    • Ressources : VM;Réseau; Network Security Group; Stockage; Load Balancer; IP ; Nic; Groupe de disponibilité; …… • Groupe de ressource : Conteneur réunissant les ressources associées ( ex : Une application ; …) • Fournisseur de ressources : Service qui fournit les ressources à déployer ( ex : Microsoft.Compute; Microsoft.Storage; Microsoft.Web) • Modèle Resource Manager : Fichier JSON (JavaScript Objet Notation) qui définit une ou plusieurs ressources à déployer vers un groupe de ressources • Syntaxe déclarative : Permet de déclarer « Voici ce que je souhaite créer » sans avoir à écrire la séquence de commandes de programmation pour le créer. Rappel sur le modèle ARM Terminologie N° 6
  • 7.
    Rappel sur lemodèle ARM Déploiement d’une VM (« Resource group ») N° 7 Resource Group (PS) New-AzureRmResourceGroup ` -Name $RG ` -Location $Location (CLI) azure group create --name $RGName --location $Location • L’appartenance à un groupe de ressources est exclusive • Les ressources peuvent être multi-régions • Contrôle d’accès (Role-Based Access Control), audit
  • 8.
    Rappel sur lemodèle ARM Déploiement d’une VM (« Network ») N° 8 • Microsoft.Network/virtualNetworks • Microsoft.Network/networkInterfaces • Microsoft.Network/loadBalancers • Microsoft.Network/networkSecurityGroups • Microsoft.Network/publicIPAddresses • Microsoft.Network/routeTables Network Resource Provider Virtual Network Subnet NetworkInteface PublicIPAddress LoadBalancer NetworkSecurityGroup
  • 9.
    Rappel sur lemodèle ARM Déploiement d’une VM (« Storage ») N° 9 • Microsoft.Storage/storageAccounts Storage Resource Provider
  • 10.
    Rappel sur lemodèle ARM Déploiement d’une VM (Compute) N° 10 • Microsoft.Compute/availabilitySets • Microsoft.Compute/virtualMachines • Microsoft.Compute/virtualMachines/extensions • Microsoft.Compute/virtualMachineScaleSets Compute Rresource Provider
  • 11.
    Rappel sur lemodèle ARM Déploiement d’une simple VM (Exemple) N° 11 TCP 3389 Resource Group SRP CRP NRP Public IP address (PIP) *.westeurope.cloudapp.azure.com Nic Vnet Sub-Front Sub-Back Source /protocol/ port range Destination /port range Allow/Deny NSG Private IP
  • 12.
    Rappel sur lemodèle ARM Déploiement avec un LB (Exemple) Resource Group SRP CRP NRP Public IP address *.westeurope.cloudapp.azure.com Nic Vnet Sub-1 Private IP Private IP BackEnd Pool Sonde (TCP ou Url) Règles : • TCP/UDP ->BackEnd Poll (Ex: TCP 443) Inbound Nat Rules : • Exposition TCP/UDP N° port • Redirection sur cible (VM) TCP/UDP N° port (ex: TCP 5001 -> TCP 22 TCP 5002 -> TCP 22)
  • 13.
    Démonstration Déploiement de VMavec le portail N° 13
  • 14.
  • 15.
    Azure CLI: Installation «Command-Line Interface » Les CLI Microsoft Azure offre un ensemble de commandes multiplateforme open source pour l’utilisation de la plateforme Microsoft Azure. Windows installer : http://go.microsoft.com/?linkid=9828653&clcid=0x409 OS X installer : http://go.microsoft.com/fwlink/?linkid=252249&clcid=0x409 Linux installer : http://go.microsoft.com/fwlink/?linkid=253472&clcid=0x409 L’installation des CLI utilise Node.js et NPM (Node Package Manager). Possibiliter d’une installation dans un “container in a Docker”. https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-install/ Source code: https://github.com/azure/azure-xplat-cli
  • 16.
  • 17.
  • 18.
    Azure PowerShell estun ensemble de modules fournissant des « cmdlet » pour gérer vos environnements Azure Installation : Windows Management Framework 5.0 (https://msdn.microsoft.com/en- us/powershell/wmf/5.0/requirements) Install-Module AzureRM (Installation NuGet provider version ‘2.8.5.201’) Vérification : Get-Module –ListAvailable Azure PowerShell C:Program FilesWindowsPowerShellModules
  • 19.
  • 20.
  • 21.
    • Format légerd’échange de données • http://json.org/json-fr.html • Standard de l’industrie • Format texte complètement indépendant de tout language • Déclaratif • Facile à lire ou à écrire pour des humains  (les IT sont obligés d’installer Visual Studio) • Schéma JSON • Schéma de modèle de déploiement (Deployment Template) • Schéma de modèle de Resource Provider JSON Rappels
  • 22.
    Azure resource Managertemplate N° 22 { "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { Paramètres nécessaires à donner pour le déploiement ( Ex: User; Pwd; Images …..) }, "variables": { Variable avec des valeurs (Ex: Stockage, Network , Nic , LB …..) }, "resources": [ Resource à déployer ou à mettre à jour en s’appuyant sur les paramètres/variables ] }
  • 23.
    • Référencés surAzure.com • https://azure.microsoft.com/en-us/documentation/templates/ • Possibilité de déployer • Dépôt sur Github • https://github.com/Azure/azure-quickstart-templates • Possibilité de déployer • http://armviz.io • Contributions de Microsoft ou de la communauté • Visual Studio Community 2015 (gratuit ) • Portail Azure • Possibilité de générer les fichiers de configuration ( JSON, SH, PS …) à partir d’une ressource déjà déployée • Possibilité de charger une configuration depuis Github • Possibilité de passer par « Template deployment » • Possibilité de passer par « Template » (preview) Bien démarrer avec les « Azure templates » Plusieurs possibilités N° 23
  • 24.
    Modèle « AzureTemplate » « Infrastructure as code » N° 24
  • 25.
    Powershell : CLI : Modèle« Azure Template » N° 25
  • 26.
    Modèle « AzureTemplate » N° 26 Template Deployement
  • 27.
  • 28.
  • 29.
  • 30.
    PowerShell DSC /Automation N° 30
  • 31.
    • DSC estune plateforme de gestion de Windows PowerShell qui permet de déployer et gérer les données de configuration des services logiciels, et de gérer l’environnement dans lequel ces services s’exécutent. • DSC vous permet également de mettre à jour et de gérer des existantes. • DSC est une plateforme déclarative employée pour la configuration, le déploiement et la gestion des systèmes. • Application des configurations: • Mode « Push » • Mode « Pull » • DSC s’appuie sur 3 composants • Scripts PowerShell déclaratifs qui définissent et configurent des instances de ressources. • Modules ( find-module; Install-Module; get-dscresource; powershellgallery.com …) • Gestionnaire de configuration local (ou « LCM ») • L’agent « Microsoft.Powershell.DSC » PowerShell DSC Desired State Configuration (rappel)
  • 32.
    PowerShell DSC Compilation Appliquéà : Fichier MOF de configuration Nœuds Scripts de configuration
  • 33.
    Mode Push Configuration Staging Area (Contientles données DSC)Langages et outils tiers Définition (peut inclure du code classique ou déclaratif) Staging • Configuration déclarative utilisant des instances MOF standard DMTF • Configuration calculée pour chaque noeud PowerShell Exécution La configuration déclarative est appliquée via des providers Parser and Dispatcher Imperative ProvidersAvantages de PowerShell : • Syntaxe declarative • Intellisense par rapport au schéma • Validation du schéma (early-binding) Les providers (ressources) implémentent les changements Local Configuration Store
  • 34.
    Mode Push Déploiement enPowerShell Module xPSDesiredStateConfiguration à installer sur son poste
  • 35.
  • 36.
    Mode Push N° 36 Déploiementavec fichier de configuration JSON À « zipper » et copier dans le repository Ex: https://moncompte.blob.core.windows.net/confdsc/FourthCoffeeV6.ps1.zip
  • 37.
    Mode Push N° 37 Déploiementavec fichier de configuration JSON
  • 38.
    Mode Pull Pull Server (Contientles données DSC et les modules)Langages et outils tiers Définition (peut inclure du code classique ou déclaratif) Staging • Configuration déclarative utilisant des instances MOF standard DMTF • Configuration calculée pour chaque noeud PowerShell Exécution La configuration déclarative est appliquée via des providers Parser and Dispatcher Imperative ProvidersAvantages de PowerShell : • Syntaxe declarative • Intellisense par rapport au schéma • Validation du schéma (early-binding) Les providers (ressources) implémentent les changements Local Configuration Store
  • 39.
    • Console degestion de configuration • Azure Automation DSC s'appuie sur les concepts de base introduits dans PowerShell DSC. (même fichier de configuration) • Les serveurs cibles peuvent être dans Azure ou sur site • Environnement Windows ou Linux Azure Automation DSC Mode Pull
  • 40.
  • 41.
    24/10/2016 Déploiement automatisé surAzure avec ARM & Chef Frédéri Mandin
  • 42.
    EdifiXio 3 core activities •Consulting • Managed Services • System integration Focus on Public Clouds Missions • Deliver the Digital Solutions which represent an actual competitiveness or productivity challenge • Deliver an industrial robustness combined with a unique agility and creativity. Microsoft Azure
  • 43.
    Agenda L’architecture à déployer ArchitectureChef générale Le processus de déploiement Demo Les bonus Chef Les autres outils
  • 44.
  • 45.
  • 46.
    Processus de déploiement AzureResource Manager • Pour les composants Azure – Storage account – VMs – Azure Database – Load Balancer – NSG – Redis Cache Chef • Pour les composants dans les VMs – Pour les middleware TomCat dans les VMs et leur configuration – Pour l’application elle-même (package .war) – Pour les scripts BD – Application des policy de sécurité et moyens d’accès (SSHd et clés)
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
    Tout est prêt,on fait cuire
  • 55.
    Bonus Chef Maintien desconfigurations • Exécution régulière préventive des recettes – Au reboot – De manière planifiée Restauration d’un état attendu  Exécution corrective des recettes Mise à jour d’un composant dans la VM  Mode idempotent
  • 56.
  • 57.
    123, rue JulesGuesde 92300 Levallois-Perret +33 6 79 12 15 83 VOS INTERLOCUTEURS Frédéri Mandin [email protected] @CloudInTheAlps
  • 58.
  • 59.
  • 60.

Notes de l'éditeur

  • #47 Les credentials et données sensibles peuvent être stockés sur le Chef Server, dans un Vault. Les recettes sont versionnées, dans le chef-server
  • #59 Extensions Azure VMs : Chef pour Windows/Linux Puppet pour Windows DSC pour Windows