Boy, am I frustrated. I'm about ready to throw puppet out the window here. I'm trying to configure glusterfs, and you know, it kinda made sense to separate the data from the manifests, so I went ahead and put this into a YAML file, which hiera loads...
glusterfs_volumes: gfsvol01: volume_name: gfsvol01 master_node: gfs01.us1.xxx.com # Make sure only one node runs the gluster commands. nodes: - name: gfs01.us1.xxx.com bricks: - device: /dev/bcvg/disk1 brick_name: /var/bricks/gfsvol01-0 - device: /dev/bcvg/disk2 brick_name: /var/bricks/gfsvol01-1 - name: gfs02.us1.xxx.com bricks: - device: /dev/bcvg/disk3 brick_name: /var/bricks/gfsvol01-0 - device: /dev/bcvg/disk4 brick_name: /var/bricks/gfsvol01-1 For the last couple of days I have been dealing with the inadequacies of puppet in dealing with working with this kind of data structure. You can't easily iterate through it, and every time you do, you have to write a new definition that takes an array. The whole thing ends up turning into a giant complicated mess. I tried writing some custom functions in ruby that do things like, return a list of nodes for a volume, or return a list of bricks for a node, but it really irks me that I have to keep writing ruby scripts for this (since ruby makes my eyes bleed). So... what are my options here? Aren't we supposed to strive for separating the manifest from the data? I could probably get away with a few definitions that take a set of parameters. However, when the time comes to say, add a new node to the cluster, we have to modify the manifest. At one point, I had this working so that all you had to do was add a node to the yaml file, make ZERO changes to the manifest file, and after running puppet, it would add the node to the cluster. It may make my life easier if I flatten the yaml file, but then I'm changing the data to suit the limitations of the DSL. At this point, I'm very close to simply sticking with the yaml file, have puppet push that out to the clients, write some python scripts to do all the magic (reading the yaml file), and have puppet run those scripts with Exec {}. Is proper array/hash iteration ever going to be added to puppet? Doug. -- 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.