Elvinas,

> how to specify local path for application on server, instead of picking up from some web repo

Can you give us more details of your use case please? e.g. are you wanting to download the install artifacts from a different location, or is the intent that the entity (e.g. JBoss AS 7) will be pre-installed on a given image?

---
<To give a less rushed description of the download URL...>

For the download URL for installing an entity, the simplest override is to specify it as configuration within the yaml blueprint, such as:
location: localhost
  services:
  - type: brooklyn.entity.webapp.jboss.JBoss7Server
    brooklyn.config:
      download.url: http://myserver/jboss-custom.tar.gz

Note that the install code expects the unpacked .tar.gz to be a folder named `jboss-as-${version}`, where ${version} is by default `7.1.1.Final`.

Also be warned that configuration by child entities - for example if you created a `ControlledDynamicWebAppCluster` (which contains nginx and JBoss7 servers), and if you defined:
  - type: brooklyn.entity.webapp.ControlledDynamicWebAppCluster
    brooklyn.config:
      download.url: http://myserver/jboss-custom.tar.gz
Then this download URL would be used for both the jboss and the nginx nodes!

---
The download URL can be in freemarker template format. Things like ${version} will be automatically substituted. The standard freemarker substitution rules will also call java bean based on dot separators. For example, in JBoss7 then ${entity.bindAddress} will call the JBoss7ServerImpl.getBindAddress() method. Freemarker is very powerful, but it can also get quite complicated if you're embedding conditionals etc.

There are a small number of default substitution values included: version, type and simpletype, entity and driver. The last two are intended for being able to invoke getter methods on them via freemarker.

(note we use freemarker in quite a few places, such as a templated configuration files - I'm not suggesting bindAddress would be useful in the context of a download URL!)

---
You can also override all sorts of things for download URLs via brooklyn.properties.

This is documented in the javadoc of DownloadProducerFromProperties:
https://github.com/apache/incubator-brooklyn/blob/master/core/src/main/java/brooklyn/entity/drivers/downloads/DownloadProducerFromProperties.java#L41-108
(This really needs to be added to the docs proper!)

Some of the options described there are rarely used, so please do shout if you encounter any problems. Your feedback on how well it meets your use case would also be much appreciated!

Aled


On 02/12/2014 12:27, Aled Sage wrote:
Hi Elvinas,

> Thanks for response and being patient with me. :)

No problem; thanks for persevering, and giving your feedback - it will help us to improve docs and the user experience.

---
For `provisioning.properties`, yes that's what I was thinking. I'll try to find time to give that a go, to see if it works for me or if there is some other config required.

Aled


On 02/12/2014 12:21, Elvinas Piliponis wrote:
Hello,

Thanks for response and being patient with me. :)

_*
"*__*silently attempted to install JBoss7*__*"*_
I'm not sure I follow this comment. Is this because you tried to
redefine SingleWebServerExample in catalog.xml?

You have explained already. I have misunderstood the intend od SimpleWebvServer. As running command line did not finish successfully due to default image have not had "which", I did not see the end result. And I did not read example page accurately... It tells "The simplest of these, SingleWebServerExample, starts JBoss on a single machine". :)

Regarding usage which, I would say this is an open question for discussion. CentOS does seem to include which to base installation set as showed by 'yum groupinfo "base"'. Fedora, apparently does not.

As for catalog and download URL, will read slowly and try to digest before writing any responses. No response is better than false alarm.

You could try changing the yaml to including `provisioning.properties`
nested inside a `brooklyn.config` section.
Meaning like this?
------------------
name: xStream-install
location: openstack

services:
- type: brooklyn.demo.SingleWebServerExample
   brooklyn.config:
     provisioning.properties:
       minRam: 512
       minCores: 1
       minDisk: 10
       autoAssignFloatingIp: true
       imageId: RegionOne/15df41d1-d5e1-4b1e-8427-1ffdd2eb011c
       hardwareId: RegionOne/24b24f68-535a-4c73-a052-52022240a2e3
       networkName: 0869c8a0-47ab-4eb1-a6eb-0072172cd880
       keyPair: brooklyn
       securityGroups: default
       privateKeyFile: /opt/brooklyn/brooklyn.pem
       loginUser: root
---------------------


Thank you
_________________________________________
Elvinas Piliponis

Studentų  g. 59-B707, LT-51365, Kaunas | Lietuva
Email: [email protected] | Mobile: +370 69807947

