I don't have *node-based* setup (all my configuration is module-based) so 
can't comment on that but I assume it should have worked that same way. To 
make it plain a and simple, could you follow the steps below and see if it 
works?

*On the puppet-master:*

   - # *mkdir -p /etc/puppet/modules/jb_test/{manifests,files}*
   - #* echo "import 'jb_test'" >> /etc/puppet/manifests/modules.pp*
   - Add: *import 'modules'* to */etc/puppet/manifests/site.pp*
   - #* cp /etc/group /etc/puppet/modules/jb_test/files/group_test*
   - Create *jb_config.pp:**/etc/puppet/modules/jb_test/manifests/jb_config.pp
   *

# /etc/puppet/modules/jb_test/manifests/jb_config.pp
>
> class jb_test::jb_config {
>
>     $j_conf = 'group_test'
>
>     define jb_dir($dir) {
>         $jj_conf = "$jb_test::jb_config::j_conf"
>
>         exec { "lnk_${dir}":
>              path    => [ '/bin', '/usr/bin' ],
>              command => "ln -s /opt/j_config/${jj_conf} /opt/${dir}/",
>              onlyif  => "test -d /opt/${dir}",
>          }
>     }
> }
>
*
* 
   
   - Create* init.pp:* */etc/puppet/modules/jb_test/manifests/init.pp*

# /etc/puppet/modules/jb_test/manifests/init.pp
>
> class cp_jboss_conf {
>
>     include jb_test::jb_config
>     $cp_file  = "$jb_test::jb_config::j_conf"
>     $conf_dir = '/opt/j_config'
>     #notify { "The file name is: ${cp_file}": }
>
>     # create directory recursively
>     exec { 'mkdir_jconf':
>         path    => [ '/bin', '/usr/bin' ],
>         command => "mkdir -p ${conf_dir}",
>         unless  => "test -d ${conf_dir}",
>     }
>
>     file {
>         "${cp_file}":
>         name    => "${conf_dir}/${cp_file}", mode => '0644',
>         owner   => 'root', group => 'root',
>         source  => "puppet:///modules/jb_test/${cp_file}",
>         require => Exec[ 'mkdir_jconf' ];
>     }
>
>     jb_test::jb_config::jb_dir {
>
>         'copy_to_1st':
>         dir => 'jboss_1';
>       
>        'copy_to_2nd':
>         dir => 'jboss_2';
>        
>         'copy_to_3rd':
>         dir => 'jboss_3';
>     }
> }
>

   - Modify *nodes.pp: **/etc/puppet/manifests/nodes.pp**
   *

node 'vm-jeeva2' inherits jeeva_base {
>     include cp_jboss_conf
> }
>


*On the puppet-agent:
* 
   
   - # *mkdir -p /opt/jboss_{1,3}*
   - # *puppetd --test**
   *


