cloud-custodian / cloud-custodian Rules engine for cloud security, cost optimization, and governance, DSL in yaml for policies to query, filter, and take actions on resources
dastergon / awesome-sre A curated list of Site Reliability and Production Engineering resources
dvorka / hstr bash and zsh shell history suggest box - easily view, navigate, search and manage your command history.
La mise en place est simple, il suffit d’ajouter la dépendance maven au pom.xml et régler quelques conf YAML.
Le reste du code source n’est pas modifié.
Dans la pratique il n’est pas conseillé d’utiliser ce type d’outils en production.
Mais supposons une infra en micro-services, pourquoi ne pas lancer une instance de l’application en mode chaos.
Cela permettrait de valider constamment le comportement des services entre eux.
Terraform est un outil d’infrastructure as code, multi-providers, open source, édité par Hashicorp.
Il permet de créer et modifier ses infrastructures et environements sous la forme de fichiers de configuration de manière prévisible.
Le principal concept se base sur l’état de la cible, il s’agit donc d’une approche d’infrastructure immutable.
Avantages :
Est devenu un standard
Large communauté
Support multi-provides assuré dont AWS, Azure, GCE
Reproductibilité via des modules
Extensibilité par plugin
Inconvénients :
Pas d’interface centralisée
Nécessité de développer
En fonction du provider, pas tous les services ne sont couverts
La création de modules permet de centraliser les usages et d’assurer une bonne réutilisabilité des modèles d’infrastructures par les équipes
Carbon est un outil open source développé par l’équipe Dawn Labs permettant de créer des images sympas affichant du code.
Prenons l’exemple de développeurs voulant diffuser du code sur Twitter, il peut copier coller tout simplement du code mais sera mal affiché ou faire une capture d’écran souvent mal adaptée à la taille de l’écran. C’est là que Carbon intervient.
En se rendant sur le site https://carbon.now.sh il faut copier coller son code, choisir un thème ainsi que le language du code, nous obtenons l’image suivante :
Maintenant nous pouvons partager cette image sur Twitter, documenter nos markdown etc.
AWSTemplateFormatVersion:"2010-09-09"Description:Route53 Hosted Zone + CertificateParameters:DomainName:Type:StringDescription:The DNS name of an Amazon Route 53 hosted zoneAllowedPattern:(?!-)[a-zA-Z0-9-.]{1,63}(?<!-)ConstraintDescription:must be a valid DNS zone name.Resources:DNS:Type:AWS::Route53::HostedZoneProperties:HostedZoneConfig:Comment:!Join['',['Hostedzonefor',!RefDomainName]]Name:!RefDomainNameDomainCertificate:Type:AWS::CertificateManager::CertificateProperties:DomainName:!RefDomainNameDomainValidationOptions:-DomainName:!RefDomainNameValidationDomain:!RefDomainName-DomainName:!Join['',['*.',!RefDomainName]]ValidationDomain:!RefDomainNameSubjectAlternativeNames:-!Join['',['*.',!RefDomainName]]
Lors du traitement de cette stack, il faut penser à vérifier ses mails afin de valider la création du certificat.
Une fois la stack créée, il est nécessaire de manuellement modifier les noms des serveurs DNS du domaine, je ne connais pas de solution industrialisée.
Création du sous domain
Maintenant qu’on a un domain valide, il est possible de créer autant de sous domaines qu’on veut aussi bien le www que rien.
Pour récupérer l’arn du certificat que l’on vient de créer :
aws acm list-certificates –region us-east-1
La stack suivante permet de fournir un S3 qui est un dépôt de fichiers statiques, un CDN (CloudFront) et de lier le tout au domaine.
AWSTemplateFormatVersion:'2010-09-09'Description:Route53 SubdomainParameters:AcmCertificateArn:Type:StringDescription:Domain certificate arn.AllowedPattern:"arn:aws:acm:.*"HostedZone:Type:StringDescription:The DNS name of an existing Amazon Route 53 hosted zone.AllowedPattern:(?!-)[a-zA-Z0-9-.]{1,63}(?<!-)ConstraintDescription:must be a valid DNS zone name.Subdomain:Type:StringDescription:The DNS name of an existing Amazon Route 53 hosted zone.AllowedPattern:(?!-)[a-zA-Z0-9-.]{1,63}(?<!-)ConstraintDescription:must be a valid subdomain name.Mappings:Region2S3WebsiteSuffix:us-east-1:Suffix:.s3-website-us-east-1.amazonaws.comus-west-1:Suffix:.s3-website-us-west-1.amazonaws.comus-west-2:Suffix:.s3-website-us-west-2.amazonaws.comeu-west-1:Suffix:.s3-website-eu-west-1.amazonaws.comap-northeast-1:Suffix:.s3-website-ap-northeast-1.amazonaws.comap-northeast-2:Suffix:.s3-website-ap-northeast-2.amazonaws.comap-southeast-1:Suffix:.s3-website-ap-southeast-1.amazonaws.comap-southeast-2:Suffix:.s3-website-ap-southeast-2.amazonaws.comap-south-1:Suffix:.s3-website-ap-south-1.amazonaws.comus-east-2:Suffix:.s3-website-us-east-2.amazonaws.comsa-east-1:Suffix:.s3-website-sa-east-1.amazonaws.comcn-north-1:Suffix:.s3-website.cn-north-1.amazonaws.com.cneu-central-1:Suffix:.s3-website.eu-central-1.amazonaws.comResources:WebsiteBucket:Type:AWS::S3::BucketProperties:AccessControl:PublicReadWebsiteConfiguration:IndexDocument:index.htmlErrorDocument:error.htmlWebsiteBucketPolicy:Type:AWS::S3::BucketPolicyProperties:Bucket:!RefWebsiteBucketPolicyDocument:Version:2012-10-17Statement:-Sid:PublicReadForGetBucketObjectsEffect:AllowPrincipal:'*'Action:s3:GetObjectResource:!Join['',['arn:aws:s3:::',!RefWebsiteBucket,/*]]WebsiteCDN:Type:AWS::CloudFront::DistributionProperties:DistributionConfig:Comment:!Join['',['CDNfor',!RefSubdomain,'website']]Aliases:-!RefSubdomainEnabled:trueDefaultRootObject:index.htmlIPV6Enabled:falseDefaultCacheBehavior:AllowedMethods:-DELETE-GET-HEAD-OPTIONS-PATCH-POST-PUTTargetOriginId:S3OriginForwardedValues:QueryString:falseCookies:Forward:noneViewerProtocolPolicy:redirect-to-httpsPriceClass:PriceClass_100Restrictions:GeoRestriction:RestrictionType:whitelistLocations:-FRViewerCertificate:AcmCertificateArn:!RefAcmCertificateArnSslSupportMethod:sni-onlyOrigins:-DomainName:!Join['',[!RefWebsiteBucket,'.s3.amazonaws.com']]Id:S3OriginS3OriginConfig:{}WebsiteDNSName:Type:AWS::Route53::RecordSetProperties:HostedZoneName:!Join['',[!RefHostedZone,.]]Name:!RefSubdomainType:AAliasTarget:HostedZoneId:Z2FDTNDATAQYW2DNSName:!GetAtt[WebsiteCDN,DomainName]
La création du CDN est long, il faut s’armer de patience, mais c’est aussi le bon moment pour débuter le transfert du site vers S3.
Une fois la stack créée, le site est disponible à la fois en http et en https. Pour être exact, les requêtes http seront redirigées en https.
Transférer ses données vers S3 peut se faire facilement via l’interface ou bien en ligne de commande.