Puis-je avoir plusieurs fichiers de configuration dans DropWizard?
Je veux avoir plusieurs fichiers yaml pour DropWizard. L'un d'entre eux contiennent des informations sensibles et non sensibles.
Pouvez-vous m'indiquer une docs ou exemple, comment avez plusieurs configurations dans DropWizard?
OriginalL'auteur Victor Ronin | 2015-02-25
Vous devez vous connecter pour publier un commentaire.
ConfigurationSourceProvider
est votre réponse.Les suivants est comment dropwizard t-il par défaut. Vous pouvez facilement les modifier à votre convenance.
MyMultipleConfigurationSourceProvider
ressembler ? Je n'ai pas d'image claire de la façon dont il pourrait fournir des données à partir de plusieurs fichiers. Pourriez-vous expliquer ?Je suppose que ce serait de lire deux fichiers (soit codé en dur ou
|
les fichiers séparés en provenance de lapath
paramètre), les fusionner ensemble dans unInputStream
et de retour que.Merci pour la réponse rapide ! Si je comprends bien, cela aurait des implications importantes, ne serait-il pas ? Par exemple, les champs qui ont été à la racine de chaque fichier à la racine de la "main reconstruit" fichier, potentiellement avec les collisions.
oui, si arbitraire fichiers yaml sont attendus, il peut être une chose dangereuse à faire. Je suppose que dans le cas de collisions, l'analyseur syntaxique yaml règles seront appliquées, ce qui peut être jeter de l'exception ou de la prise de la première/dernière occurrence. Dans ce scénario, idéalement, les fichiers qui ont des responsabilités distinctes; c'est à dire un fichier de base de données, un fichier de configuration du serveur, un autre pour la configuration personnalisé champs, etc.. Et qui devrait être en quelque sorte forcée ou bien documentés.
OriginalL'auteur Natan
Idéalement, vous devriez être la configuration de votre application en mettant vos informations sensibles ou des données configurables à l'intérieur de Variables d'Environnement, plutôt que la gestion de plusieurs fichiers. Voir douze facteur de la règle sur la config: http://12factor.net/config
Pour permettre cette approche dans Dropwizard, vous pouvez soit remplacer vos config avec les Variables d'Environnement au moment de l'exécution à l'aide de la
-Ddw
drapeau:ou vous pouvez utiliser à portée de main ce add-on: https://github.com/tkrille/dropwizard-template-config de mettre la Variable d'Environnement des espaces réservés à l'intérieur de votre config:
Les deux solutions ci-dessus sont compatibles avec Heroku et les conteneurs Docker, où la Variable d'Environnement sont uniquement disponibles lorsque vous exécutez l'application.
Oui l'env de vars doit être défini, mais pas pour chaque déployer, tout comme vous ne devriez pas besoin de tourner tout l'environnement avec tous les déployer. Vous pouvez utiliser des scripts, ou il y a des outils de configuration
...comme Pupplet, Chef, Ansible, etc. En fin de compte l'idée est de vous séparer de votre Dev préoccupations de l'Ops, de sorte que les informations d'identification ne sont pas vérifiées dans le code source, la sécurité peut être vérifiée de façon indépendante et que les changements de l'environnement peut être fait au niveau des infrastructures, au lieu de creuser dans chaque code source des fichiers de configuration. Après avoir partagé la variable de fichiers peuvent également travailler mais comment est-ce mieux? Cela signifie que votre config besoin de code pour lire dans les variables dans chaque service, où que DW config prend en charge Env Var hors de la boîte. Aussi Env Vars fonctionne avec la Livraison Continue de immuable contenants comme Docker/Heroku
Pour les applications avec de grandes quantités de configuration que pour le changement de l'environnement, puis le système de vars serait un cauchemar.
Grande quantité de fichiers en fonction des configurations serait tout aussi cauchemardesque. Comme je l'ai dit, le point est de séparer les dev de l'infrastructure de la fpo et le 12-facteur approche est un bon candidat. Rappelez-vous cette question est à propos Dropwizard, qui a tendance à être un minimum autonome microservice, pas un monolithe application nécessitant une config outils de gestion et à temps plein configurateurs
OriginalL'auteur yunspace
Tout d'abord, vous allez écrire un autre fichier yml chemin dans un
.yml
.de l'échantillon.yml
l'autre.yml
et vous sera résolu par la simple utilisation de la SnakeYaml.
Pour les informations sensibles, je pense qu'il est bon d'utiliser la variable d'environnement.
Par exemple, l'utilisation dropwizard-environnement-config
https://github.com/tkrille/dropwizard-environment-config
server
de configuration qui affectent dropwizard lui-même, alors il ne fonctionnera pas. Par exemple, on pourrait obscurcir le mot de passe de la clé privée du certificat https.OriginalL'auteur ko2ic