If every thing goes right (and I didn't miss anything down the line), you 
see these things on the agent(s):

   1. */opt/j_config* is created (if already not there)
   2. The file:* group_test* is copied in the */opt/j_config*
   3. A symbolic-link: *group_test -> /opt/j_config/group_test* is created 
   in each */opt/jboss_{1,3}*

*
*I think, that's what you basically asked for. The only difference is the 
symbolic-link (as opposed to the "copy") in this setup. In stead of the 
sysm-link, you can first copy the file to the */root* (or somewhere secure, 
if */tmp* is a security issue for the configuration file) and then copy the 
file from */root* to */opt/jboss_{1,2,3}*, whichever is available. 
Does it work for you? cheers!!



On Friday, April 13, 2012 6:49:47 PM UTC+1, Jeeva wrote:
>
> I followed your steps. now i am getting below error
>  
> Apr 13 17:42:44 pil-vm-pup-01 puppet-master[7899]: Could not find class 
> dev_jboss_jeeva for vm-jeeva2.aircell.prod at 
> /etc/puppet/manifests/nodes/jeeva_base.pp:2 on node vm-jeeva2.aircell.prod
> Apr 13 17:42:44 pil-vm-pup-01 puppet-master[7899]: Could not find class 
> dev_jboss_jeeva for vm-jeeva2.aircell.prod at 
> /etc/puppet/manifests/nodes/jeeva_base.pp:2 on node vm-jeeva2.aircell.prod
> Apr 13 17:42:44 pil-vm-pup-01 puppet-master[7899]: 
> (//vm-jeeva2.aircell.prod/Puppet) Could not retrieve catalog from remote 
> server: Error 400 on SERVER: Could not find class dev_jboss_jeeva for 
> vm-jeeva2.aircell.prod at /etc/puppet/manifests/nodes/jeeva_base.pp:2 on 
> node vm-jeeva2.aircell.prod
> Apr 13 17:42:44 pil-vm-pup-01 puppet-master[7899]: 
> (//vm-jeeva2.aircell.prod/Puppet) Using cached catalog
> Apr 13 17:42:44 pil-vm-pup-01 puppet-master[7899]: 
> (//vm-jeeva2.aircell.prod/Puppet) Could not retrieve catalog; skipping run
> Apr 13 17:43:44 pil-vm-pup-01 puppet-master[7899]: Could not find class 
> dev_jboss_jeeva for vm-jeeva2.aircell.prod at 
> /etc/puppet/manifests/nodes/jeeva_base.pp:2 on node vm-jeeva2.aircell.prod
>  
> i have jeeva_base.pp file under /etc/puppet/manifests/nodes and below is 
> its content
> --------------------------------
> node jeeva_base {
>         include dev_jboss_jeeva
> }
> --------------------------------------
>  
> also i have a another .pp file by name vm-jeeva2 under  
> /etc/puppet/manifests/nodes and below is its content. we have seperate .pp 
> file for each server name. one server is vm-jeeva2.
> ------------------
> node vm-jeeva2 inherits jeeva_base {
> }
> --------------------
>  
>
> what could be the problem ?
> On Thu, Apr 12, 2012 at 2:47 PM, Sans <r.santanu....@gmail.com> wrote:
>
>> You probably getting: "file not found" or something like that? It's
>> because you are trying to copy a file from one machine (i.e. puppet
>> server) to another machine, your puppet agent, using "cp" command.
>> Puppet has file{} resource and "source" parameter for that. Other than
>> that, if not typo, I don't see any gap between the source_path and the
>> dest_path in your "cp" command.
>>
>> Also, I think "class d_services::jboss" is wrong in your case. You
>> don't have any "d_services" module, I suppose. Try this: If "jmx-
>> console-users.properties" is the file that your are trying to copy,
>> then create a directory on your Puppet-master at "etc/puppet/modules/
>> dev_jboss_jeeva/files" and put the configuration file(s) in there
>> first. Then, use this:
>>
>>
>>
>> # /etc/puppet/modules/dev_jboss_jeeva/manifests/jboss.pp
>> --------------------------------------------------------
>>
>> class dev_jboss_jeeva::jboss {
>>
>>    define opt_dir($path) {
>>
>>        $j_conf = 'jmx-console-users.properties'
>>
>>        exec { "chk_${path}":
>>              path     => [ '/bin', '/usr/bin' ],
>>              command  => "test -d /opt/${path}",
>>         }
>>
>>        file { "${path}_${j_conf}":
>>            name    => "/opt/${path}/${j_conf}",
>>            mode    => '0644', owner => 'root', group => 'root',
>>            source  => "puppet:///modules/dev_jboss_jeeva/${j_conf}",
>>            require => Exec[ "chk_${path}" ];
>>        }
>>    }
>> }
>>
>>
>> Now, suppose you are copying the file: jmx-console-users.properties to
>> "/opt/jboss_1", "/opt/jboss_2" and "/opt/jboss_3" on the agent (if
>> available), change the init.pp like this:
>>
>>
>>
>> # /etc/puppet/modules/dev_jboss_jeeva/manifests/init.pp
>> --------------------------------------------------------
>> class copy_jboss_conf {
>>
>>    include dev_jboss_jeeva::jboss
>>    dev_jboss_jeeva::jboss::opt_dir {
>>
>>        'copy_to_1st':
>>        path => 'jboss_1';
>>
>>        'copy_to_2nd':
>>        path => 'jboss_2';
>>
>>        'copy_to_3rd':
>>        path => 'jboss_3';
>>    }
>> }
>> ******************************************************
>>
>>
>> Not tested, but should work. At least it's working for me in similar
>> fashion. Cheers!!
>>
>>
>>
>> On Apr 12, 6:40 pm, Munna S <19.mu...@gmail.com> wrote:
>> > Hi Sans,
>> >
>> > This is my jboss.pp file
>> >
>> > class d_services::jboss {
>> >     define opt_dir($path) {
>> >         exec { "copy_${path}":
>> >             path    => [ '/bin', '/usr/bin' ],
>> >             command => "cp 
>> /etc/puppet/modules/dev_jboss_jeeva/opt/jboss/
>> > 
>> jboss-4.2.3.GA/server/default/conf/props/jmx-console-users.properties/opt/${path}<http://jboss-4.2.3.GA/server/default/conf/props/jmx-console-users.properties/opt/$%7Bpath%7D>
>> ",
>> >             onlyif  => "test -d /opt/${path}",
>> >         }
>> >     }
>> >
>> > }
>> >
>> > this is my init.pp file
>> >
>> > class dev_jboss_jeeva {
>> >   include d_services::jboss
>> >     d_services::jboss::opt_dir {
>> >         'jboss_1':
>> >         path => '/opt/jboss/jboss-4.2.3.GA/server/default/conf/props/';
>> >     }
>> >
>> > }
>> >
>> > But i am still getting the error
>> >
>>
>> --
>> 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.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/puppet-users/-/DJgURZK09kcJ.
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