devops day - infrastructure as a code

30
Michel Hubert MVP Azure Idriss Selhoum Infrastructure as a Code

Upload: cellenza

Post on 17-Jul-2015

207 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: DevOps Day - Infrastructure As A Code

Michel Hubert – MVP Azure

Idriss Selhoum

Infrastructure as a Code

Page 2: DevOps Day - Infrastructure As A Code

Sommaire

• Infra-as-code, kesako ?

• PowerShell DSC

• Azure Resource Manager

• PowerShell v5 : OneGet et JEA

• Q&A

Page 3: DevOps Day - Infrastructure As A Code

Kesako ?

Infrastructure as Code

Page 4: DevOps Day - Infrastructure As A Code

Infrastructure as Code

• Automatisation des procesus

▪ Provisioning d’infrastructure (Compute, Network and Storage)

▪ Installation et configuration

• Versioning des scripts de provisioning et d’automatisation

▪ Evolution des infrastructures

▪ Réduire les erreurs liées aux interventions humaines

• Réduire le temps de mise à disposition des plateformes

DevOps

Page 5: DevOps Day - Infrastructure As A Code

PowerShell DSC

Page 6: DevOps Day - Infrastructure As A Code

6

Desired State Configuration (Intro)

Operating System

Middleware

Applications & Services

Virtualization

Application Deployment

Desired State Configuration

Page 7: DevOps Day - Infrastructure As A Code

7

Windows OS

PowerShell v4

Local Configuration Manager WINRM

DSC Resources

DSC

Desired State Configuration (Composants)

Page 8: DevOps Day - Infrastructure As A Code

8

IIS

IIS

SQL

APP

Web Server

Master Deployment

Push

IIS

IIS

SQL

APP

Server

Master Deployment

Pull

Release Manage Deployment Agent

WinRM (HTTP & HTTPS)

Desired State Configuration

Page 9: DevOps Day - Infrastructure As A Code

9

Authoring Managed Object Framework Apply configuration

1- Vérifier que les ressources DSC sont installées

2- Vérifier les pré-requis sur la machine (EnableRemoting et WinRM)

2- Création de script DSC (fichier powershell .ps1)

3 - Création du fichier de configuration (.psd1)

4- Lancement de la configuration

5 - Génération du fichier .MOF 6 - Exécution de la configuration souhaitée par le LCM (Start-DSCConfiguration)

Desired State Configuration (Etapes)

Page 10: DevOps Day - Infrastructure As A Code

10

Authoring

Managed Object Framework

Apply configuration

Page 11: DevOps Day - Infrastructure As A Code

demo

Page 12: DevOps Day - Infrastructure As A Code

12

Ressources

• Les modules PowerShell utilisées par le LCM pour appliquer une

configuration

• Get-TargetResource

• Set-TargetResource

• Test-TargetResource

• Microsoft fournit des modules (ex: xWebAdmininstation, xWebSite)

• Les modules DSC sont extensibles

Page 13: DevOps Day - Infrastructure As A Code

demo

Page 14: DevOps Day - Infrastructure As A Code

Infra-as-a-code pour Azure

Azure Resource Manager

Page 15: DevOps Day - Infrastructure As A Code

Resource Group

Resource Group est une unitéde gestion

Lifecycle: déploiement, mise à jour, suppression, statut

Identity: devient une partie de l’identité des ressources contenues

Grouping: Mesures, factration, quota: appliqué à un groupe

Access Control: Support des permissions RBAC

RESOURCE GROUP

Page 16: DevOps Day - Infrastructure As A Code

Cycle de vie

Question:

Dois-je mettre mes ressources dans un seul groupe ou plusieurs?

Indice:

Ont-ils le même cycle de vie et le mêmeniveau de management ?

Réponse:

A vous de decider .

Page 17: DevOps Day - Infrastructure As A Code

Templates

Azure Templates permettent de :• Assurer l’idempotence

• Simplifier l’Orchestration des ressources

• Simplifier le Roll-back

• Fournir une configuration Cross-Ressource

Azure Templates sont : • Des fichiers sources, checked-in

• Décrivent les ressources et leurs dépendances

(VMs, WebSites, DBs) e les connexions (config,

LB sets)

