Passer au contenu principal
Deploy CLI prend en charge le remplacement dynamique de mots-clés par des valeurs propres à l’environnement. Cela permet de mettre en place un flux de travail évolutif pour plusieurs locataires, dans lequel tous les locataires partagent les mêmes fichiers de configuration des ressources, tout en injectant des valeurs légèrement différentes. Pour utiliser le remplacement de mots-clés, la propriété de configuration AUTH0_KEYWORD_REPLACE_MAPPINGS doit contenir les mappages appropriés. Ensuite, dans les fichiers de configuration des ressources, les mots-clés peuvent être injectés de l’une des deux façons suivantes :
  1. @@EXAMPLE_KEY@@ : L’utilisation des symboles @ indique à l’outil d’exécuter un JSON.stringify sur votre valeur avant de la remplacer. Ainsi, si votre valeur est une chaîne, l’outil ajoutera des guillemets; si votre valeur est un tableau ou un objet, l’outil ajoutera des accolades.
  2. ##EXAMPLE_KEY## : L’utilisation du symbole # indique à l’outil d’effectuer un remplacement littéral; il n’ajoutera ni guillemets ni accolades.

Exemple de fichier config.json

{
  "AUTH0_DOMAIN": "test-tenant.us.auth0.com",
  "AUTH0_CLIENT_ID": "FOO",
  "AUTH0_CLIENT_SECRET": "BAR",
  "AUTH0_KEYWORD_REPLACE_MAPPINGS": {
    "ENVIRONMENT": "dev",
    "ALLOWED_LOGOUT_URLS": ["https://dev-test-site.com/logout", "localhost:3000/logout"],
    "ALLOWED_ORIGINS": ["https://dev-test-site.com", "localhost:3000"]
  }
}

Exemple de fichier tenant.yaml

tenant:
  friendly_name: "##ENVIRONMENT## tenant"
  allowed_logout_urls: @@ALLOWED_LOGOUT_URLS@@
  enabled_locales:
    - en
clients:
  - name: Test App
    allowed_origins: @@ALLOWED_ORIGINS@@
    allowed_logout_urls: @@ALLOWED_LOGOUT_URLS@@

Exemple de tenant.json

{
  "friendly_name": "##ENVIRONMENT## tenant",
  "allowed_logout_urls": "@@ALLOWED_LOGOUT_URLS@@"
}

Concaténation de tableaux

Il peut arriver que vous souhaitiez concaténer des valeurs à un tableau statique au moyen du remplacement de mots-clés. Il n’existe aucune syntaxe particulière pour prendre en charge ce cas. Toutefois, il est possible d’y parvenir en utilisant des guillemets doubles échappés dans une seule chaîne contenant les valeurs appropriées, puis en l’injectant avec la syntaxe de mot-clé ##. Cette technique fonctionne à la fois pour les formats YAML et de répertoire.

Exemple de config.json

{
  "AUTH0_KEYWORD_REPLACE_MAPPINGS": {
    "GLOBAL_WEB_ORIGINS": "\"http://local.me:8080\", \"http://localhost\", \"http://localhost:3000\""
  }
}

Exemple de tenant.yaml

clients:
  - name: Test App
    web_origins: [ "http://production-app.com", "https://production-app.com", ##GLOBAL_WEB_ORIGINS## ]

Préserver les mots-clés lors de l’exportation

En règle générale, le Deploy CLI fonctionne mieux lorsqu’il est utilisé dans un flux de travail unidirectionnel, de vos environnements de niveau inférieur (p. ex. : dev, test) vers vos environnements de production. Toutefois, il peut parfois être nécessaire d’exporter la configuration d’un environnement de niveau supérieur vers votre répertoire de configuration local. Par défaut, les valeurs distantes remplacent vos valeurs locales, ce qui supprime vos marqueurs de mots-clés. Cependant, il est possible d’activer la préservation des remplacements de mots-clés à l’aide de la propriété de configuration booléenne AUTH0_PRESERVE_KEYWORDS. Lorsque cette configuration est activée, le Deploy CLI tente de préserver les marqueurs de mots-clés définis dans vos fichiers de configuration locaux pendant l’exportation. La fonctionnalité de préservation des mots-clés tente d’en conserver le plus possible tout en maintenant l’exactitude de vos fichiers de configuration des ressources. Dans la plupart des cas, elle fonctionne sans aucune intervention de l’utilisateur. Cependant, certaines limites importantes s’appliquent :
  • Dans le cas d’un champ de configuration avec remplacement de mot-clé dont les valeurs diffèrent entre le local et le distant, la valeur de configuration locale est toujours privilégiée. Cela entraîne l’écrasement de toute modification apportée directement dans l’environnement distant si un marqueur de remplacement de mot-clé existe à un endroit quelconque dans la valeur de ce champ dans le fichier de définition de la ressource; il n’y a aucune réconciliation « intelligente ».
  • Les tableaux sans identifiants précis ne peuvent pas être préservés. Ex. : ["http://site.com/logout", "localhost:3000/logout", "##LOGOUT_URL##"]. Cela s’explique par le fait que l’ordre de ces valeurs n’est pas déterministe. Pour préserver ces valeurs, il est plutôt recommandé d’utiliser la syntaxe de remplacement de mot-clé @@ARRAY_REPLACE@@ avec la valeur complète.
Pour en savoir plus sur l’historique et les défis techniques de la préservation des mots-clés, consultez RFC: Keyword Preservation During Export.