How to run a nested puppet module?

26 Views Asked by At

I have a relatively simple manual task that I am trying to automate using Puppet.

Steps I want to perform via Puppet:

  • Copy tarball over from Puppetmaster to several server 'client' nodes.
  • Untar the tarball on said server node.
  • Execute, one at a time, each of the installation agents 'install.sh' file.
  • Clean up (remove) original tarball bundle.

I was hoping not to have one huge init.pp file, but somehow have it a bit modular so that I could have a different class (?) for each of the agents that need to be installed on the 'client' server nodes.

How would I go about doing this? Examples are preferred so I can learn.

I tried something like this (to do the initial copy, untar and cleanup), but it's not exactly 'pretty'.

class dd_bundle {
  file { '/opt/apps':
    ensure => 'directory',
  }

  file { '/opt/apps/dd-app-bundle.tar.gz':
    source => 'puppet:///modules/dd_bundle/dd-app-bundle.tar.gz',
    ensure => file,
    replace => false,
    mode => '0664';
  }

  exec { 'tar -xf /opt/apps/dd-app-bundle.tar.gz':
    cwd => '/opt/apps',
    path => ['/usr/bin', '/usr/sbin',],
  }

  tidy { '/opt/apps/dd-app-bundle.tar.gz': }

}

It would be nice if there was a way I could just somehow have a way to have individual classes and then add them to the init.pp file, then I could make adjustments to each individual class (application) for doing its install part.

Just trying to figure out a streamlined way to make a manual process be automated.

0

There are 0 best solutions below