As I'm in over my head, let's supply you with (part of) the manifests in 
question:

The define:

define sugar::definitions_sug_wp (
      $template       = 'sugar/etc/httpd/conf.d/sugar6x.conf.erb',
      $client_domain  = "$title",
      $mysql_rootpwd  = "$mysql_password",
      $mysql_dbname,
      $mysql_pwd,
      $sugar_admin,
      $sugar_pwd,

    ) {

# This is for example to create the httpd.conf and the sugar-folder. So 
this has to be in both. As you can see, I parametrized the httpd-conf, so I 
can specify it in my class. Also, the  ${client_domain}-variable is used 
throughout this define.
    file {
    "/etc/httpd/conf.d/sug-${client_domain}.conf":
      content => template($template),
      owner   => 'root',
      group   => 'root',
      mode    => '0644',
      notify  => Service['httpd'];
    "/var/log/sugar/${client_domain}":
      ensure  => 'directory';
   }


# The following is specific to the WordPress-installation and doesn't need 
to be applied to every machine. So this part isn't in the define 'define 
sugar::definitions_sug'.
    file {
    # Configuratie van publieke html
    "/var/www/html/${client_domain}":
      owner   => 'apache',
      group   => 'apache',
      mode    => '0744',
      ensure  => 'directory';
    # Configuratiefile WordPress
    "/var/www/html/${client_domain}/wp-config.php":
      owner   => 'apache',
      group   => 'apache',
      mode    => '0744',
      require => File["/var/www/html/${client_domain}"],
      content => template('sugar/wordpress/wp-config.php.erb');

I call both defines ('sugar::definitions_sug_wp' and 'define 
sugar::definitions_sug') in the following class:
class sugar::instances {

    sugar::definitions_sug {
    # SugarCRM - ECM2
    'node1':
      mysql_dbname => 'dbname1',
      mysql_pwd    => 'password1';

    sugar::definitions_sug_wp {
    'node2':
      sugar_admin  => 'text1',
      sugar_pwd    => 'password2',
      mysql_dbname => 'dbname2',
      mysql_pwd    => 'password3';

I include this class on one node to get several sugar-only vhosts and 
several sugar+wordpress-nodes on that node.

Hope this helps you explain things to me!



On Monday, November 5, 2012 3:41:37 PM UTC+1, jcbollinger wrote:
>
>
>
> On Monday, November 5, 2012 3:48:58 AM UTC-6, Erwin Bogaard wrote:
>>
>> Thanks again for you reply, but it seems like you don't fully understand 
>> what I'm having problems with. So I'll try to clarify it a little more:
>> 1. The current way of using two defines is working flawlessly. So I (at 
>> least partly) understand the concepts surrounding those.
>> 2. Because I have two types of machines: some with just sugar and some 
>> with sugar and wordpress, I now use two defines that overlap in part 
>> (define1 contains all kinds of info about creating sugar db + unpacking 
>> tar, etc, while define2 contains all the sugar info of define1 + stuff 
>> about creating a wordpress db + unpacking wp tar, etc), this means editing 
>> two files when I change something in the sugar define. As this can lead to 
>> differing configurations because of editing errors (and always twice the 
>> work), I would like to be able to split the defines up, so I can call 
>> define1 (sugar) on all machines and define1 (sugar) and sefine 2 
>> (wordpress) on the other machines.
>> 3. Some of the variables are shared, for example the mysqld_pwd is used 
>> twice, and I add a different suffix for sugar and wordpress to get two 
>> databases. For the httpd-configuration, I specify a different template, 
>> which is easy to to with defines. So all instances have unique resources, 
>> hence the choice for defines, not classes.
>>
>> Does this help you help me?
>>
>
>
> No, not really.  You have been relatively clear about what you are trying 
> to accomplish, but I don't understand what is preventing you from 
> accomplishing it.  Perhaps that means you're stumbling over something that 
> seems trivial to me.  For example, if the real question is how to share 
> data between two or more defined types, then you have at least three 
> choices:
>
>    1. Define the data in a class, and have each definition reference the 
>    class variables instead of taking that data in the form of parameters.
>    2. Externalize the data (e.g. into an Hiera data store), and have each 
>    definition reference the needed values by the same fixed key.
>    3. Record the data in global variables, and have each definition 
>    reference the global values.  (I wouldn't recommend this one except as a 
>    temporary hack.)
>
> If that doesn't help then perhaps you should try reducing the problem to 
> the simplest possible example that captures the issue.  Often such an 
> exercise will itself help you work out the problem, but if it doesn't then 
> we can be a lot more helpful to you with actual (simple) manifests to 
> critique.
>
>
> John
>
>

-- 
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/-/OtbcKBd0GgIJ.
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