Time Nick Message
15:04 pdurbin moving #puppet from svn to git and adding dynamic environments, in 15 minutes. I smell a blog post -- http://twitter.com/sjoeboo/status/167000795194195970
15:04 pdurbin now that our puppet is on git, i'm itching to make a change but i have other things to do!
15:05 shuff well done
15:25 Pax Has anyone printed array elements in ERB templates?
15:25 Pax I don't mean like looping through an array, I mean like calling print element[1]
15:29 shuff print() in ERB == teh badness
15:29 shuff my gut feeling is that your problem is there
15:31 shuff i take it there's some reason why <%= element[1] -%> doesn't do what you want?
15:34 whorka one of our affiliates is looking for a 1/2" reel tape drive (on [abcd-hard]). last time I saw one of those it was connected to a VAX.
15:45 sjoeboo http://sjoeboo.github.com/blog/2012/02/08/moving-puppet-from-subversion-to-git-in-15-minutes-while-adding-dynamic-environments/
15:45 sjoeboo ta da!
15:45 shuff w0000t
15:51 shuff oh hey, guess what? FAS has a Status.Net installation: https://fasnet.fas.harvard.edu/
15:51 shuff pdurbin: still hate the magical AJAXy new Twitter interface? :)
15:52 Pax @shuff
15:53 Pax yeah, I think it's actually less of a problem with printing elements since foo = [ 'test', 'test1'] then calling the element works
15:53 Pax I think it's that I'm trying to do math in the array
15:53 Pax so here's my examples so far
15:53 Pax $cpu = "$::processorcount" * 2 + 1
15:53 shuff this gets better and better
15:54 Pax $load = [ "${cpu} + 25", "${cpu} + 20", "${cpu} + 15", "${cpu} + 10", "${cpu} + 5", "${cpu}" ]
15:54 Pax $load = [ "${cpu} + 25", "${cpu} + 20", "${cpu} + 15", "${cpu} + 10", "${cpu} + 5", "${cpu}" ]
15:54 Pax whoops sorry to many pastes
15:56 Pax ok so simplifying it like this
15:56 Pax $load = [ "${cpu}", "${cpu}", "${cpu}", "${cpu}", "${cpu}", "${cpu}" ]
15:56 shuff just to be clear: the code you're posting is in your Puppet manifests, yes? not Ruby statements in a template?
15:56 Pax yup, it's all in the manifest, I was hoping to just do all the math there rather then make the template harder to read
15:56 shuff makes sense
15:57 Pax so doing the above simplification gets me this error on compile
15:57 Pax err: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template nagios/etc/nagios/nrpe.cfg.erb: wrong number of arguments (0 for 1) at /etc/puppet/development/modules/nagios/manifests/monitored.pp:35 on node awesome.noc.harvard.edu
15:58 Pax So i'm thinking that maybe an array element can't be another variable?
15:59 shuff can you paste the portion of your template where you dereference that variable?
15:59 Pax <%= load[1] -%>
16:00 Pax which works, if the load array is static
16:00 Pax so $load [ '1', '2' ] works
16:00 shuff i vaguely suspect that the issue is quoting
16:00 Pax while $load [ "$x", "$y" ]
16:01 shuff let me hack in irb for a moment
16:01 Pax you know I was just wondering
16:02 Pax Hmm neither this
16:02 Pax $cpu = 1
16:02 Pax $load = [ $cpu, $cpu, $cpu, $cpu, $cpu, $cpu ]
16:02 Pax nor this
16:02 Pax $load = [ "$cpu", "$cpu", "$cpu", "$cpu", "$cpu", "$cpu" ]
16:03 Pax worked
16:04 shuff ok
16:04 shuff here comes some shenanigans
16:05 shuff $base_load = [ 25, 20, 15, 10, 5, 1 ]
16:06 shuff $load = split(inline_template('<%= base_load.collect { |x| x + cpu }.join(",") -%>'), ',')
16:07 shuff and i believe you should now be able to reference e.g. <%= load[2] -%> in a template
16:07 shuff look upon my works, ye mighty, and despair
16:19 Pax hmm I get Error 400 on SERVER: Failed to parse inline template: can't convert Fixnum into String
16:19 shuff hmmmm
16:20 shuff maybe replace 'x + cpu' with 'x.to_s + cpu'?
16:21 shuff or populate $base_load = [ "25", "20", … ] etc.?
16:22 shuff i find it *really* frustrating that Ruby's magical quasi-typeless variables try really hard to DWIM up until they don't, and then they fail unhelpfully
16:22 shuff variables should have sigils just like Larry intended :)
16:23 Pax LOL
16:47 Pax I think I'm going to end up doing it right in the template in the end, at the moment i'm thinking that the amount of jiggering i'd have to do in the manifest will make it so confusing as to make it hard for another admin to figure out what I'm doing
16:48 shuff you could write some comments!
16:49 Pax say what now? whats a comment?
16:49 Pax :p
17:09 agoddard pdurbin: ohAi
17:10 pdurbin agoddard: welcome!
17:12 agoddard Not sure I totally follow the erb stuff, got a gist of it? I'd be happy to see if I have an example from a chef erb template..
19:09 pdurbin someday i need to write a script to programatically look at our vmware installation and get a list of each guest's name and whether it's off or running
19:13 shuff http://search.cpan.org/dist/Sys-Virt/
19:13 shuff available from repoforge :)
19:13 shuff or you can use carlasouza's puppet-virt module and use the built-in facts
19:14 pdurbin Sys::Virt talks to vmware? i've only used it for kvm
19:14 shuff http://libvirt.org/drvesx.html
19:14 shuff done!
19:15 pdurbin have you used this?
19:16 shuff nope
19:16 shuff but it appears well-documented
19:17 shuff and this sort of application is the whole point of libvirt
19:20 pdurbin i'll report back if i get it working. not today. thanks
19:21 shuff sounds good
19:40 agoddard I did some similar stuff with Chef a while back, but never finished it
19:40 agoddard https://github.com/agoddard/knife-libvirt
19:41 agoddard there might be some takeaways in https://github.com/agoddard/knife-libvirt/blob/master/libvirt_server.rb if they're any help..
19:48 pdurbin this looks great, but it's all "host = qemu+tls://..." stuff so kvm, not vmware, right?
19:49 pdurbin similar to what we're doing here, from what i can tell: http://sjoeboo.github.com/blog/2012/01/05/getting-kvm-domain-info-into-puppet-facts/
19:52 pdurbin so glad sjoeboo blogs so i don't have to
19:52 sjoeboo haha
19:52 sjoeboo with infrequency
20:28 agoddard afaik it's just straight up libvirt, so you could likely change the connection params to suit, but I haven't used libvirt w/ VMware before
20:34 pdurbin yeah, i'll play with it