brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Azhar I Hashmi" <aihas...@us.ibm.com>
Subject Re: "using variable later in postprovisionscript or any other script"
Date Thu, 22 Jan 2015 23:51:45 GMT
Thanks Alex,

If i can refer to ${config.myvarA} in my script then why would I define
myvar1 in env.shell other then what you described type-define vs
non-type-defined keys and their scope.  Also, myvar1 or env.myvarA are set
as environment variables only for that session during installation or can I
access them later by logging into the box?  I tried to see the value of
these variables as predefined environment variables but I could not find
them in env or printenv on linux machine.

So I can use alias like this env.myvar1 ?  Do not need  prefix config. or
env.shell. right in the script ?

Thanks
Azhar





From:	Alex Heneveld <alex.heneveld@cloudsoftcorp.com>
To:	dev@brooklyn.incubator.apache.org
Date:	01/22/2015 05:29 PM
Subject:	Re: "using variable later in postprovisionscript or any other
            script"




Azhar-

What you propose I think could work.  But I think it would also work and
be cleaner to split out your config, e.g.

   brooklyn.config:
     myvarA:
$brooklyn:component("machine").attributeWhenReady("host.address")
   shell.env:
     myvar1: $brooklyn:config("myvarA")

and then in templates refer to ${config.myvarA}.

Only subtlety is that "myvarA" *must* be in `brooklyn.config` because it
is not a type-defined config key.  `shell.env` could be put under
`brooklyn.config` or at the top level because it *is* a config key known
at the type.  (It has a flag/alias "env" so you could also just call it
`env`.)

HTH + thanks for the nice comments on the new docs!

--A


On 22/01/2015 22:59, Azhar I Hashmi wrote:
>
> Thanks a lot Svet!
>
> Actually, I figured that there is files.runtime that I can use exactly
> as you described and also came to know env.shell after our call and I
> love the new documentation related to Entity's config, sensor etc.....
>
> Couple of questions:
> Instead of hard coding the path like this: I saw in the doc that there
> is a config to get to that path i.e. "*expandedinstall.dir". *Do you
> think I can use config variable to get that value?
>
> files.install:
>
>  "
http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
":
> apache-tomcat-7.0.56/lib/tomcat-dbcp-7.0.30.jar
>
> Can I do this for example:
>
> files.install:
>
>  "
http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
":
> *${expandedinstal.dir}*/lib/tomcat-dbcp-7.0.30.jar
> (OR)
>
> "
http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
":
> *${config.expandedinstal.dir}*/lib/tomcat-dbcp-7.0.30.jar
>
> Also:
>
>
> According to the definition it takes a java map. So in your example:
>
> shell.env:
>    myvar:
> $brooklyn:component("machine").attributeWhenReady("host.address")
> - type: brooklyn.entity.machine.MachineEntity
>  id: machine
> I can have multiple vars like this:
>
> shell.env:
> *myvar1:
> $brooklyn:component("machine").attributeWhenReady("host.address")*
> *    myvar2:
> $brooklyn:component("TOMCAT_ID").attributeWhenReady("host.address")*
> *    myvar3:
> $brooklyn:component("MY_SQLID").attributeWhenReady
("host.subnet.address")*
> - type: brooklyn.entity.machine.MachineEntity
>
>
> Also, in my */tmp/script.sh*
>
> Can I do this *${config.shell.env.myvar1} ,
> ${config.shell.env.myvar2},* and *${config.shell.env.myvar3}* to get
> their values that are set by brooklyn? Is my understanding correct? If
> not please correct me.
>
>
> Thanks a lot!
>
> Azhar
>
> Inactive hide details for Svetoslav Neykov ---01/22/2015 04:44:06
> AM---Hi Azhar, I tried your blueprint and here's what I founSvetoslav
> Neykov ---01/22/2015 04:44:06 AM---Hi Azhar, I tried your blueprint
> and here's what I found out:
>
> From: Svetoslav Neykov <svetoslav.neykov@cloudsoftcorp.com>
> To: dev@brooklyn.incubator.apache.org
> Date: 01/22/2015 04:44 AM
> Subject: Re: "using variable later in postprovisionscript or any other
> script"
>
> ------------------------------------------------------------------------
>
>
>
> Hi Azhar,
>
> I tried your blueprint and here's what I found out:
> 1.
>  * 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>
> services:
> - type: brooklyn.entity.webapp.tomcat.TomcatServer
>  brooklyn.config:
>    files.install:
>
>  "
http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
":
> apache-tomcat-7.0.56/lib/tomcat-dbcp-7.0.30.jar
>
>  "
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.10/mysql-connector-java-5.1.10.jar
":
> apache-tomcat-7.0.56/lib/mysql-connector-java-5.1.10.jar
>      "<script url>": "/tmp/myscript.sh"
>    files.runtime:
>
>  "https://provision/tomcat-users.xml <
https://artifactory:AP5QT5YLhmBu3ET9Qe8wwkrNs3r@artifactory.mms.ibmcloud.com/artifactory/ext-release-local/amm-bss/provision/tomcat-users.xml
>":
> conf/tomcat-users.xml
>  pre.install.command: bash <(wget <script url> -qO -)
>  post.install.command: chmod +x /tmp/myscript.sh;/tmp/myscript.sh
>  shell.env:
>    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:
>
> files.install:
>  "
http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
":
> apache-tomcat-7.0.56/lib/tomcat-dbcp-7.0.30.jar
>  "
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.10/mysql-connector-java-5.1.10.jar
":
> apache-tomcat-7.0.56/lib/mysql-connector-java-5.1.10.jar
>
> For tomcat-users.xml add:
>
> files.runtime:
>  "https://provision/tomcat-users.xml <
https://artifactory:AP5QT5YLhmBu3ET9Qe8wwkrNs3r@artifactory.mms.ibmcloud.com/artifactory/ext-release-local/amm-bss/provision/tomcat-users.xml
>":
> conf/tomcat-users.xml
>
> which will copy the file to the ../apps/../conf folder.
>
> Svet.
>
> > On 22.01.2015 г., at 3:10, Azhar I Hashmi <aihashmi@us.ibm.com> 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:
> io.cloudsoft.ibm.mms.amp.location.SoftlayerLocationCustomizer
> > postInstallScriptUri:
> https://USE_VARIABLE_IN_SCRIPT.sh <
https://artifactory:AP5QT5YLhmBu3ET9Qe8wwkrNs3r@artifactory.mms.ibmcloud.com/artifactory/ext-release-local/amm-bss/provision/bss-tomcat.sh
>
> > 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 <
https://artifactory:AP5QT5YLhmBu3ET9Qe8wwkrNs3r@artifactory.mms.ibmcloud.com/artifactory/ext-release-local/amm-bss/provision/bss-tomcat.sh
>.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:
> >
> "
http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
 <
http://central.maven.org/maven2/org/apache/tomcat/tomcat-dbcp/7.0.30/tomcat-dbcp-7.0.30.jar
>":
> lib/tomcat-dbcp-7.0.30.jar
> >
> "
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.10/mysql-connector-java-5.1.10.jar
 <
http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.10/mysql-connector-java-5.1.10.jar
>":
> lib/mysql-connector-java-5.1.10.jar
> >
> "https://provision/tomcat-users.xml <
https://artifactory:AP5QT5YLhmBu3ET9Qe8wwkrNs3r@artifactory.mms.ibmcloud.com/artifactory/ext-release-local/amm-bss/provision/tomcat-users.xml
>":
> conf/tomcat-users.xml
> >
> >
> > Thanks
> > Azhar
> >
>
>

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