• Paramétrables (input/output)

SQL - A Website VirtualMachines

SQL-AWebsite[SQL CONFIG] VM (2x)

DEPENDS ON SQLDEPENDS ON SQL

SQL Config

Page 18: DevOps Day - Infrastructure As A Code

Resource Tag

• Assigner des notes aux ressources

• Tag = Clé / Valeur

• Exemple :

▪ Environnement = {Dev, Staging, Prod}

▪ Owner = « … »

▪ Cost Center = 12345

Page 19: DevOps Day - Infrastructure As A Code

Role Based Access

Page 20: DevOps Day - Infrastructure As A Code

demo

Azure Resource Manager

Page 21: DevOps Day - Infrastructure As A Code

OneGet et JEA

PowerShell v5 - preview

Page 22: DevOps Day - Infrastructure As A Code

OneGet

• Le chainon manquant ? Un compagnon indispensable à

PowerShell DSC

• OneGet est un jeu de comdlets powershell

• OnetGet permet d’installer des packages logiciels à partir

de bibliothèques internes ou externes (ex : Chocolatey)

• OneGet efficace pour se constituer un « Master »

Page 23: DevOps Day - Infrastructure As A Code

OneGet

• Import-Module –Name OneGet

• Get-Command –Module OneGet

• register-packagesource -Name chocolatey -

Provider PSModule -Trusted -Location

http://chocolatey.org/api/v2/ -Verbose

• Find-Package -Name paint.net,

notepadplusplus |

Install-Package -Force

Page 24: DevOps Day - Infrastructure As A Code

demo

PowerShell OneGet

Page 25: DevOps Day - Infrastructure As A Code

PS> Enter-PSSession Server1FAIL! – Talk to your supervisor for assistance

“Jeffrey I need to be admin on Server1 to restart SQL”

“No Eddie.

Just connect to the ‘Maintenance’ EndPoint”

PS> Enter-PSSession Server1 –Config MaintenanceServer1> Restart-Service MSSQLSERVER

Server1

Server1> Steal-SecretsError: You are not authorized to Steal-Secrets

Page 26: DevOps Day - Infrastructure As A Code

JEA – Just Enough Administration

• La plus grande faille de sécurité : les administrateurs !

• Objectif : Réduire les droits admin▪ Réduire le nb de personnes avec les droits Admin

▪ Réduire le périmètre des privileges admin

▪ Fournir au plus juste des besoins des privileges admin

• Basé sur PowerShell DSC▪ JeaToolkit

– Définir les jeux de commandes supportés

▪ JeaEndPoint

– Point de Management où les utilisateurs sont autorisés

▪ JeaEndPointAccount

– Compte local avec les privileges admin

Page 27: DevOps Day - Infrastructure As A Code

Exemple

JeaToolkit SQLMaintenace{ Name = ‘SQLMaintenance’

CommandSpecs = @'Module,Name,Parameter,ValidateSet,ValidatePatternSQL,GET-*

,Get-Process,Get-Service,Stop-Process,Name,calc;notepad,Restart-Service,Name,,^SQL

'@}

Page 28: DevOps Day - Infrastructure As A Code

demo

PowerShell JEA

Page 29: DevOps Day - Infrastructure As A Code

Merci pour votre attention

Q & A

Page 30: DevOps Day - Infrastructure As A Code

© 2012 Microsoft Corporation. Tous droits réservés. Microsoft, Windows et les autres noms de produits sont des marques déposées ou des marques commerciales de Microsoft aux États-Unis et/ou dans d'autres pays.

Les informations contenues dans ce document sont fournies uniquement à titre indicatif. Elles représentent l'opinion actuelle de Microsoft Corporation sur les points cités à la date de cette présentation. Microsoft s'adapte aux conditions fluctuantes du marché et ce document ne doit

pas être interprété comme un engagement de la part de Microsoft ; de plus, Microsoft ne peut pas garantir la véracité de toute information présentée après la date de la présentation. MICROSOFT EXCLUT TOUTE GARANTIE, EXPRESSE, IMPLICITE OU STATUTAIRE, EN CE QUI

CONCERNE CETTE PRÉSENTATION.