Prise en main
Démarrer
Le manager Dormeto s'exécute dans votre compte AWS. Il fournit le tableau de bord et l'API, et découvre vos équilibreurs de charge. Il installe les routeurs là où des workloads sont mis en veille. Vous l'installez à partir d'une release versionnée. Utilisez la CLI dormeto, qui exécute Terraform pour vous dans votre compte, ou votre propre Terraform. Il n'utilise jamais CloudFormation.
11 min de lectureManager 0.21.0
Estimation préalable
Avant toute installation, dormeto aws estimate parcourt vos comptes et estime les économies que Dormeto vous ferait réaliser. Elle indique les workloads inactifs, la durée de leur inactivité et ce que rapporterait leur mise en veille.
Installez l'outil en ligne de commande avec l'une des méthodes suivantes :
brew install dormeto/tap/dormeto
curl -fsSL https://dormeto.com/install.sh | sh
Homebrew et le script installent le même programme. Le script vérifie l'empreinte
SHA-256 du fichier téléchargé, l'installe dans ~/.local/bin et n'utilise jamais sudo.
Sous Windows, téléchargez dormeto_<version>_windows_amd64.zip depuis la
dernière release, décompressez-le et placez
dormeto.exe dans un dossier de votre PATH. Lancez ensuite l'estimation :
dormeto aws estimate --profile <profile> --uptime
Cette commande fonctionne en lecture seule. Elle se contente de lister et de lire des ressources (équilibreurs de charge, instances, services, métriques, prix), puis écrit un rapport sur votre machine. Elle ne communique qu'avec AWS et les API de vos propres clusters, sans télémétrie ni vérification de mise à jour. Les options (organisations, régions, rapports) sont documentées dans le dépôt Dormeto/cli.
Prérequis
- Des identifiants d'administrateur pour le compte et la région du manager.
- Une organisation AWS. Le manager en liste les comptes au moyen d'une politique de délégation du compte de gestion. Il lit chacun d'eux avec un rôle créé dans le compte (Accès à
l'organisation). Un compte seul, hors de toute organisation, convient aussi. La CLI le propose. Avec Terraform, vous définissez
discovery_mode = "account"et omettezorganization_id. - Facultatif : un domaine pour le tableau de bord, et sa zone Route 53. Son certificat, dans us-east-1, couvre l'hôte du tableau de bord et son sous-domaine
auth.. Sans domaine, le tableau de bord est servi sur un hôtecloudfront.net. - Facultatif : une identité SES vérifiée pour envoyer les invitations. À défaut, Cognito les envoie lui-même (environ 50 par jour).
Vous pouvez créer les rôles de vos autres comptes avant ou après le manager. Celui-ci les vérifie à chaque exécution de la découverte et signale ce qui manque (Accès à l'organisation).
Installation
Deux façons d'installer le même manager, à partir de la même version. La CLI dormeto est la plus simple :
elle demande ce dont elle a besoin, le vérifie, et exécute Terraform pour vous dans votre compte. Il n'y a rien d'autre
à installer, ni d'état Terraform à conserver. Avec votre propre Terraform, le manager est un module dans une
configuration que vous gérez.
Avec la CLI dormeto Recommandé
- Elle demande ce dont elle a besoin, puis vérifie votre compte, en lecture seule.
- Elle crée le bucket d'installation et le projet CodeBuild.
- Un premier build télécharge la version et Terraform, les vérifie, et enregistre le plan.
- La CLI montre le plan. Vous confirmez.
- Un second build applique exactement ce plan : le manager est créé.
- La CLI vérifie que le tableau de bord répond. Chaque administrateur reçoit une invitation.
La commande installée pour l'estimation (Estimation préalable) installe aussi le manager, avec les droits d'administrateur du compte du manager :
aws sso login --profile <profile>
dormeto aws install --profile <profile>
# without a terminal: every answer as a flag; it stops after the plan, then apply that plan
dormeto aws install --profile <profile> --admin-emails you@example.com
dormeto aws install apply --profile <profile>
--management-profile <profile> déploie aussi l'accès à l'organisation. Toutes les options :
Install the manager.
Avec votre propre Terraform
- terraform init télécharge le module depuis la version.
- terraform plan -out lit votre compte et enregistre le plan.
- Vous lisez le plan.
- terraform apply applique ce plan enregistré : le manager est créé par appels d'API AWS.
- L'état est enregistré dans votre backend.
- Vous ouvrez la sortie dashboard_url. Chaque administrateur reçoit une invitation.
Terraform 1.9 ou version ultérieure, avec des identifiants d'administrateur du compte du manager. Dans votre propre configuration Terraform, avec votre backend d'état habituel :
provider "aws" {
region = "eu-west-1"
}
module "dormeto" {
source = "https://releases.dormeto.com/manager/0.21.0/terraform-aws-dormeto-0.21.0.zip//modules/manager"
env = "prod"
organization_id = "o-exampleorgid"
admin_emails = ["you@example.com"]
}
output "dashboard_url" {
value = module.dormeto.dashboard_url
}
terraform init
terraform plan -out=dormeto.tfplan
terraform apply dormeto.tfplan
La release contient le code compilé du manager et le routeur qu'il installe. Rien d'autre n'est téléchargé lors du plan ou de l'apply. Ses fichiers et leurs sommes de contrôle SHA-256 figurent dans SHA256SUMS. Le numéro de la dernière version figure dans latest.json. Toutes les variables d'entrée du module sont décrites dans Configuration.
Domaine personnalisé et SES
domain = {
dashboard = "dormeto.example.com"
auth = "auth.dormeto.example.com"
certificate_arn = "arn:aws:acm:us-east-1:111122223333:certificate/…"
zone_id = "Z0123456789ABCDEFGHIJ"
}
ses_identity = "example.com"
email_from = "Dormeto <no-reply@example.com>"
Accès à l'organisation
Le module crée lui-même les rôles du compte du manager. Chaque autre compte à découvrir reçoit DmtDiscoveryRole. Chaque compte où des workloads sont mis en veille reçoit DmtCommandRole. Ils viennent du module d'accès ou du script AWS CLI de la même release, ou de dormeto aws install avec
--management-profile. Le compte de gestion reçoit la politique de délégation
(Accès à l'organisation). Les workloads sur EKS ont aussi besoin des droits
de Dormeto dans leur cluster (Kubernetes).
Première connexion
Chaque adresse indiquée dans admin_emails reçoit une invitation contenant un mot de passe temporaire
valable 7 jours. Ouvrez dashboard_url, connectez-vous, choisissez un mot de passe et, si vous le
souhaitez, ajoutez un second facteur. Dans Discovery, cliquez sur Run now pour lire
votre organisation. Le panneau Organization access liste les comptes dont les rôles sont absents.
Rafraîchissement sur événement
La découverte s'exécute selon sa fréquence de rafraîchissement (quotidienne par défaut). Dans Discovery, les réglages Perimeter permettent d'activer le rafraîchissement sur événement. Le manager installe alors un relais dans chaque compte doté du rôle de commande et d'un trail CloudTrail. Les modifications d'équilibreurs de charge apparaissent en 5 minutes environ. Si vous désactivez ce rafraîchissement, les relais sont supprimés à l'exécution suivante.
Mettre à jour le manager
Trois façons de passer le manager à une version plus récente, chacune montrant le plan avant de l'appliquer. La CLI et le tableau de bord mettent à jour un manager installé avec la CLI. Votre propre Terraform met à jour celui qu'il a installé.
Avec la CLI dormeto Recommandé
- dormeto aws install relit les réponses de votre dernière exécution dans le bucket d'installation.
- Elle vérifie votre compte et la version, en lecture seule.
- Un premier build télécharge la nouvelle version et Terraform, les vérifie, et enregistre le plan.
- La CLI montre ce qui change. Vous confirmez.
- Un second build applique exactement ce plan : le manager est mis à jour.
- Vous ouvrez le tableau de bord, dans la nouvelle version. Sa vue Routers propose les mises à jour des routeurs.
Relancez l'installation : elle reprend vos réponses, puis montre le plan à confirmer.
dormeto aws install --profile <profile> # the latest release
dormeto aws install --profile <profile> --version <version>
--tag key=value pose des tags sur les ressources du manager (CLI 0.3.0 et suivantes). --management-profile applique de nouveau l'accès à l'organisation.
Avec votre propre Terraform
- Vous modifiez la version dans source, à deux endroits : le chemin et le nom du fichier.
- terraform init télécharge le nouveau module depuis la version.
- terraform plan -out lit votre compte et enregistre le plan.
- Vous lisez ce qui change.
- terraform apply applique ce plan : le manager est mis à jour, l'état enregistré dans votre backend.
- Vous ouvrez le tableau de bord, dans la nouvelle version. Sa vue Routers propose les mises à jour des routeurs.
Modifiez la version dans source, à deux endroits : le chemin et le nom du fichier. Puis :
terraform init
terraform plan -out=dormeto.tfplan
terraform apply dormeto.tfplan
Pour mettre à jour depuis la CLI ou le tableau de bord, la CLI peut reprendre cette installation : Adopting a manager installed with Terraform.
Depuis le tableau de bord Après une installation CLI
- Dans la page Update, un administrateur choisit une version, lit ses notes et choisit Prepare.
- L'API du manager dépose une demande dans le bucket d'installation.
- Une règle EventBridge lance le build d'installation.
- Le build vérifie la demande, télécharge la version et Terraform, et enregistre le plan.
- La page montre ce qui change. Confirm envoie une seconde demande.
- Un second build applique exactement ce plan. La page le suit jusqu'au bout.
Il faut un manager 0.12.0 ou plus récent, installé avec dormeto aws install (CLI 0.2.0 ou plus récente). Les administrateurs ouvrent Update, choisissent une version, puis Prepare et
Confirm. La même page peut vérifier chaque jour les nouvelles versions.
Une mise à jour ne change que le manager, avec les réglages appliqués en dernier. Lorsqu'une version le demande dans la page Versions, appliquez de nouveau les accès des comptes membres : Accès à l'organisation.
Dans sa vue Routers, le manager propose ensuite les mises à jour de routeur que la version embarque.
Routeurs et workloads depuis la CLI
Il faut la CLI 0.4.0 ou plus récente et un manager 0.15.0 ou plus récent. keep-awake et resume, plus bas, demandent la CLI 0.5.0. Listez les routeurs et les workloads et mettez des routeurs à jour depuis votre poste, avec le profil AWS de l'installation :
dormeto aws routers list --outdated
dormeto aws workloads list --tag team=payments --state ASLEEP
dormeto aws routers upgrade --tag team=payments # ou --all ; --dry-run n'affiche que le plan
routers upgrade affiche le plan, avec les routeurs qu'il laisse de côté et pourquoi (écrits en Terraform, déjà à jour, occupés par une opération). Il demande confirmation. --yes est requis sans terminal, et --json affiche le résultat pour un script. --tag clé=valeur sélectionne les routeurs qui servent un workload portant ces tags Dormeto.
Pour garder des workloads éveillés, par exemple autour d'un job de CI, et pour définir des horaires (Horaires) :
dormeto aws workloads keep-awake prod-eu/w-1 --for 1h --wait
dormeto aws workloads resume prod-eu/w-1
dormeto aws workloads schedule set --tag team=payments --file schedule.json
keep-awake réveille le workload s'il est en veille et l'empêche de se mettre en veille pendant 7 jours au plus (--for ou --until). --wait rend la main quand il est éveillé, pour qu'une étape de CI continue, et resume y met fin. keep-awake et resume demandent la CLI 0.5.0 et un manager 0.15.0 ou plus récent. Les horaires demandent la CLI 0.5.0, un manager 0.16.0 et des routeurs 0.31.0. --tag sélectionne tous les workloads portant ces tags.
L'appelant a besoin de execute-api:Invoke sur les routes /iam/* de l'API du manager, dans le compte du manager. Ces routes sont la sortie api_iam_arn du module, et GET seul suffit pour les deux listes. L'appelant a aussi besoin de apigateway:GET pour trouver l'API par son nom, sauf si --api-url est donné. Un tel appelant agit comme un administrateur : l'audit et les opérations nomment son ARN.
La CLI 0.6.0 a aussi une commande pour chaque autre opération du manager. Cela couvre l'intégration, la découverte, les opérations, les utilisateurs et les groupes, l'audit, la mise à jour du manager. Elles sont sur la page CLI, avec des politiques IAM de la lecture seule à toutes les routes.
Désinstallation
- Dans le manager, retirez les workloads et désinstallez les routeurs. Ceux-ci ont été installés par appels d'API et ne figurent pas dans votre état Terraform. Si le rafraîchissement sur événement est activé, désactivez-le, puis lancez la découverte (Run now). Les relais installés dans vos comptes sont alors supprimés.
- Définissez
deletion_protection = falsedans le module (cette option protège les utilisateurs d'un destroy accidentel), appliquez, puis exécutezterraform destroy. - Supprimez les rôles des comptes membres, ainsi que la déclaration de Dormeto dans la politique de délégation, sans toucher aux autres déclarations (Accès à l'organisation).
Si vous détruisez d'abord le manager, les workloads restent actifs et leurs règles inchangées. Vous devez alors supprimer les routeurs manuellement.