karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Romain Manni-Bucau <rmannibu...@gmail.com>
Subject Re: [HEADS UP] Docker friendly runtime with env variables compliant configuration
Date Tue, 29 Sep 2020 05:59:50 GMT
Hi JB,

for the env part it looks exactly what I would expect but for system
properties I wouldnt normalize the key (uppercase+replace dots by
underscrores), it should just be "pid + "." + key" I think. Normalization
is not only to look like common practise but also cause dots are not
accepted in env var IIRC. Since it is not the case for system props, no
reason to apply that transformation IMHO.
Last small note is that env should win over system properties so second
"if" should be preceeded by an "else" IMHO.

Hope it makes sense.

Romain Manni-Bucau
@rmannibucau <https://twitter.com/rmannibucau> |  Blog
<https://rmannibucau.metawerx.net/> | Old Blog
<http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book
<https://www.packtpub.com/application-development/java-ee-8-high-performance>


Le mar. 29 sept. 2020 à 07:16, Jean-Baptiste Onofre <jb@nanthrax.net> a
écrit :

> By the way, ConfigurationPlugin is R7 so Karaf 4.3.x.
>
> For Karaf 4.2.x, I will use the ${env} notation in cfg files using the
> same var names as working on 4.3.
>
> Regards
> JB
>
> > Le 29 sept. 2020 à 05:56, Jean-Baptiste Onofre <jb@nanthrax.net> a
> écrit :
> >
> > Hi,
> >
> > I’ve updated the PR to use ConfigurationPlugin.
> >
> > NB: when using ConfigurationPlugin, if you use
> configuration.getProperties() you will have the default values (not
> interpolated). To get the actual property values, you have to use
> configuration.getProcessedProperties(). With
> configuration.getProcessedProperties(), you will the interpolated value.
> > In order to avoid to confuse users, I also updated configRepository and
> config:* commands to use getProcessedProperties() by default.
> >
> > I’m doing a pass on other Karaf modules.
> >
> > Regards
> > JB
> >
> >> Le 28 sept. 2020 à 11:39, Romain Manni-Bucau <rmannibucau@gmail.com>
a
> écrit :
> >>
> >> +1, I'd try to push for a built-in support -
> >> (<pid>.<property_name>).toUpperCase(ROOT).replace('.', '_') - to
make it
> >> generic and not specific to some entries. It would also enable to not
> have
> >> to rename these env variables or have to maintain some fallbacks.
> >> What about just implementing a felix config admin configuration plugin?
> >> sounds less invasive and better on the long run? Did you give it a try?
> >>
> >> Romain Manni-Bucau
> >> @rmannibucau <https://twitter.com/rmannibucau <
> https://twitter.com/rmannibucau>> |  Blog
> >> <https://rmannibucau.metawerx.net/ <https://rmannibucau.metawerx.net/>>
> | Old Blog
> >> <http://rmannibucau.wordpress.com <http://rmannibucau.wordpress.com/>>
> | Github <https://github.com/rmannibucau <https://github.com/rmannibucau>>
> |
> >> LinkedIn <https://www.linkedin.com/in/rmannibucau <
> https://www.linkedin.com/in/rmannibucau>> | Book
> >> <
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> <
> https://www.packtpub.com/application-development/java-ee-8-high-performance
> >>
> >>
> >>
> >> Le lun. 28 sept. 2020 à 11:12, Jean-Baptiste Onofre <jb@nanthrax.net
> <mailto:jb@nanthrax.net>> a
> >> écrit :
> >>
> >>> Fair enough (and I agree ;)).
> >>>
> >>> Regards
> >>> JB
> >>>
> >>>> Le 28 sept. 2020 à 11:09, Grzegorz Grzybek <gr.grzybek@gmail.com>
a
> >>> écrit :
> >>>>
> >>>> I'd stick to explicit approach for now and leave "implicit" one for
> >>> later ;)
> >>>>
> >>>> regards
> >>>> Grzegorz Grzybek
> >>>>
> >>>> pon., 28 wrz 2020 o 11:08 Jean-Baptiste Onofre <jb@nanthrax.net
> <mailto:jb@nanthrax.net> <mailto:
> >>> jb@nanthrax.net <mailto:jb@nanthrax.net>>> napisał(a):
> >>>>
> >>>>> Just to be clear: today I’m using an "explicit" approach, where
the
> >>> config
> >>>>> contains something like:
> >>>>>
> >>>>> sshPort=${env:KARAF_SSH_PORT:-8101}
> >>>>>
> >>>>> But we can also have "implicit" approach (with some more changes
> >>> required).
> >>>>>
> >>>>> Regards
> >>>>> JB
> >>>>>
> >>>>>> Le 28 sept. 2020 à 11:07, Jean-Baptiste Onofre <jb@nanthrax.net
> <mailto:jb@nanthrax.net>> a
> >>>>> écrit :
> >>>>>>
> >>>>>> Hi,
> >>>>>>
> >>>>>> At beginning, I did a very simple change in Karaf Main: for
> instance,
> >>>>> you would be able to do
> >>>>>>
> >>>>>> Bin/karaf -Dpid:prop=value
> >>>>>>
> >>>>>> And I init the configuration file with the value.
> >>>>>>
> >>>>>> However, system properties are not super easy with docker.
> >>>>>>
> >>>>>> That’s why I preferred the env variable approach.
> >>>>>>
> >>>>>> Now, about env variable, I just leverage what we already have
in
> Karaf
> >>>>> (just updating the default configuration file).
> >>>>>>
> >>>>>> I can do a new iteration where (in configadmin repository),
I’m
> >>> checking
> >>>>> ALL env variables to find one matching.
> >>>>>> It would mean something like:
> >>>>>>
> >>>>>> $ export KARAF.MY_PID.prop=value
> >>>>>>
> >>>>>> For instance.
> >>>>>>
> >>>>>> We would need a "env variable format".
> >>>>>>
> >>>>>> Thoughts ?
> >>>>>>
> >>>>>> Regards
> >>>>>> JB
> >>>>>>
> >>>>>>> Le 28 sept. 2020 à 10:59, Grzegorz Grzybek <gr.grzybek@gmail.com
> <mailto:gr.grzybek@gmail.com>
> >>>>> <mailto:gr.grzybek@gmail.com <mailto:gr.grzybek@gmail.com>
<mailto:
> gr.grzybek@gmail.com <mailto:gr.grzybek@gmail.com>>>> a écrit :
> >>>>>>>
> >>>>>>> Hello
> >>>>>>>
> >>>>>>> Good idea!
> >>>>>>>
> >>>>>>> Shouldn't configadmin do it by default?
> >>>>>>>
> >>>>>>> Like dissect "KARAF_SSH_PORT" or similar env variables into:
> >>>>>>> - prefix (KARAF_) - rejected
> >>>>>>> - PID pointer (e.g., SSH → org.apache.karaf.shell)
> >>>>>>> - property (e.g PORT → sshPort)
> >>>>>>> ?
> >>>>>>>
> >>>>>>> This way it could be done in one place... Just my random
> observation,
> >>>>>>> because I can't dig this problem further for now ;)
> >>>>>>>
> >>>>>>> regards
> >>>>>>> Grzegorz Grzybek
> >>>>>>>
> >>>>>>> pon., 28 wrz 2020 o 10:51 Jean-Baptiste Onofre <jb@nanthrax.net
> <mailto:jb@nanthrax.net>
> >>> <mailto:jb@nanthrax.net <mailto:jb@nanthrax.net>>
> >>>>> <mailto:jb@nanthrax.net <mailto:jb@nanthrax.net> <mailto:
> jb@nanthrax.net <mailto:jb@nanthrax.net>>> <mailto:
> >>> jb@nanthrax.net <mailto:jb@nanthrax.net> <mailto:jb@nanthrax.net
> <mailto:jb@nanthrax.net>> <mailto:jb@nanthrax.net <mailto:jb@nanthrax.net>
> <mailto:
> >>> jb@nanthrax.net <mailto:jb@nanthrax.net>>>>>
> >>>>> napisał(a):
> >>>>>>>
> >>>>>>>> Hi guys,
> >>>>>>>>
> >>>>>>>> In order to easily use Karaf in docker container, I
created the
> >>>>> following
> >>>>>>>> PR:
> >>>>>>>>
> >>>>>>>> https://github.com/apache/karaf/pull/1203 <
> https://github.com/apache/karaf/pull/1203> <
> >>> https://github.com/apache/karaf/pull/1203 <
> https://github.com/apache/karaf/pull/1203>> <
> >>>>> https://github.com/apache/karaf/pull/1203 <
> https://github.com/apache/karaf/pull/1203> <
> >>> https://github.com/apache/karaf/pull/1203 <
> https://github.com/apache/karaf/pull/1203>>> <
> >>>>> https://github.com/apache/karaf/pull/1203 <
> >>> https://github.com/apache/karaf/pull/1203> <
> >>>>> https://github.com/apache/karaf/pull/1203 <
> >>> https://github.com/apache/karaf/pull/1203>>> <
> >>>>>>>> https://github.com/apache/karaf/pull/1203 <
> >>>>> https://github.com/apache/karaf/pull/1203> <
> >>>>> https://github.com/apache/karaf/pull/1203 <
> >>>>> https://github.com/apache/karaf/pull/1203>>>
> >>>>>>>>
> >>>>>>>> The purpose is allow use to override some configuration
properties
> >>>>> using
> >>>>>>>> env variables.
> >>>>>>>>
> >>>>>>>> For instance, if you want to use 8102 instead of default
8101 ssh
> >>> port
> >>>>>>>> number, you can do:
> >>>>>>>>
> >>>>>>>> $ export KARAF_SSH_PORT=8102
> >>>>>>>> $ bin/karaf
> >>>>>>>>
> >>>>>>>> I listed the environment variables here:
> >>>>>>>>
> >>>>>>>>
> >>>>>
> >>>
> https://github.com/apache/karaf/blob/4eda325e73d1d7dfbc0508258bde582e93d4f05e/manual/src/main/asciidoc/user-guide/configuration.adoc
> <
> https://github.com/apache/karaf/blob/4eda325e73d1d7dfbc0508258bde582e93d4f05e/manual/src/main/asciidoc/user-guide/configuration.adoc
> >
> >>> <
> >>>
> https://github.com/apache/karaf/blob/4eda325e73d1d7dfbc0508258bde582e93d4f05e/manual/src/main/asciidoc/user-guide/configuration.adoc
> >>>>
> >>>>> <
> >>>>>
> >>>
> https://github.com/apache/karaf/blob/4eda325e73d1d7dfbc0508258bde582e93d4f05e/manual/src/main/asciidoc/user-guide/configuration.adoc
> >>>>>>
> >>>>>>>> <
> >>>>>>>>
> >>>>>
> >>>
> https://github.com/apache/karaf/blob/4eda325e73d1d7dfbc0508258bde582e93d4f05e/manual/src/main/asciidoc/user-guide/configuration.adoc
> >>>>> <
> >>>>>
> >>>
> https://github.com/apache/karaf/blob/4eda325e73d1d7dfbc0508258bde582e93d4f05e/manual/src/main/asciidoc/user-guide/configuration.adoc
> >>>>>>
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>> I didn’t define environment variables for all properties.
If you
> see
> >>>>> some
> >>>>>>>> properties that it would be interesting to override
by env
> variables,
> >>>>>>>> please let me know, I will update the PR.
> >>>>>>>>
> >>>>>>>> NB: I will also update pax* to use similar approach.
> >>>>>>>>
> >>>>>>>> Thoughts ?
> >>>>>>>>
> >>>>>>>> Regards
> >>>>>>>> JB
> >
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message