-----Original Message-----
From: Aled Sage [mailto:[email protected]]
Sent: 2014 m. gruodžio 2 d. 11:55
To: [email protected]
Subject: Re: Does Brooklyn ignore provisioning properties in YAML?

Hi Elvinas,

_*Non-java developers*_
Brooklyn should be accessible to non-java developers, particularly
people who are wiring together existing entities into an application
and
for people configuring the use of Puppet/Chef/etc for the individual
servers.

Saying that, there is certainly room for improvement - feedback like
yours is invaluable for that.

Where an entity has been written in Java, if there are problems with it
then it does lead the person debugging into that Java code. We are
looking to have a clearer separation of the Java from the bash etc, so
it's easier to debug and customize for non-java developers.


_*No which*_
Interesting - we'll look at how we can re-write the bash utilities to
not rely on `which` being available!

Do you want to create an issue on
https://issues.apache.org/jira/browse/BROOKLYN?


_*Download URLs*_
You can override the download url (e.g. for JBoss AS 7 install) by
setting in yaml brooklyn.config the `download.url` configuration
option.

It is also possible to configure Brooklyn to point at a different repo,
either for everything or for specific entities, in brooklyn.properties.
e.g. something like:

brooklyn.downloads.entity.JBoss7Server.url=http://myserver/jboss-as-
${version}.tar.gz

_*catalog.xml*_
Note that the catalog.xml is usually not the best way to give
customizations for entities (such as download URLs or run dir).

You can think of the catalog as just a set of pointers to existing
blueprints (which could be in Java or moving forwards more in yaml).
The
catalog specifies things like the Java class (or YAML) that defines the
application, the catalog version, icons, descriptions, etc.


_*Use of SingleWebServerExample*_
All the SingleWebServerExample does is to create an application with a
single JBoss 7 server in it. If that's what you want, an alternative
would be to use the yaml below:

     location: localhost
     services:
     - type: brooklyn.entity.webapp.jboss.JBoss7Server
        brooklyn.config:
          war: classpath://hello-world-webapp.war
          http.port: 8080+
          download.url:
     file://path/on/localhost/to/jboss-as-7.1.1.Final.tar.gz


You wrote:
"should not it fail instead of silently changing provisioning type
(SimpleWebServer -> JBoss7)?"

Hopefully this clears it up - the SimpleWebServerExample is an app that
just creates a JBoss7Server, hence that being what is created.

_*
"*__*silently attempted to install JBoss7*__*"*_
I'm not sure I follow this comment. Is this because you tried to
redefine SingleWebServerExample in catalog.xml?

The reference to SingleWebServerExample will continue to point at that
Java class.
See "Use of SingleWebServerExample" above.


_*Ignoring PDP attributes on io.brooklyn.camp.spi.pdp.Service*_
Not sure off hand why it ignored these.

You could try changing the yaml to including `provisioning.properties`
nested inside a `brooklyn.config` section.

I'll try to reproduce this later.

Right now, I have another call I need to jump on!

Aled


On 02/12/2014 07:52, Elvinas Piliponis wrote:
Hello,

Again either I am doing something wrong way (at least logs indicate
that), either I do not understand Brooklyn. I am no Java programmer
and most likely not intend to become one. Can this tool be useful for
me without resorting to rewrite application deployments scenarios in
Java? I know that we will use Brooklyn and will have some Java guys
to
code that that will be separate use case. At the moment I am looking
at infrastructure deployment orchestration. We already have server
deployment defined with Puppet but that covers single server only and
all interdependencies must be covered manually.

I am trying to provision default demo application with custom
provisioning properties.

Launching Brooklin SimpleWebserver  app from command line works:

% ${BROOKLYN_HOME}/bin/brooklyn launch --app
brooklyn.demo.SingleWebServerExample --location localhost

However it fails to build and exists as fedora 19 cloud image does
not
have which utility. So I have tried to launch Brooklyn specify it in
YAML through web page and got two issues:

1.I failed to understand how to specify local path for application on
server, instead of picking up from some web repo. There might be use
cases where no internet access will be available and only local files
should be used. Specifying
“<entry>/opt/brooklyn/examples/brooklyn-examples/simple-web-
cluster/target/classes</entry>”
in catalog.xml did not help.

I have tried to the following YAML but saw that Brooklyn did not bite
my attempt and silently attempted to install JBoss7…

name: xStream-install

location: openstack

services:

- type: brooklyn.demo.SingleWebServerExample

