nosolutions / puppet-tsm

Install and manage TSM (Tivoli Storage Manager) client with puppet
GNU General Public License v3.0
13 stars 21 forks source link

Issue with service dependency on dsm.sys #14

Closed paulbadcock closed 9 years ago

paulbadcock commented 9 years ago

Using the module on RHEL6.6 I receive the following error when running the tsm class:

Failed to apply catalog: Could not find dependency File[/opt/tivoli/tsm/client/ba/bin/dsm.sys] for Service[dsmsched] at /etc/puppet/environments/ENV_1/modules/tsm/manifests/service/redhat.pp:34

This is with the parameter service_manage set to true. If the service_manage is set to false the module will run but the service will not be obviously managed. It seems a require might be required on the package before attempting to manage the service?

Thanks!

tosmi commented 9 years ago

a few questions before i try to reproduce this:

seems like somehow there's no file resource for dsm.sys in the catalog, so the the service cannot depend on it....

thanks toni

paulbadcock commented 9 years ago

I think the config_hash below is formatted incorrect but those are the exact values I'm using. To explain these are the puppet class parameters as set in Katello and it's not a 1:1 relation.

class tsm {
  tcp_server_address  => 'tsm.domain.tld',
  set_initial_password  => true,
  service_manage => true,
  initial_password => 'password',
  config_replace => true,
  config_hash => [
    errorlogname: /opt/tivoli/tsm/client/ba/bin/dsmerror.log
    passwordaccess: generate
  ],
}

Thanks again for a prompt response!
tosmi commented 9 years ago

ok. i'll try to reproduce this asap.

tosmi commented 9 years ago

hm, i think you got the puppet syntax for using the tsm class wrong, this works for me:

class { 'tsm':
  tcp_server_address  => 'tsm.domain.tld',
  set_initial_password  => true,
  service_manage => true,
  initial_password => 'password',
  config_replace => true,
  config_hash => {
    errorlogname => '/opt/tivoli/tsm/client/ba/bin/dsmerror.log',
    passwordaccess => 'generate'
  },
}

try to use the tsm class with the code above, if it works the issue must be within katello. especially config_hash is wrong, [] is used for arrays not for hashes and when using a hash ({}) key/values a separated by =>.

hth toni

paulbadcock commented 9 years ago

Yeah I think it's the way Katello is evaluating the hash and presenting it to Puppet, when I use:

{ errorlogname => '/opt/tivoli/tsm/client/ba/bin/dsmerror.log', passwordaccess => 'generate' }

The output dsm.sys results in:

* standard options
SErvername  tsm
   COMMMethod            TCPip
   TCPPort               1500
   TCPServeraddress      tsm.domain.tld
   INCLExcl              /opt/tivoli/tsm/client/ba/bin/InclExcl.local

* additional options
   errorlogname => '/opt/tivoli/tsm/client/ba/bin/dsmerror.log' 
   passwordaccess => 'generate' 

* settings included from dsm.sys.local (if any)

If I use

errorlogname: /opt/tivoli/tsm/client/ba/bin/dsmerror.log
passwordaccess: generate

The output dsm.sys results in:

* standard options
SErvername  tsm
   COMMMethod            TCPip
   TCPPort               1500
   TCPServeraddress      tsm.domain.tld
   INCLExcl              /opt/tivoli/tsm/client/ba/bin/InclExcl.local

* additional options
   errorlogname   /opt/tivoli/tsm/client/ba/bin/dsmerror.log
   passwordaccess generate 

* settings included from dsm.sys.local (if any)

For a FYI these are the settings I've used in Katello as a smart variable. It's just curious it's only RHEL6 but fine for RHEL7. hash_defined

paulbadcock commented 9 years ago

An update, I've been testing out the module with RHEL6/7 and commenting out line 33 in manifests/service/redhat.pp has corrected the issue.

I think there still is an issue with the module. I'm going to test the setup today using a notify on the file and let you know the results.

tosmi commented 9 years ago

the thing is that the concat module should create a file resource for dsm.sys. so if i understand correctly dsm.sys gets created, but there's no file resource. what's the value of $::tsm::config? the default?

tosmi commented 9 years ago

another question: what version of the tsm client are you using?

paulbadcock commented 9 years ago

dsm.sys isn't created but if I touch the file on the filesystem it still won't complete because the file resource isn't in existence according to the puppet run. $::tsm::config is the default.

7.1.2 here's the packages installed: TIVsm-BA-7.1.2-0.x86_64 TIVsm-API64-7.1.2-0.x86_64

tosmi commented 9 years ago

hm, the question is: why is there no dsm.sys? according to the code in config.pp it should create a new one from the template. to really find the root cause you should try the code i've posted above and run puppet apply with --debug. please post the output or better create a gist that includes a detailed descripton of every step you've taken and the complete output of the commands you where running.

i'll try to reproduce this with tsm 7.1.2, but i don't think it's an issue with the package.

paulbadcock commented 9 years ago

Yeah it should. From my testing I was able to fix the issue with Katello with the following changes: https://github.com/paulbadcock/puppet-tsm/commit/8ced2e2cdf662739a4393a72359d39c6a42109e9

I don't think it's an ideal solution as your keeping the service as an option but it fixed my issues.

tosmi commented 9 years ago

ah, ok. maybe thats the better solution for restarting the dsmsched service. could you open a pull request for this change? i'm going to releases a bugfix...

tosmi commented 9 years ago

what version of puppet are you running?

paulbadcock commented 9 years ago

3.6.2 (Standard version in Satellite6/Katello RHEL repos) Package version is: puppet-3.6.2-1.el6sat.noarch

The only thing I worry about is by introducing the notify to service might fail if your using service_manage => false on the parameter. I put in the pull request here: https://github.com/nosolutions/puppet-tsm/pull/17

Some days I really hate Puppet's dependencies :)

tosmi commented 9 years ago

could you try to run puppet agent --debug? maybe i find a clue why there's no File resource for dsm.sys in you catalog...