# Retour sur les HashiDays Paris 2023

> Nous allons passer en revue ensemble les nouveautés présentées durant cette journée

2023-06-20 · HashiCorp, Terraform, Vault

Le 13/06/2023 a marqué la toute première édition des HashiDays qui s'est tenue simultanément dans trois villes : **Paris**, **Munich** et **Londres**. De plus, il était également possible de participer à l'événement en ligne. J'ai eu la chance de participer à l'édition de [Paris](https://hashidays.com/paris/).

Dans cet article nous allons passer en revue ensemble les nouveautés présentées durant cette journée, notamment autour de HCP ([HashiCorp Cloud Platform](https://www.hashicorp.com/cloud)) qui est mis en avant à chaque HashiConf/HashiDays.

<img src="/hashidays-paris-2023/hashidays_paris_hu_9e38a48831945e2.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/hashidays_paris_hu_b372a8ea2c754190.webp 480w, /hashidays-paris-2023/hashidays_paris_hu_7d36674662364b91.webp 800w, /hashidays-paris-2023/hashidays_paris_hu_fd02aee1f0d923ff.webp 1200w, /hashidays-paris-2023/hashidays_paris_hu_9e38a48831945e2.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="813" alt="HashiDays Paris 2023" class="left" />

## HashiCorp Vault

Grande nouveauté concernant Vault est [HCP Vault Secrets](https://www.hashicorp.com/blog/announcing-hcp-vault-secrets-public-beta) qui est actuellement en **public beta**.

Dans les grandes lignes, cette nouvelle feature permet de:
- **Stocker des secrets de façon simple et centralisée**: L'objectif est de voir la solution comme un "trousseau de clés en SaaS".
- **Synchroniser les secrets entre HCP Vault Secrets et cloud provider/machine**: Pour le moment la solution supporte uniquement [AWS Secret Manager](https://developer.hashicorp.com/hcp/docs/vault-secrets/integrations/aws-secrets-manager) mais d'autres viendront vite.
- **Accessible via une API ou CLI**: Dans une optique de fournir une expérience "Developer Flexibility", une API est accessible permettant de récupérer un secret via un Curl, Terraform (via le provider Vault), une [CLI dédiée à Vault Secrets (sour le nom de **vlt**)](https://developer.hashicorp.com/hcp/docs/vault-secrets/commands) ou encore un SDK. Côté SDK, la communauté n'a pas traîné puisqu'un [SDK en GO](https://github.com/ssbostan/vault-secrets-sdk-go) a déjà vu le jour.

<img src="/hashidays-paris-2023/vlt_secrets_hu_5b22239b88b38d5b.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/vlt_secrets_hu_40e4a7e7e2b0c552.webp 480w, /hashidays-paris-2023/vlt_secrets_hu_63f6d0b9d4144b5a.webp 800w, /hashidays-paris-2023/vlt_secrets_hu_cc39fc039c8f4f59.webp 1200w, /hashidays-paris-2023/vlt_secrets_hu_5b22239b88b38d5b.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="899" alt="HCP Vault Secrets" class="left" />

Cerise sur le gâteau, **HCP Vault Secrets** est [gratuit durant la **public beta**](https://www.hashicorp.com/cloud). Une occasion de tester le produit par vous-même.

Autre nouveauté pour les utilisateurs de Kubernetes qui est sortie depuis quelques mois mais remise en avant durant les HashiDays en tant que GA (Global Availability) est le [**Vault Secrets Operator**](https://www.hashicorp.com/blog/vault-secrets-operator-for-kubernetes-now-ga). Cette intégration permet notamment la synchronisation avec toutes les classes de secrets Vault.
Pour ceux qui souhaitent connaitre la différence et comparer avec les autres méthodes
vous pouvez vous référer à l'article de [blog HashiCorp sur les intégrations Kubernetes avec Vault](https://www.hashicorp.com/blog/kubernetes-vault-integration-via-sidecar-agent-injector-vs-csi-provider).

<img src="/hashidays-paris-2023/vlt_k8s_operator_hu_a960d6b2ab431a79.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/vlt_k8s_operator_hu_d0e3bdd56c492e8e.webp 480w, /hashidays-paris-2023/vlt_k8s_operator_hu_b54a95a607158d6c.webp 800w, /hashidays-paris-2023/vlt_k8s_operator_hu_e9dbbf7e49e34918.webp 1200w, /hashidays-paris-2023/vlt_k8s_operator_hu_a960d6b2ab431a79.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="972" alt="Vault Secrets Operator" class="left" />

Pour plus d’informations :
- [L'annonce de HCP Vault Secrets](https://www.hashicorp.com/blog/announcing-hcp-vault-secrets-public-beta)
- [Synchronisation entre HCP Vault Secrets et AWS Secrets Manager](https://developer.hashicorp.com/hcp/docs/vault-secrets/integrations/aws-secrets-manager)
- [Vault Secrets Operator](https://www.hashicorp.com/blog/vault-secrets-operator-for-kubernetes-now-ga)

## HashiCorp Boundary

**HashiCorp Boundary 0.13** est sorti ! Parmi les nouveautés, certaines sont accessibles via la version Open Source, d'autres via HCP.

Côté Open Source, nous avons:
- **LDAP authentication method (beta)**
- **OIDC authentication improvements**: La CLI peut afficher l'URL d'authentification afin que celle-ci puisse se poursuivre via un autre device (notamment pour les device n'ayant pas de navigateur web).
- **Shared KMS workers**: L'usage d'un ou plusieurs KMS pour enregistrer les downstreams sur plusieurs réseaux.
- **Static ports for targets**
- **Dynamic host catalog external name**

<img src="/hashidays-paris-2023/boundary_enterprise_hu_b960eeca642f30a8.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/boundary_enterprise_hu_25bb9b0cee2607a6.webp 480w, /hashidays-paris-2023/boundary_enterprise_hu_484657fe5bb39385.webp 800w, /hashidays-paris-2023/boundary_enterprise_hu_9fb885c34162a6fd.webp 1200w, /hashidays-paris-2023/boundary_enterprise_hu_b960eeca642f30a8.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="747" alt="Boundary Enterprise" class="left" />

Côté Enterprise:
- **Boundary Enterprise version**: La possibilité de déployer une version Enterprise de HashiCorp Boundary en Self-Hosted. Cela embarque la plupart des features de HCP Boundary mais pas toutes (par exemple: l'automatisation des mises à jour, le streaming des logs d'audit, etc). Je vous invite à voir [la différence entre HCP Boundary et la version enterprise sur la page pricing](https://www.hashicorp.com/products/boundary/pricing).
- **SSH session recording**: Enregistre l'ensemble des commandes de la session (sous forme de GIF). La feature supporte, pour le moment, uniquement le SSH et stocke le recording sur un AWS Bucket S3. Petite précision sur la feature, c'est le worker Boundary qui envoie le fichier (avec le fichier d'intégrité) au bucket S3 UNIQUEMENT quand la session se termine. Un axe d'amélioration que j'ai noté durant mes tests est que l'accès à l'AWS S3 bucket se fait via [Access Key & Secret key static](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html), on espère donc une intégration prochaine via [AWS Role ou autre accès plus dynamique](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html). Côté pricing, la solution évolue avec cette nouvelle feature avec une offre **HCP Plus** à 0,90 $ par session (là où l'offre **HCP Standard** est à 0,50 $).
- **HCP Boundary maintenance window**: Vous pouvez choisir maintenant une maintenance window pour update votre Boundary (pour un patch ou l'upgrade d'une version majeure)

<img src="/hashidays-paris-2023/boundary_session_recording_hu_47dcd55d95b1527b.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/boundary_session_recording_hu_f4b455097b3d4e12.webp 480w, /hashidays-paris-2023/boundary_session_recording_hu_11fdf896cdf0845e.webp 800w, /hashidays-paris-2023/boundary_session_recording_hu_523eb91eb816a4f7.webp 1200w, /hashidays-paris-2023/boundary_session_recording_hu_47dcd55d95b1527b.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="741" alt="Boundary Session Recording" class="left" />
<video width="1600" height="900" poster="https://mehdilaruelle.com/hashidays-paris-2023/vlt_sessionrecordingdemo.jpg" aria-label="Boundary Session Recording — démonstration"controls autoplay loop
  muted playsinline preload="metadata">
    <source src="https://mehdilaruelle.com/hashidays-paris-2023/vlt_sessionrecordingdemo.webm" type="video/webm">
    <source src="https://mehdilaruelle.com/hashidays-paris-2023/vlt_sessionrecordingdemo.mp4" type="video/mp4">
</video>

Pour plus d'informations:
- [Boundary v0.13 blog post release](https://www.hashicorp.com/blog/boundary-0-13-introduces-ssh-session-recording-boundary-enterprise-and-more)
- [Le Changelog de la version 0.13](https://developer.hashicorp.com/boundary/docs/release-notes/v0_13_0)
- [HashiCorp Boundary pricing & feature difference](https://www.hashicorp.com/products/boundary/pricing)

## HashiCorp Consul

Du côté Consul, les nouveautés se divisent en 2 parties avec d'un côté **HCP Consul Management Plane** et **Consul v1.16 en BETA**.

Du côté **HCP Consul Management Plane**, nous avons une déclinaison sous forme de deux features:
- **Cloud-based observability (beta)**: Axé sur 3 éléments clés: Telemetry extraction, Metrics storage & Visualizations. Permettant d'offrir une vue globale multi environment, des services et un état de santé global.
- **Cluster peering (GA)**: Simplifiant la cross-cluster connectivity via l'interface HCP (pour des clusters existants aussi bien de type HCP ou self-managed).

De l'autre avec **Consul v1.16** encore en BETA, nous avons:
- **Sameness groups (Consul Enterprise)**: Permet d'effectuer un failover entre un service réparti sur plusieurs clusters/partitions. 
- **Enhanced control plane protection (Consul Enterprise)**: Ajout d'un rate limit basé sur l'adresse IP.
- **FIPS 140-2 compliant (Consul Enterprise)**: Build offrant un niveau [FIPS 140-2 Level 1](https://en.wikipedia.org/wiki/FIPS_140-2)
- **JWT auth for service-to-service traffic**: Les Consul service intentions peuvent maintenant autoriser les claims des JWT (Json Web Token)
- **Transparent proxy for failover and virtual services**: Ajout d'un mode [transparent proxy](https://developer.hashicorp.com/consul/docs/connect/transparent-proxy)
- **Permissive mTLS**: Quand on active le mTLS (Mutual TLS), Consul attend que TOUTES les communications soient sécurisées via mTLS. Avec le **Permissive mTLS**, cela permet de faire la transition vers du mTLS sans que toutes les communications utilisent le mTLS.
- **Simplified API Gateway installation for Consul on Kubernetes**
- **External AuthZ Envoy extension**: Permet de mettre en place un [Envoy externe](https://developer.hashicorp.com/consul/docs/connect/proxies/envoy-extensions) pour filtrer les autorisations sur des TCP et HTTP listeners.
- **Property override Envoy extension**
- **Wasm Envoy extension**: Permet de mettre en place l'extension [WebAssembly (Wasm)](https://istio.io/latest/blog/2020/wasm-announce/) pour les TCP et HTTP listeners via Envoy.
- **Catalog sync support for health checks and ingress**

<img src="/hashidays-paris-2023/consul_1-16_hu_3a67cd478386899d.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/consul_1-16_hu_25155020df5dfde6.webp 480w, /hashidays-paris-2023/consul_1-16_hu_d0a56fe8b0595fd.webp 800w, /hashidays-paris-2023/consul_1-16_hu_1a1c62b7fa54954c.webp 1200w, /hashidays-paris-2023/consul_1-16_hu_3a67cd478386899d.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="679" alt="Récapitulatif de Consul 1.16" class="left" />

Pour plus d'informations:
- [HCP Consul Management Plane](https://www.hashicorp.com/blog/announcing-hcp-consul-management-plane-with-cloud-based-observability)
- [Consul v1.16 (Beta)](https://www.hashicorp.com/blog/consul-1-16-enhances-service-mesh-reliability-user-experience-and-security)

## HashiCorp Terraform

Pour clôturer le bal des nouveautés, nous finissons par HashiCorp Terraform.
Dans la même logique que Consul, nous avons des nouveautés scindées en 2 parties: d'un côté **Terraform Cloud** et de l'autre **Terraform v1.5**.

<img src="/hashidays-paris-2023/tf_news_hu_f6c5b505bc872a47.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/tf_news_hu_8556caa192302a8b.webp 480w, /hashidays-paris-2023/tf_news_hu_bb069db685bad20c.webp 800w, /hashidays-paris-2023/tf_news_hu_19df8b0ce7734b76.webp 1200w, /hashidays-paris-2023/tf_news_hu_f6c5b505bc872a47.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="727" alt="Récapitulatif Terraform" class="left" />

Commençons par les nouveautés du tant attendu **Terraform v1.5**:
- **Config-driven import**: LA feature tant attendue [**l'import des resources avec génération de code automatique par Terraform**](https://developer.hashicorp.com/terraform/language/import) fait son apparition. L'action se fait en 2 étapes:
  1. Création de la resource cible et d'un block `import {}`:
  ```hcl
  import {
    id = "i-abcd1234"
    to = aws_instance.example
  }

  resource "aws_instance" "example" {
    name = "test"
  }
  ```
  Avec ici `id` pour la resource `id` existante et `to` qui est la resource Terraform à générer.
  2. Puis vous pouvez faire votre `plan` et/ou `apply` ensuite afin de voir et/ou générer la resource en Terraform avec ses attributs. Contrairement à la commande `terraform import`, l'usage du block est `idempotent` permettant facilement de retirer la configuration si celle-ci ne vous plait plus.
  <div class="notice warning" >
    <p class="notice-title">
        <span class="icon-notice baseline">
            <svg xmlns="http://www.w3.org/2000/svg" viewBox="126 76.5 300 300">
  <path d="M297.431 324.397v-34.255c0-3.245-2.344-5.95-5.358-5.95h-32.146c-3.014 0-5.358 2.705-5.358 5.95v34.255c0 3.245 2.344 5.95 5.358 5.95h32.146c3.014 0 5.358-2.705 5.358-5.95Zm-.335-67.428 3.014-82.753c0-1.081-.502-2.524-1.674-3.425-1.005-.902-2.512-1.983-4.019-1.983h-36.834c-1.507 0-3.014 1.081-4.019 1.983-1.172.901-1.674 2.704-1.674 3.786l2.846 82.392c0 2.344 2.512 4.146 5.693 4.146h30.975c3.013 0 5.525-1.803 5.692-4.146Zm-2.344-168.39L423.34 342.425c3.683 7.032 3.516 15.686-.335 22.717-3.85 7.031-10.883 11.358-18.417 11.358H147.413c-7.534 0-14.566-4.327-18.417-11.358-3.85-7.031-4.018-15.685-.335-22.716L257.248 88.578C260.93 81.188 268.13 76.5 276 76.5c7.87 0 15.069 4.688 18.752 12.08Z"/>
</svg>

        </span> Avertissement </p><p><strong>Attention aux imports</strong>: Les imports importent tous les attributs et certains sont conflictuels.</p></div>

- **Enhanced validation with checks**: Autre feature tout aussi importante, les blocks `check {}`. Les **checks** permettent des tests fonctionnels non bloquants (les checks se lancent à la toute fin) là où les [post condition](https://developer.hashicorp.com/terraform/language/expressions/custom-conditions#preconditions-and-postconditions) sont plus orientées pour des tests unitaires bloquants. **check** et **post condition** sont donc complémentaires.
Un exemple tiré de l'article de [blog HashiCorp](https://www.hashicorp.com/blog/terraform-1-5-brings-config-driven-import-and-checks):
```hcl
check "health_check" {
  data "http" "example" {
    url = "https://${aws_lb.example.dns_name}"
  }
 
  assert {
    condition     = data.http.example.status_code == 200
    error_message = "${data.http.example.url} returned an unhealthy status code"
  }
}
```

De l'autre côté avec **Terraform Cloud**, nous avons:
- **Explorer for workspace visibility (beta)**: Une vue consolidée qui regroupe: provider, modules, les versions Terraform utilisées par les workspaces, les [drifts détectés](https://developer.hashicorp.com/terraform/cloud-docs/workspaces/health), etc.
- **Ephemeral workspaces (coming soon)**: Permet de mettre un Time To Live sur un workspace. À la fin du Time To Live, le workspace est détruit avec l'ensemble des ressources via un `terraform destroy` (parfait pour les environnements de **dev** souvent oubliés).
- **Config-driven import (GA)**: Utilise la fonctionnalité de **Terraform v1.5** avec les **import blocks** et permet via **Terraform Cloud** de visualiser l'import et d'en télécharger la configuration.
- **Continuous validation with Terraform checks (GA)**: Dans la même continuité que la feature **Config-driven import** de **Terraform Cloud**, la plateforme utilise cette nouvelle feature pour notifier les users si un check fail.

Pour plus d'informations:
- [Terraform v1.5 release blog post](https://www.hashicorp.com/blog/terraform-1-5-brings-config-driven-import-and-checks)
- [Terraform v1.5 changelog](https://github.com/hashicorp/terraform/releases/tag/v1.5.0)
- [Terraform import block](https://developer.hashicorp.com/terraform/language/import)
- [Terraform Cloud news](https://www.hashicorp.com/blog/consul-1-16-enhances-service-mesh-reliability-user-experience-and-security)

## Nomad, Packer et Vagrant ?

Pas d’annonce spécifique à ces produits durant les HashiDays. L'événement se concentre principalement sur les produits ayant des versions enterprise et/ou HashiCorp Cloud Platform (HCP).

Pour compléter votre voyage dans le monde HashiCorp, je vous invite à en apprendre davantage sur les autres nouveautés via les ressources suivantes:
- [Le blog HashCorp](https://www.hashicorp.com/blog)
- [La documentation HashiCorp](https://docs.hashicorp.com/)
- Les Changelog Github des différents produits
- [Les Events HashiCorp](https://www.hashicorp.com/events)
- [Le replay des HashiDays 2023](https://hashidays.com/online/) (très prochainement)

## HashiDays Paris 2023 en personne, le feedback !

> Est-ce que l'événement en personne à Paris est à refaire pour 2024 ?

Oui. Les HashiDays ont su mettre en avant le côté présentiel notamment avec une matinée (de 9h30 à 10h30) et un afterwork de networking **très** réussi à mon sens. Pour la petite anecdote, j'ai eu l'occasion de croiser à chaque événement HashiCorp (et chaque année) d'anciens membres de ma promotion d'école que je ne vois plus depuis des années.
C'est aussi une occasion de rencontrer d'autres **HashiCorp Ambassador** et **HashiCorp Core Contributor**.

<img src="/hashidays-paris-2023/hashidays_paris_ambassadors_hu_285bc479ba24f311.webp" loading="lazy" decoding="async" srcset="/hashidays-paris-2023/hashidays_paris_ambassadors_hu_ee7da69180fe22b5.webp 480w, /hashidays-paris-2023/hashidays_paris_ambassadors_hu_f2f25b880b3b39da.webp 800w, /hashidays-paris-2023/hashidays_paris_ambassadors_hu_ff2cdb27b16ea6ba.webp 1200w, /hashidays-paris-2023/hashidays_paris_ambassadors_hu_285bc479ba24f311.webp 1400w" sizes="(max-width: 800px) 100vw, 800px" width="1400" height="1050" alt="HashiCorp Ambassador" class="left" />

> Qu'en est-il des talks ?

Les talks se sont déroulés en 4 phases:
1. Keynote (matinée)
2. Session Deep Dive sur les nouveautés (matinée/midi)
3. Talk sous forme de retour d'expérience (début d'après-midi)
4. Learning session sous forme de démonstration/lab à reproduire (fin d'après-midi)

Dans l'ensemble, le programme est bon avec des pauses récurrentes. Cependant, il manque un deuxième "track" afin de choisir le sujet en fonction de nos préférences ainsi qu'un temps plus dédié avec des petits groupes pour les **Learning sessions** pour ceux qui auraient bien voulu suivre (car la cadence était très voire trop élevée avec l'impossibilité d'être aidé).

> Le mot de la fin ?

Pour ceux qui sont dans la découverte, se posant les questions sur les offres Pro ou Enterprise des produits HashiCorp et souhaitant discuter avec des experts sur le sujet, les HashiDays sont l'endroit idéal.
Pour ceux ayant déjà un niveau assez avancé dans les produits HashiCorp et se limitant aux produits open source, vous allez être globalement peu satisfaits, à l'exception du temps consacré au networking et de quelques talks.

Pour finir, quelques bonus:
- [HashiCorp Twitch](https://www.twitch.tv/hashicorplive)
- [Communauté HashiCorp](https://www.hashicorp.com/community)
- [HashiCorp Learn](https://learn.hashicorp.com/)

---

Publié à l’origine sur https://mehdilaruelle.com/fr/posts/2023/06/retour-sur-les-hashidays-paris-2023/
