Hi All-
I've noticed in a few blueprints using VanillaSoftwareProcess there is a
pattern like this:
```install.command:
$brooklyn:formatString:
- |
V1=%s
V2=%s
some_command ${V1} ${V2}
- $brooklyn:config("v1")
- $brooklyn:config("v2")
```
This is handy and has its uses but note it doesn't play nice with
special characters in variables. For instance if a user says `v1:
pa$$word` it won't do what you want.
It's usually better to use:
```shell.env:
V1: $brooklyn:config("v1")
V2: $brooklyn:config("v2")
install.command:
some_command "${V1}" "${V2}"
```
Brookyn will bash-escape-for-double-quotes the values in `shell.env` --
so the above will work with any chars in `v1` and `v2`! (Note you need
the double quotes around the reference _to_ `"${V..}"` - that's what
it's escaped for.)
Unfortunately `shell.env` is coarse-grained, it applies to all commands,
and in particular needs to resolve as early as `pre.install.command`
(don't put `RUN_DIR` in there for instance!) but for config like
passwords etc it's the way to go.
Best
Alex
PS. Addition of config like
`{pre.,,post.}{install,customize,launch}.shell.env` - to be overlaid on
top of `shell.env` - would be easy and useful!
PPS. I've also noticed augeas - http://augeas.net/ - being used in more
complex blueprints. Very elegant way to manage config files.