Hello .*, sorry this is a bit lengthy:
I'm in the progress of setting up a puppet system for our Linux cluster (SLES) and have a 'small' design question, since I'm not able to realize my ideas with capabilities of puppet as I have them in mind. At least up to now. The general setup looks like this: There is a central database where all information of the hosts are stored. Next to special hardware layout and network configurations it is stored which type of service a host is offering (e.g. cluster-batchnode, cluter-loginnode, server-nagios, etc.). Connected with this services are the puppet classes which have to be realized on a specific host. This is passed down to puppet by a YAML file with as a list of classes and parameters per host. The classes are organized in modules with a visioning, e.g. ssh-1::client, ssh-1::server, auth-3::ldap etc. In this way (in view of change management), when changing something in the module, I copy the whole module to a new version and (after some testing) just migrate all the affected services to the new module version. So far so good. Now my problem emerges, when a module depends on an other module. This should be version independent (and even better independent of the module name). For example: I have a generic nas-<version>::virtual module, which provides mountpoint as virtual resources. These can be realized in multiple other modules, without explicitly prepending a Nas-<version>::Virtual, so I am independent of version and module name. Now the 'but': Typically this virtual resources would depend on other resources (like a mount would depened on a directory to exists). But since requirements are not automatically realizes, this does not work! The virtual file resource for the directory is not automatically realized when realizing the mount. There are multiple solution I thought of: 1. putting everything into a virutal define: but this does not work, since the define is not globally known, so I have to reference it with exlipcit module and version Nas-<version>::Virtual::<Define>... 2. changing the 'realize' function to an rvalue and using it in the require parameter to realize the requirement. But this does not work, since the requirements are already realized during 'reading' the definition of the main virtual resource and not just when realizing it! 3. Taking away the version numbering in the module name and giving each module an own module directory (in fileserver.conf like for the files directory with a %h variable) and symlinking the required module version into this per host directory. But this only works for file not for modules, ... So I'm quite lost at this point... The automated realization of required resources would already solve everything here (Issue here: <http://projects.puppetlabs.com/issues/3178>). But up to now I'm stuck here and some hundreds of nodes want to be puppified... :-) I'm grateful for ideas. There might be a big design flaw as well.... Thanks a lot in advance for reading so much of my brain dump... Bye, Frederik -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-us...@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.