GCP fournis désormais des VM Windows disposant de docker pré-installé pour faire tourner des containers Windows.
Actuellement les images à utiliser sont:
- windows-2019-for-containers
- windows-2019-core-for-containers
- windows-1809-core-for-containers
- windows-1803-core-for-containers
(source: https://cloud.google.com/compute/docs/images#unshielded-images)
For future reference.
Here are the links for getting Public IPv4 on various clouds.
Azure
curl -H Metadata:true "http://169.254.169.254/metadata/instance/network/interface/0/ipv4/ipAddress/0/publicIpAddress?api-version=2017-08-01&format=text"
AWS
curl http://169.254.169.254/latest/meta-data/public-ipv4
GCP
curl -H "Metadata-Flavor: Google" http://169.254.169.254/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip
Since 169.254.169.254 is a global metadata server for these above cloud vendors, no need to use different domain names.
Une liste de services cloud disposant d'une offre free tier suffisante pour faire tourner un SAAS gratuitement
Un tuto pour provisioner des ressources sur GCP avec Terraform
Une liste des équivalences entre les services AWS et Azure
Les slides de Gruntwork qui résument toutes les bonnes pratiques Terraform présentés dans leur série d'article
Cf. liens précédents:
Workflow proposé par Gruntwork pour les changements d'infrastructure avec Terraform:
- Vérifier les effets du changements avec
terraform plan
- Appliquer le changement en environnement de test avec
terraform apply
- Pusher le changement sur une branche et soumettre une pull-request à reviewer
- Merger la PR sur master après la code review
- Appliquer le changement en environnement de production avec
terraform apply
Des astuces pour utiliser des boucles et des conditions avec Terraform en utilisant le paramètre count
au sein des ressources:
- comme un compteur pour les boucles
- comme un booléen (0=false, 1=true) pour les conditions
On peut ensuite utiliser la fonction element
pour récupérer l'élément d'une liste correspondant à l'indice de count
ou utiliser la fonction replace
pour remplacer 0 ou 1 par des valeurs différentes par exemple.
C'est plutôt tricky mais ça à l'air de faire le job.
Best practices pour Terraform:
- utiliser des modules contenant le code nécessaire au provisinning des services
- appeler les modules depuis les répertoires de configuration spécifiques aux environnements en passant en variables les données spécifiques aux environnements
- séparer les modules et la configuration spécifique aux environnements dans 2 repos git différents afin de pouvoir appeler des versions du module différent selon les environnements (en utilisant les tags git)
ex:
- infrastructure-live-repo
| - dev
| | - app1
| | - app2
| | - db1
| | - vpc
| - test
| | - ...
| - prod
| | - ...
| - mgmt
| | - bastion
| | - ...
| - global
| | - iam
| | - route53
| | - ...
- infrastructure-modules-repo (tags v0.0.1, v0.0.2, ...)
| - app1
| - app2
| - db1
| - vpc
| - bastion
| - ...
Terraform 0.8 est sorti.
Au menu:
- une amélioration de la gestion des conditions (même s'il reste encore énormément de chemin à faire de ce côté)
- Le mode console permettant d'interroger les states et de tester les interpolations
- les ressources peuvent maintenant être dépendantes d'un module
Attention, certains changements provoquent des incompatibilités avec les versions précédentes. Lire la partie upgrade de la release note pour vérifier les changements nécessaires.
Des bonnes pratiques pour gérer son infrastructure avec terraform:
- utiliser un bucket s3 versionné et chiffré plutôt qu'un repo git comme datastore
- isoler chaque environnements dans des states séparés
- isoler chaque rôle (network, database, application, ...) dans des states séparés
bonnes pratiques pour les entrypoints docker
Un tuto pour se faire la main sur OpenShift de RedHat qui permet de deployer un PAAS open source basé sur Docker et Kubernetes
Un how-to pour utiliser nomad avec docker et vagrant
Une bonne introduction à Apache Mesos pour orchestrer des application sous forme de Cgroups ou de containers Docker
Un tuto pour automatiser la création et le déploiement d'images docker dans GoogleCloud avec Jenkins, Packer et Kubernetes
Le contenu du tuto (dockerfiles...) est disponible sur github: https://github.com/GoogleCloudPlatform/kube-jenkins-imager
Un outils pour exporter son infra AWS existante en format Terraform
(via https://github.com/jeekajoo)
Otto automatise l'environnement de développement et de déploiement en production d'une application en se basant sur les autres outils d'Hashicorp (Vagrant, Packer, Terraform & Nomad)
Nomad fourni des services de gestion de cluster et d'ordonnancement de jobs en environnement cloud. C'est fait par Hashicorp, la boite qui développe Vagrant, Terraform et plein d'autres outils sympa.