brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Svetoslav Neykov <>
Subject Re: "using variable later in postprovisionscript or any other script"
Date Thu, 22 Jan 2015 10:43:25 GMT
Hi Azhar,

I tried your blueprint and here’s what I found out:
  * setup.script needs to be specified inside the location. I tried to pass it inside the
entity config, but it’s not picked up.
  * setup.script can be used only with jclouds locations. It’s doesn’t get executed for
localhost or byon.
  * When passing formatString parameters to setup.script.vars you will get a " Cannot coerce
type class “ exception. It’s not supported currently.
  * setup.script should only be used for system-wide configuration where you don’t need
dynamic parameters.
  * In your case it’s best to move all tomcat configuration from your script into a custom
server.conf template and pass it to the entity. To access the entity config use ${config.MY_VARIABLE}.
  * If you really need to pass variables to a script then you can use one of pre.install.command,
post.install.command. The former will get executed before any installation steps take place
so if you need to execute a script download it from a URL. The latter can use the files from
files.install. Both work with localhost and byon. Note that the values for those are bash
commands, not script URLs.
  * To pass parameters to the above use shell.env.
  * Here’s a tested example:

location: <location>
- type: brooklyn.entity.webapp.tomcat.TomcatServer
      “<script url>": "/tmp/"
      "https://provision/tomcat-users.xml <>":
  pre.install.command: bash <(wget <script url> -qO -)
  post.install.command: chmod +x /tmp/;/tmp/
    myvar: $brooklyn:component("machine").attributeWhenReady("host.address")
- type: brooklyn.entity.machine.MachineEntity
  id: machine

2. When you want to copy tomcat libraries you need files.install (as used in your example).
Since the tomcat distribution is extracted one level below the “files.install” folder
you need:


For tomcat-users.xml add:

  "https://provision/tomcat-users.xml <>":

which will copy the file to the ../apps/../conf folder.


> On 22.01.2015 г., at 3:10, Azhar I Hashmi <> wrote:
> Hello,
> Brooklyn provides a way to define variable and set their value using sensor. However,
I am not able to successfully use those variables. I could not find those variables. I defined
them in two different ways to use them later in post script but was not able to find them.
Here is a piece of the YAML blueprint example:
> memberSpec:
> $brooklyn:entitySpec:
> type: brooklyn.entity.webapp.tomcat.TomcatServer
> id: tomcatServer
> location:
> named:standard-location-wdc01:
> customizerType:
> postInstallScriptUri: <>
> privateNetworkOnly: false
> brooklyn.config:
> https.port: 8443+
> MY_VARIABLE: $brooklyn:formatString("%s",
> component("BSSMySQLDB").attributeWhenReady("host.subnet.address"))
> setup.script: https://USE_VARIABLE_IN_SCRIPT <>.sh
> setup.script.vars:
> $brooklyn:formatString("tomcatPublicIP:%s,runPath:%s,webappUrl:%s",
> component("tomcatServer").attributeWhenReady("host.address"),
> component("tomcatServer").attributeWhenReady("run.dir"),
> component("tomcatServer").attributeWhenReady("webapp.url"))
> Question 1: How do I use these variables in my scrips?
> Question 2: I need following jars and xml file in Tomcat/apache catalina lib and conf
directories respectively. However, following piece of yaml blueprint put them under /home/...../install/...../lib/
and /home/...../install/..../conf/ directories. I need the jar files under lib folder of Catalina/tomcat
's lib directory and .xml file under /home/..../apps/.......TomcatEntity/conf directory. Is
there a variable that I can use in <key,value> pair instead of lib/ and conf/ directories?
> files.install:
> "
> "
> "https://provision/tomcat-users.xml <>":
> Thanks
> Azhar

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