RousselTMLEARNING

Observabilité

Automatisation et infrastructure as code pour Elasticsearch : API, Terraform, Ansible et CI/CD

Automatiser l'administration d'Elasticsearch : API REST et clients, fournisseur Terraform elasticstack (templates, ILM, rôles), Ansible, ECK en GitOps et pipelines CI/CD pour la configuration du cluster.

1. Tout passe par l'API #

Donc tout s'automatise.

Principe #

Configuration as code pour Elasticsearch

Templates, politiques ILM et SLM, pipelines d'ingestion, rôles et clés d'API sont des appels d'API : les décrire en code permet de les revoir, de les tester et de reconstruire un cluster à l'identique.

2. Terraform #

Le fournisseur elasticstack.

Exemple #

terraform {
  required_providers { elasticstack = { source = "elastic/elasticstack" } }
}
provider "elasticstack" {
  elasticsearch {
    endpoints = ["https://es01:9200"]
    api_key   = var.es_api_key
  }
}

resource "elasticstack_elasticsearch_index_lifecycle" "logs_30d" {
  name = "logs-30d"
  hot {
    rollover { max_primary_shard_size = "50gb", max_age = "1d" }
  }
  delete {
    min_age = "30d"
    delete {}
  }
}

resource "elasticstack_elasticsearch_index_template" "nginx" {
  name           = "logs-nginx"
  index_patterns = ["logs-nginx-*"]
  priority       = 200
  data_stream {}
  template {
    settings = jsonencode({ "index.lifecycle.name" = elasticstack_elasticsearch_index_lifecycle.logs_30d.name })
  }
}
Erreur Courante : Un objet modifié à la main dans Kibana ou par l'API sera écrasé au prochain terraform apply : documentez que le code est la source de vérité et restreignez les droits d'écriture manuels en production.

3. Ansible et CI/CD #

Installer et déployer.

Pratiques #

  • Ansible pour installer et configurer les nœuds (paquets, elasticsearch.yml, JVM, certificats) avec un redémarrage nœud par nœud.
  • Sur Kubernetes, ECK + GitOps (Argo CD, Flux) : le manifeste du cluster est dans Git.
  • En CI : valider les templates sur un cluster éphémère (conteneur), simuler les pipelines (_simulate), puis appliquer.
  • Des tests de non-régression de requêtes (résultats attendus) protègent la pertinence lors des changements de mapping.

Articles liés

Architecture distribuée Elasticsearch : rôles des nœuds, shards, répliques et allocation

Comprendre le fonctionnement distribué d'Elasticsearch : rôles des nœuds, nœuds master et quorum, cluster sta…

Mappings et analyse de texte Elasticsearch : types de champs, analyseurs et mapping dynamique

Maîtriser les mappings Elasticsearch : types de champs (text, keyword, numériques, date, ip, nested), multi-f…

Ingestion Elasticsearch : Bulk API, ingest pipelines, enrich et reindex

Ingérer et transformer des données dans Elasticsearch : Bulk API, ingest pipelines et processeurs (grok, diss…

Pour aller plus loin