On 14/08/12 18:18, Rost wrote:
> Hi All,
> 
> I would like to use puppet for deploying Jboss application.
> 
> The property file of my Jboss app need to be evaluated before moving in
> the conf dir as it's a template.
> 
> How could I make this kind of operation with native resources of puppet.
> 
> 
> *Example :*
> 
> I have this file *myapp.properties.tmpl* :
> 
> ApplicationName=${MY_APP_NAME}
> ApplicationVersion=${MY_APP_VERSION}
> ...
> 
> 
> And I have the file *global.properties* :
> 
> ${MY_APP_NAME}=helloworld
> ${MY_APP_VERSION}=1.0.0

This here feels like you're not solving the actual problem, but working
around a bug elsewhere in your design.

> I would like to replace variables in myapp.properties.tmpl with the
> right value in global.properties and generate the new file
> *myapp.properties* with
> 
> ApplicationName=helloworld
> ApplicationVersion=1.0.0
> 
> Is that possible, may be with tools like Augeas?

The first thing you need is to get the data ("helloworld", "1.0.0") into
Puppet.  Ideally via an ENC or hiera or similar.

If it only exists on the filesystem of the host at the start of a run
and you really must, you could use a fact, but you're going into weird
territory as your system build will then depend on the existing state of
the system.  Definitely an anti-pattern here, but possible.

You can use Augeas in facts, but only the properties lens as it exists
in master (rather than the 0.9.0 release) can parse that
global.properties file.  Something like this:

http://pastie.org/4475806
http://projects.puppetlabs.com/projects/facter/wiki/Facter_Augeas

Or do something similar in Ruby to pull the value out of the file on the
host and present it in a fact.

Once you have the value in Puppet, then creating or editing
myapp.properties with Augeas is trivial, or use a template:

augeas { "myapp.properties":
  lens    => "Properties.lns",
  incl    => "/path/to/myapp.properties",
  changes => [
    "set ApplicationName ${appname}",
    "set ApplicationVersion ${appversion}",
  ],
}

(Where $appname and $appversion are Puppet variables, facts or a proper
data source.)

Cheers,

-- 
Dominic Cleal
Red Hat Consulting
m: +44 (0)7817 878113

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to