provisioning.properties:

minRam: 512

minCores: 1

minDisk: 10

autoAssignFloatingIp: true

imageId: RegionOne/15df41d1-d5e1-4b1e-8427-1ffdd2eb011c

hardwareId: RegionOne/24b24f68-535a-4c73-a052-52022240a2e3

networkName: 0869c8a0-47ab-4eb1-a6eb-0072172cd880

keyPair: brooklyn

securityGroups: default

privateKeyFile: /opt/brooklyn/brooklyn.pem

loginUser: root

2.While looking at status I saw that deployment failed to reach
contactable state in 2 minutes. Looking at end of logs shoed that
installation failed due to lack of “which”. Then I wondered why as I
have explicitly specified updated image in YAML with “which”. Upon
app
initialization I saw the following lines:

2014-12-01 14:41:36,159 WARN i.b.c.b.s.c.BrooklynEntityMatcher
[brooklyn-jetty-server-8081-qtp1846097386-22]: Ignoring PDP
attributes
on io.brooklyn.camp.spi.pdp


.Service@3a9c60b5[name=<null>,description=<null>,serviceType=brooklyn.d
emo.SingleWebServerExample,characteristics=[],customAttributes={provisi
oning.properties={mi
nRam=512, minCores=1, minDisk=10, autoAssignFloatingIp=true,
imageId=RegionOne/15df41d1-d5e1-4b1e-8427-1ffdd2eb011c,
hardwareId=RegionOne/24b24f68-535a-4c73-a052-

52022240a2e3, networkName=0869c8a0-47ab-4eb1-a6eb-0072172cd880,
keyPair=brooklyn, securityGroups=default,
privateKeyFile=/opt/brooklyn/brooklyn.pem, loginUser=roo

t}}]: {provisioning.properties={minRam=512, minCores=1, minDisk=10,
autoAssignFloatingIp=true,
imageId=RegionOne/15df41d1-d5e1-4b1e-8427-1ffdd2eb011c, hardwareId=

RegionOne/24b24f68-535a-4c73-a052-52022240a2e3,
networkName=0869c8a0-47ab-4eb1-a6eb-0072172cd880, keyPair=brooklyn,
securityGroups=default, privateKeyFile=/opt/br

ooklyn/brooklyn.pem, loginUser=root}}

….. some lines lower ….

2014-12-01 14:41:36,256 DEBUG b.l.jclouds.JcloudsLocation
[brooklyn-execmanager-KFABVyQR-82]: jclouds using templateBuilder
PortableTemplateBuilder[ports=[22], im

ageId=RegionOne/d5163d69-4b2c-4269-99ad-88506973037f,
hardwareId=RegionOne/24b24f68-535a-4c73-a052-52022240a2e3,
imageChooserFunction=brooklyn.location.jclouds.Br

ooklynImageChooser$3@6f8c09b2] for provisioning in
JcloudsLocation[openstack-
nova:http://10.12.208.5:5000/v2.0:brooklyn:brooklyn/openstack-
nova:http://10.12.208.5
:5000/v2.0@Nv2F1oKb] for
openstack-
nova:http://10.12.208.5:5000/v2.0@JBoss7ServerImpl{id=aQq5sjap}
Search for warning message does not reveal anything obvious:

           if (!attrs.isEmpty()) {
               log.warn("Ignoring PDP attributes on
"+deploymentPlanItem+": "+attrs);
Questions:

a)Does Brooklyn ignores provisioning.properties because it failed to
find right application?

b)Should not it fail instead of silently changing provisioning type
(SimpleWebServer -> JBoss7)?

Thank you

*_________________________________________*

*Elvinas Piliponis*

Description: Description: Description: Description: Description:
Description: Description: Description: Description:
cid:[email protected] <http://www.virtustream.com/>

Studentų  g. 59-B707, LT-51365, Kaunas *| *Lietuva

Email: [email protected]
<mailto:[email protected]> *|*Mobile: +370 69807947

*The information contained in this electronic mail transmission may
be
privileged and confidential, and therefore, protected **from
disclosure.*If you have received this communication in error, please
notify us immediately by replying to this message and deleting the
email and its attachments from all computers without copying or
disclosing it.

The information contained in this electronic mail transmission may be privileged and confidential, and therefore, protected from disclosure. If you have received this communication in error, please notify us immediately by replying to this message and deleting the email and its attachments from all computers without copying or disclosing it.


Reply via email to