Saltar al contenido principal
Deploy CLI admite el reemplazo dinámico de palabras clave con valores específicos del entorno. Esto permite un flujo de trabajo multiinquilino escalable en el que todos los inquilinos comparten los mismos archivos de configuración de recursos, pero insertan valores sutilmente diferentes. Para usar el reemplazo de palabras clave, la propiedad de configuración AUTH0_KEYWORD_REPLACE_MAPPINGS debe contener las asignaciones adecuadas. Luego, en los archivos de configuración de recursos, las palabras clave pueden insertarse de una de estas dos formas:
  1. @@EXAMPLE_KEY@@: El uso de los símbolos @ hace que la herramienta ejecute JSON.stringify en el valor antes de reemplazarlo. Por lo tanto, si el valor es una cadena, la herramienta agregará comillas; si el valor es un arreglo o un objeto, la herramienta agregará llaves.
  2. ##EXAMPLE_KEY##: El uso del símbolo # hace que la herramienta realice un reemplazo literal; no agregará comillas ni llaves.

Ejemplo de 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"]
  }
}

Ejemplo de 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@@

Ejemplo de tenant.json

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

Concatenación de arrays

Puede encontrarse con situaciones en las que quiera concatenar valores a un array estático mediante el reemplazo de palabras clave. No hay una sintaxis especial para este caso; sin embargo, es posible conseguirlo escapando las comillas dobles en una sola cadena que contenga los valores adecuados e inyectándola con la sintaxis de palabra clave ##. Esta técnica funciona tanto para los formatos YAML y de directorio.

Ejemplo de archivo config.json

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

Ejemplo de tenant.yaml

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

Conservar palabras clave al exportar

En general, Deploy CLI funciona mejor en un flujo de trabajo unidireccional desde los entornos de nivel inferior (por ejemplo, dev, test) hasta los entornos de producción. Sin embargo, en ocasiones será necesario exportar la configuración desde un entorno de nivel superior al directorio de configuración local. De forma predeterminada, los valores remotos sobrescribirán los valores locales, lo que provocará la eliminación de los marcadores de palabras clave. No obstante, es posible habilitar la conservación del reemplazo de palabras clave mediante la propiedad de configuración booleana AUTH0_PRESERVE_KEYWORDS. Al habilitar esta configuración, Deploy CLI intentará conservar los marcadores de palabras clave definidos en los archivos de configuración locales durante la exportación. La funcionalidad de conservación de palabras clave intentará preservar la mayor cantidad posible de palabras clave sin dejar de mantener la exactitud de los archivos de configuración de recursos. Y en la mayoría de los casos, funcionará sin intervención del usuario. Sin embargo, existen algunas limitaciones importantes:
  • En el caso de un campo de configuración con reemplazo de palabras clave cuyos valores difieran entre local y remoto, siempre prevalecerá el valor de la configuración local. Esto hará que se borren los cambios realizados fuera de banda en el entorno remoto si existe un marcador de reemplazo de palabras clave en cualquier parte del valor de ese campo en el archivo de definición del recurso; no existe ninguna reconciliación “inteligente”.
  • Los arrays sin identificadores específicos no pueden preservarse. Por ejemplo: ["http://site.com/logout", "localhost:3000/logout", "##LOGOUT_URL##"]. Esto se debe a que el orden de estos valores no es determinista. Como alternativa, para conservar estos valores, se recomienda usar la sintaxis de reemplazo de palabras clave @@ARRAY_REPLACE@@ con el valor completo.
Para obtener más información sobre el historial y los desafíos técnicos de la conservación de palabras clave, consulte RFC: Conservación de palabras clave durante la exportación.