[Puppet Users] Resource Scope
I can't work this out and I'm getting frustrated. :( Puppet is complaining: err: Failed to apply catalog: Could not find dependency Lvm::Volume_group[bcvg] for Lvm::Application_volume[cache] at /truth/sauce/env/prod/modules/object_store/manifests/server.pp:47 Yet, if I comment out that line so that puppet runs ok, and then look at the state.yml file on the client, I see: Lvm::Volume_group[bcvg]: !ruby/sym checked: 2012-10-08 17:05:45.117364 +00:00 Now, according to the puppet docs at http://docs.puppetlabs.com/puppet/2.7/reference/lang_scope.html, resource titles are all global. So what gives? By definition, this should not be occurring. 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.
[Puppet Users] PuppetConf speakers contact info
I'm trying to find email addresses of some of the speakers from Puppet Conf last week. They aren't on the web site... maybe due to spamming concerns. Short of Googling, how can I get these? Also... are there slides available yet? What about video? 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.
[Puppet Users] Puppetconf Feedback
Anyone know if there's a feedback mechanism for Puppetconf? 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.
Re: [Puppet Users] Re: Systems Provisioning
I probably should have been clearer with my question. I was more interested in how people are managing certificates? Even if you use autosign, you still need to clean certificates manually. Doug. On Mon, Sep 17, 2012 at 6:25 AM, Keiran Sweet kei...@gmail.com wrote: Hi There, I manage a relatively large RHEL environment, we handle provisioning as follows: - PXE + Kickstart to bootstrap and install the base OS + Puppet client onto the platform, be it VMWare or bare metal - Kickstart post scripts put a basic puppet configuration file in place on the host, and a number of the values for things such as environment and puppetmaster come from Foreman's Macro's, this allows values in the ENC to flow into the kickstart files before your first puppet run. We then run in the %post section of the kickstart file the following: - A Puppet run that bootstraps the puppet client using tags ie, --tags puppet::client - A full puppet run via puppet agent -tov which applys the SOE to the platform That provides on first boot a fully configured RHEL server that includes all our additional software and customisations in about 3-5 minutes (not including POST) In regards to certs, we have a relatively open autosign.conf on our build networks, so we can provision servers , physical or virtual quite quickly by just hitting F12 for a network boot. I am sure there are some cleaner/more secure things we can do provisioning wise, however these have been slightly hindered by the RHN Satellite server i've been slowly pulling out of the environment at the same time, as it had the potential to break things if i wasnt careful. ENC wise, I can't recommend Foreman enough, version 1.x is just brilliant, you can see the macros it can provide here: http://theforeman.org/projects/foreman/wiki/TemplateWriting Hope this helps, K On Sunday, September 16, 2012 7:22:03 AM UTC+1, Douglas wrote: I'm wondering what people are doing systems provisioning with, ie the process that gets puppet installed onto a system, running for the first time, and also the handling of certificate signing and so forth. I don't see this topic discussed much. The mc-provision tools at https://github.com/ripienaar/mcollective-server-provisioner don't seem to be actively developed anymore, or at least I wasn't able to find enough documentation to be able to effectively make use of it. Doug -- 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/-/NrKmbHHiaq8J. 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Systems Provisioning
I'm wondering what people are doing systems provisioning with, ie the process that gets puppet installed onto a system, running for the first time, and also the handling of certificate signing and so forth. I don't see this topic discussed much. The mc-provision tools at https://github.com/ripienaar/mcollective-server-provisioner don't seem to be actively developed anymore, or at least I wasn't able to find enough documentation to be able to effectively make use of it. 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.
[Puppet Users] Skipped Resources 'running on a host' ?
My puppet client is producing this: debug: /Schedule[daily]: Skipping device resources because running on a host debug: /Schedule[monthly]: Skipping device resources because running on a host debug: /Schedule[hourly]: Skipping device resources because running on a host debug: /Schedule[never]: Skipping device resources because running on a host debug: /Schedule[weekly]: Skipping device resources because running on a host debug: /Schedule[puppet]: Skipping device resources because running on a host When used with the --summarize option, it causes 6 skipped resources. Puppet in turn, exits with exit code 2. How can I remove these and presumably get puppet to then return 0? 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.
[Puppet Users] Virtual Resources and create_resources
So, it seems that create_resources doesn't support virtual resources. Suggestions? Workarounds? 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.
[Puppet Users] Dependency Cycles.
I know it's highly unconstructive, but I just wanted to say that I am sick and tired of getting these, and they completely piss me off. Debugging this is a friggin nightmare. *sigh* err: Could not apply complete catalog: Found 1 dependency cycle: (Exec[apt-update] = Package[lvm2] = Class[Lvm::Setup] = Stage[stage3] = Stage[main] = Class[Main] = Exec[apt-update]) Try the '--graph' option and opening the resulting '.dot' file in OmniGraffle or GraphViz notice: Finished catalog run in 0.45 seconds 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.
[Puppet Users] Resource Chaining Classes
Why does this: Class['network::base'] - Class['apt::base'] - Class['lvm::setup'] - Class | | generate this error? err: Could not retrieve catalog from remote server: Error 400 on SERVER: Resource type class doesn't exist at /truth/sauce/env/prod/modules/role/manifests/common.pp:18 on node mon01.ap1.xxx.com warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run I've been repeatedly told to stop using run stages, and use resource chaining instead. However, without putting the Class | | at the end, to indicate that every other class should come afterwards, the functionality is not the same. With run stages, I could specify that classes A, B and C should applied first, before everything else. Omitting the Class | | from the end gets rid of the error. However, this means that there is no guarantee that these three classes will be applied before the rest. Hoping Mr Pienaar doesn't thing that such a scandalous and negative question is not considered anti social behaviour. 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.
Re: [Puppet Users] Resource Chaining Classes
On Mon, Sep 10, 2012 at 1:41 PM, Calvin Walton calvin.wal...@kepstin.ca wrote: On Mon, 2012-09-10 at 12:34 -0700, Douglas Garstang wrote: Why does this: Class['network::base'] - Class['apt::base'] - Class['lvm::setup'] - Class | | generate this error? err: Could not retrieve catalog from remote server: Error 400 on SERVER: Resource type class doesn't exist at /truth/sauce/env/prod/modules/role/manifests/common.pp:18 on node mon01.ap1.xxx.com warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run Classes are not resources. As a result, you cannot use the resource collection syntax | | on classes. Even if it worked, this wouldn't do what you wanted! Class | | would include Class['network::base'] and all the others, giving dependency cycles, like this: Class['network::base'] - Class['apt::base'] - Class['lvm::setup'] - Class['network::base'] I've been repeatedly told to stop using run stages, and use resource chaining instead. However, without putting the Class | | at the end, to indicate that every other class should come afterwards, the functionality is not the same. With run stages, I could specify that classes A, B and C should applied first, before everything else. If you're sure that you will always need these classes run before everything else, a run stage might still make sense. You would want to have one run stage in addition to main, perhaps like this: stage { 'early_setup': before = Stage['main'], } class { 'network::base': stage = 'early_setup', } class { 'apt::base': stage = 'early_setup', } class { 'lvm::setup': stage = 'early_setup', } Class['network::base'] - Class['apt::base'] - Class['lvm::setup'] (In your case, you'd want to put the exec for apt-get update into the same 'early_setup' stage as well, for example by putting it into the apt::base class). If you later add additional apt repositories, you'd have to put them into the same early stage as well, so they can be configured before doing the apt-get update. Everything else can then go in the main stage, and should be ordered only relative to each-other. The general advice that I've seen is that you should use a limited number of stages only for cases like this where you need some system setup that is independent of the other things that you'll be installing on the system, and must be ordered before (or after) *everything* else. Do keep in mind the things listed in http://docs.puppetlabs.com/puppet/2.7/reference/lang_run_stages.html#limitations-and-known-issues in particular, make sure that the classes in the non-main stage don't include other classes without setting the stage on them as well! Calvin, Thanks. Your describing exactly what I had, before I was told to stop using run stages and use resource chaining instead. Apparently resource chaining provides the same functionality as run stages. Seems that it indeed does not. 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.
[Puppet Users] Nagios and www-data users.
I'm sure people have hit this problem before. In my nagios module, the nagios command pipe file at /var/lib/nagios3/rw/nagios.cmd is owned by the nagios user, but needs to be written to by the www-data user. Adding the www-user to the nagios group is one solution, but that requires that the nagios module potentially modify the www-data user, which seems bad. What's the best way to do this? I tried to explicitly define the www-data user in it's own class, and then create another nagios class that inherits from that so that I could do plusignment, but I obviously have the syntax wrong. Puppet doesn't like this. class nagios::users inherits users::www-data { User['www-data'] { group + ['nagios'] } } 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.
[Puppet Users] Puppet smoking crack?
Couple of questions. Firstly, what's the plugin error about? puppet agent --onetime --test --verbose info: Retrieving plugin err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from source(s) puppet://puppet/plugins info: Caching catalog for mon01.ap1.xxx.com info: Applying configuration version '1346878830' err: /Stage[main]/Xxx::Nagios::Server/File[/var/lib/nagios3]: Failed to generate additional resources using 'eval_generate': Cannot manage files of type fifo notice: Finished catalog run in 3.63 seconds Secondly, I think puppet is smoking crack. Why is it telling me that it can't manage files of type fifo when that is not what the manifest has? The manifest has: file { '/var/lib/nagios3/rw': owner = 'nagios', group = 'www-data', mode = '0750'; } The fifo file is IN the rw directory 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.
Re: [Puppet Users] Puppet smoking crack?
On Wed, Sep 5, 2012 at 2:23 PM, Christopher Wood christopher_w...@pobox.com wrote: (inline) On Wed, Sep 05, 2012 at 02:04:59PM -0700, Douglas Garstang wrote: Couple of questions. Firstly, what's the plugin error about? puppet agent --onetime --test --verbose Could you also try with --debug? I could. What are we looking for? info: Retrieving plugin err: /File[/var/lib/puppet/lib]: Could not evaluate: Could not retrieve information from source(s) puppet://puppet/plugins Worth looking into your pluginsync config here. I have on the client 'pluginsync = true' in the [main] section. info: Caching catalog for mon01.ap1.xxx.com info: Applying configuration version '1346878830' err: /Stage[main]/Xxx::Nagios::Server/File[/var/lib/nagios3]: Failed Do you have a declaration /var/lib/nagios3? What does that say? Nope. The manifest only has: file { '/var/lib/nagios3/rw': owner = 'nagios', group = 'www-data', mode = '0750'; } 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.
Re: [Puppet Users] Re: puppetlabs-stdlib
Cool. thanks for fixing. On Thu, Aug 30, 2012 at 3:00 PM, Jeff McCune j...@puppetlabs.com wrote: On Wed, Aug 29, 2012 at 12:20 PM, Douglas Garstang doug.garst...@gmail.com wrote: Really? From the function reference at: http://docs.puppetlabs.com/references/latest/function.html Common ones seem to be create_resources, crit, defined, err, extlookup, fail, file and so on. I've fixed up the README, the function list in the doc is accurate for the 3.0.0 release of stdlib. https://github.com/puppetlabs/puppetlabs-stdlib/blob/master/README.markdown Hope this helps, -Jeff -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] puppetlabs-stdlib
I'm confused about this... https://github.com/puppetlabs/puppetlabs-stdlib/ I see a lot of functions there that are the same as the ones that come standard with puppet. If I create a module and dump this stuff in there, what happens to the existing stuff? How does puppet know which one to use? 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.
Re: [Puppet Users] Re: puppetlabs-stdlib
Really? From the function reference at: http://docs.puppetlabs.com/references/latest/function.html Common ones seem to be create_resources, crit, defined, err, extlookup, fail, file and so on. Doug. On Wed, Aug 29, 2012 at 11:57 AM, jcbollinger john.bollin...@stjude.org wrote: On Wednesday, August 29, 2012 11:58:13 AM UTC-5, Douglas wrote: I'm confused about this... https://github.com/puppetlabs/puppetlabs-stdlib/ I see a lot of functions there that are the same as the ones that come standard with puppet. If I create a module and dump this stuff in there, what happens to the existing stuff? How does puppet know which one to use? That's odd. I don't see anything in there that comes standard with Puppet. Would you care to give some examples? Maybe I'm just missing the obvious. 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/-/dTHHvPBQFwMJ. 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Debugging Custom Stuff
So... how can I debug ruby code for custom functions? Putting a 'puts' in the ruby script doesn't actually cause anything to go anywhere. 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.
[Puppet Users] Uber Frustration with Puppet.
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.
[Puppet Users] Hiera lookup by function.
In addition to hiera looking at files based on environment and node role etc, I'd like to be able to specify a file name based on function. Ie break keys into files by function. Is there a way to do this? 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.
Re: [Puppet Users] Re: Exec{} keeps running
Thanks. This one turned out to be user error. :) On Tue, Aug 28, 2012 at 7:08 AM, jcbollinger john.bollin...@stjude.org wrote: On Monday, August 27, 2012 5:39:36 PM UTC-5, Douglas wrote: Argh. I have the definition below. The gluster peer probe command has already been executed successfully, and I'm testing it with 'peer status'. Running the unless= command yields: root@gfs01:~# /usr/sbin/gluster peer status | /bin/grep gfs02.us1.xxx.com Hostname: gfs02.us1.xxx.com root@gfs01:~# echo $? 0 Therefore, the command should never run again, but it is, as evidenced by the fact that /tmp/foo keeps getting X appended to it. define glusterfs::probe_peer ( $ensure, $master_node ) { if $master_node == $::fqdn { case $ensure { 'probed': { exec { add-peer-$name: #command = /usr/sbin/gluster peer probe $name, command = /bin/echo X /tmp/foo, logoutput = true, unless = /usr/sbin/gluster peer status | /bin/grep $name; } } } } } Usually this kind of problem arises when the command being run (the 'unless' command in this case) relies on an environment variable whose presence or value differs in an interactive shell from what the (very sparse) environment in which an Exec runs things. In this case, I also don't have enough information to rule out the possibility that $name's value differs from the expected value of gfs02.us1.xxx.com. 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/-/aOuMVbKCDKIJ. 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Hash Access... Frustrating!
Boy... accessing hashes in puppet is downright painful. I have this in a yaml file... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - gfs01.us1.xxx.com hostname: gfs01 state: mounted - gfs02.us1.xxx.com hostname: gfs02 state: unmounted - gfs03.us1.xxx.com hostname: gfs03 state: mounted I'm loading it with: $config = hiera('glusterfs_volumes') $nodes = $config['gfsvol01']['nodes'] ... etc Works fine. I'm also calling a definition like this: glusterfs::add_bricks { [$nodes]: master_node = $master_node, brick_store = $brick_store, volume_name = $name, require = Glusterfs::Add_peers[$nodes]; } The question is, how do I access the hostname and state keys inside each node? The following (inside add_bricks): $node = $name['hostname'] notice (DEBUG nodes=$name) notice (DEBUG NODE=$node) yields, for each call to add_bricks: DEBUG nodes=statemountedgfs01.us1.xxx.com hostnamegfs01 DEBUG NODE= I can see the hash in $name... I just can't access the 'state' or 'hostname' keys, which are obviously there. How...? 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.
Re: [Puppet Users] Re: Hash Access... Frustrating!
Having fixed the yaml... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - name: gfs01.us1.xxx.com bricks: - /var/bricks/b1 - name: gfs02.us1.xxx.com bricks: - /var/bricks/b2 - name: gfs03.us1.xxx.com bricks: - /var/bricks/b3 The issue is now how do I iterate over the nodes? They are no longer an array. They are an array of hashes, which puppet doesn't want to iterate over. Doug. On Tue, Aug 28, 2012 at 2:44 PM, jcbollinger john.bollin...@stjude.org wrote: On Tuesday, August 28, 2012 2:55:20 PM UTC-5, Douglas wrote: Boy... accessing hashes in puppet is downright painful. I have this in a yaml file... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - gfs01.us1.xxx.com hostname: gfs01 state: mounted - gfs02.us1.xxx.com hostname: gfs02 state: unmounted - gfs03.us1.xxx.com hostname: gfs03 state: mounted I'm loading it with: $config = hiera('glusterfs_volumes') $nodes = $config['gfsvol01']['nodes'] ... etc Works fine. I'm also calling a definition like this: glusterfs::add_bricks { [$nodes]: master_node = $master_node, brick_store = $brick_store, volume_name = $name, require = Glusterfs::Add_peers[$nodes]; } The question is, how do I access the hostname and state keys inside each node? The following (inside add_bricks): $node = $name['hostname'] notice (DEBUG nodes=$name) notice (DEBUG NODE=$node) yields, for each call to add_bricks: DEBUG nodes=statemountedgfs01.us1.xxx.com hostnamegfs01 DEBUG NODE= I can see the hash in $name... I just can't access the 'state' or 'hostname' keys, which are obviously there. How...? Resource names are strings. If you try to use a hash as a resource name then it will be flattened. Generally speaking, you have several options: you could load the hash into a class variable, and have your definitions access it from there. You could also pass it as a parameter to your definition. You could even have the definition load it (again) via hiera. Sometimes the create_resources() function is convenient for unpacking a hash of hashes. I'm afraid I cannot recommend any specifics to you, however, because your YAML is not valid (according to http://yaml-online-parser.appspot.com/ and my own eyes), so I don't know what the data structure is supposed to be. It looks like something based on create_resources() might work out nicely for you, but I can't be sure. 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/-/cS8_5qGpd8wJ. 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
Re: [Puppet Users] Re: Hash Access... Frustrating!
It looks like it's flattening the darned thing out... :( err: Could not retrieve catalog from remote server: Could not intern from pson: Could not convert from pson: Could not find relationship source Glusterfs::Add_peers[bricks/var/bricks/b3namegfs03.us1.xxx.com] :( On Tue, Aug 28, 2012 at 4:31 PM, Douglas Garstang doug.garst...@gmail.com wrote: Having fixed the yaml... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - name: gfs01.us1.xxx.com bricks: - /var/bricks/b1 - name: gfs02.us1.xxx.com bricks: - /var/bricks/b2 - name: gfs03.us1.xxx.com bricks: - /var/bricks/b3 The issue is now how do I iterate over the nodes? They are no longer an array. They are an array of hashes, which puppet doesn't want to iterate over. Doug. On Tue, Aug 28, 2012 at 2:44 PM, jcbollinger john.bollin...@stjude.org wrote: On Tuesday, August 28, 2012 2:55:20 PM UTC-5, Douglas wrote: Boy... accessing hashes in puppet is downright painful. I have this in a yaml file... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - gfs01.us1.xxx.com hostname: gfs01 state: mounted - gfs02.us1.xxx.com hostname: gfs02 state: unmounted - gfs03.us1.xxx.com hostname: gfs03 state: mounted I'm loading it with: $config = hiera('glusterfs_volumes') $nodes = $config['gfsvol01']['nodes'] ... etc Works fine. I'm also calling a definition like this: glusterfs::add_bricks { [$nodes]: master_node = $master_node, brick_store = $brick_store, volume_name = $name, require = Glusterfs::Add_peers[$nodes]; } The question is, how do I access the hostname and state keys inside each node? The following (inside add_bricks): $node = $name['hostname'] notice (DEBUG nodes=$name) notice (DEBUG NODE=$node) yields, for each call to add_bricks: DEBUG nodes=statemountedgfs01.us1.xxx.com hostnamegfs01 DEBUG NODE= I can see the hash in $name... I just can't access the 'state' or 'hostname' keys, which are obviously there. How...? Resource names are strings. If you try to use a hash as a resource name then it will be flattened. Generally speaking, you have several options: you could load the hash into a class variable, and have your definitions access it from there. You could also pass it as a parameter to your definition. You could even have the definition load it (again) via hiera. Sometimes the create_resources() function is convenient for unpacking a hash of hashes. I'm afraid I cannot recommend any specifics to you, however, because your YAML is not valid (according to http://yaml-online-parser.appspot.com/ and my own eyes), so I don't know what the data structure is supposed to be. It looks like something based on create_resources() might work out nicely for you, but I can't be sure. 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/-/cS8_5qGpd8wJ. 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
Re: [Puppet Users] Re: Hash Access... Frustrating!
Thanks. I'll check it out. Does anyone know where the docs for this are? All the links on the puppet web site are broken for create_resources. Doug. On Tue, Aug 28, 2012 at 6:03 PM, Jenner La Fave jen...@edgetechsd.com wrote: You still can't use anything other than a string as a resource title. Since you're passing an array of hashes, it's being converted to a string, specifically by Puppet::Resource::Type#set_name_and_namespace, which does @name = name.to_s.downcase. In your case, you'll probably want to use the create_resources function (http://docs.puppetlabs.com/references/stable/function.html#createresources). Something like $config = hiera('glusterfs_volumes') create_resources(glusterfs::add_brick, $config['gfsvol01']['nodes']) might work. -- Jenner On Tuesday, August 28, 2012 4:39:57 PM UTC-7, Douglas wrote: It looks like it's flattening the darned thing out... :( err: Could not retrieve catalog from remote server: Could not intern from pson: Could not convert from pson: Could not find relationship source Glusterfs::Add_peers[bricks/var/bricks/b3namegfs03.us1.xxx.com] :( On Tue, Aug 28, 2012 at 4:31 PM, Douglas Garstang doug.g...@gmail.com wrote: Having fixed the yaml... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - name: gfs01.us1.xxx.com bricks: - /var/bricks/b1 - name: gfs02.us1.xxx.com bricks: - /var/bricks/b2 - name: gfs03.us1.xxx.com bricks: - /var/bricks/b3 The issue is now how do I iterate over the nodes? They are no longer an array. They are an array of hashes, which puppet doesn't want to iterate over. Doug. On Tue, Aug 28, 2012 at 2:44 PM, jcbollinger john.bo...@stjude.org wrote: On Tuesday, August 28, 2012 2:55:20 PM UTC-5, Douglas wrote: Boy... accessing hashes in puppet is downright painful. I have this in a yaml file... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - gfs01.us1.xxx.com hostname: gfs01 state: mounted - gfs02.us1.xxx.com hostname: gfs02 state: unmounted - gfs03.us1.xxx.com hostname: gfs03 state: mounted I'm loading it with: $config = hiera('glusterfs_volumes') $nodes = $config['gfsvol01']['nodes'] ... etc Works fine. I'm also calling a definition like this: glusterfs::add_bricks { [$nodes]: master_node = $master_node, brick_store = $brick_store, volume_name = $name, require = Glusterfs::Add_peers[$nodes]; } The question is, how do I access the hostname and state keys inside each node? The following (inside add_bricks): $node = $name['hostname'] notice (DEBUG nodes=$name) notice (DEBUG NODE=$node) yields, for each call to add_bricks: DEBUG nodes=statemountedgfs01.us1.xxx.com hostnamegfs01 DEBUG NODE= I can see the hash in $name... I just can't access the 'state' or 'hostname' keys, which are obviously there. How...? Resource names are strings. If you try to use a hash as a resource name then it will be flattened. Generally speaking, you have several options: you could load the hash into a class variable, and have your definitions access it from there. You could also pass it as a parameter to your definition. You could even have the definition load it (again) via hiera. Sometimes the create_resources() function is convenient for unpacking a hash of hashes. I'm afraid I cannot recommend any specifics to you, however, because your YAML is not valid (according to http://yaml-online-parser.appspot.com/ and my own eyes), so I don't know what the data structure is supposed to be. It looks like something based on create_resources() might work out nicely for you, but I can't be sure. 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/-/cS8_5qGpd8wJ. To post to this group, send email to puppet...@googlegroups.com. To unsubscribe from this group, send email to puppet-users...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.g...@gmail.com Cell: +1-805-340-5627 -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.g...@gmail.com Cell: +1-805-340-5627 -- You received this message because you are subscribed to the Google Groups Puppet Users group. To view this discussion on the web visit https
Re: [Puppet Users] Re: Hash Access... Frustrating!
Oops. There's a working link right there... On Tue, Aug 28, 2012 at 7:38 PM, Douglas Garstang doug.garst...@gmail.com wrote: Thanks. I'll check it out. Does anyone know where the docs for this are? All the links on the puppet web site are broken for create_resources. Doug. On Tue, Aug 28, 2012 at 6:03 PM, Jenner La Fave jen...@edgetechsd.com wrote: You still can't use anything other than a string as a resource title. Since you're passing an array of hashes, it's being converted to a string, specifically by Puppet::Resource::Type#set_name_and_namespace, which does @name = name.to_s.downcase. In your case, you'll probably want to use the create_resources function (http://docs.puppetlabs.com/references/stable/function.html#createresources). Something like $config = hiera('glusterfs_volumes') create_resources(glusterfs::add_brick, $config['gfsvol01']['nodes']) might work. -- Jenner On Tuesday, August 28, 2012 4:39:57 PM UTC-7, Douglas wrote: It looks like it's flattening the darned thing out... :( err: Could not retrieve catalog from remote server: Could not intern from pson: Could not convert from pson: Could not find relationship source Glusterfs::Add_peers[bricks/var/bricks/b3namegfs03.us1.xxx.com] :( On Tue, Aug 28, 2012 at 4:31 PM, Douglas Garstang doug.g...@gmail.com wrote: Having fixed the yaml... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - name: gfs01.us1.xxx.com bricks: - /var/bricks/b1 - name: gfs02.us1.xxx.com bricks: - /var/bricks/b2 - name: gfs03.us1.xxx.com bricks: - /var/bricks/b3 The issue is now how do I iterate over the nodes? They are no longer an array. They are an array of hashes, which puppet doesn't want to iterate over. Doug. On Tue, Aug 28, 2012 at 2:44 PM, jcbollinger john.bo...@stjude.org wrote: On Tuesday, August 28, 2012 2:55:20 PM UTC-5, Douglas wrote: Boy... accessing hashes in puppet is downright painful. I have this in a yaml file... glusterfs_volumes: gfsvol01: master_node: gfs01.us1.xxx.com transport: tcp replicas: 0 nodes: - gfs01.us1.xxx.com hostname: gfs01 state: mounted - gfs02.us1.xxx.com hostname: gfs02 state: unmounted - gfs03.us1.xxx.com hostname: gfs03 state: mounted I'm loading it with: $config = hiera('glusterfs_volumes') $nodes = $config['gfsvol01']['nodes'] ... etc Works fine. I'm also calling a definition like this: glusterfs::add_bricks { [$nodes]: master_node = $master_node, brick_store = $brick_store, volume_name = $name, require = Glusterfs::Add_peers[$nodes]; } The question is, how do I access the hostname and state keys inside each node? The following (inside add_bricks): $node = $name['hostname'] notice (DEBUG nodes=$name) notice (DEBUG NODE=$node) yields, for each call to add_bricks: DEBUG nodes=statemountedgfs01.us1.xxx.com hostnamegfs01 DEBUG NODE= I can see the hash in $name... I just can't access the 'state' or 'hostname' keys, which are obviously there. How...? Resource names are strings. If you try to use a hash as a resource name then it will be flattened. Generally speaking, you have several options: you could load the hash into a class variable, and have your definitions access it from there. You could also pass it as a parameter to your definition. You could even have the definition load it (again) via hiera. Sometimes the create_resources() function is convenient for unpacking a hash of hashes. I'm afraid I cannot recommend any specifics to you, however, because your YAML is not valid (according to http://yaml-online-parser.appspot.com/ and my own eyes), so I don't know what the data structure is supposed to be. It looks like something based on create_resources() might work out nicely for you, but I can't be sure. 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/-/cS8_5qGpd8wJ. To post to this group, send email to puppet...@googlegroups.com. To unsubscribe from this group, send email to puppet-users...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.g...@gmail.com Cell: +1-805-340-5627 -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.g...@gmail.com Cell: +1-805-340-5627 -- You received this message
[Puppet Users] Append string to list items.
I have an array: $nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04] and a string variable: $brick_store = /var/bricks How can I append /var/bricks to each item in the array? Lack of a looping construct makes this challenging in puppet. Such that: brick_array = ['gfs01:/var/bricks', 'gfs02:/var/bricks', ... ] I also need to come up with a way to append a further sequence of incrementing brick numbers to the items as well. 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.
Re: [Puppet Users] Append string to list items.
Trevor, Thanks. I'm getting 'bad target Array' with: define glusterfs::volume_create ( $brick_store, $nodes, $replicas='1', $transport='tcp' ) { . $n2 = regsubst ($nodes, '$', :$brick_store) # Bad target array here. notice (bricks = $n2) } On entering the define, $nodes = ['gfs01.us1.xxx.com', 'gfs02.us1.xxx.com'] and $brick_store=/var/bricks Doug. On Mon, Aug 27, 2012 at 12:44 PM, Trevor Vaughan tvaug...@onyxpoint.com wrote: Try using regsubst: http://docs.puppetlabs.com/references/stable/function.html#regsubst On Mon, Aug 27, 2012 at 3:03 PM, Douglas Garstang doug.garst...@gmail.com wrote: I have an array: $nodes = ['gfs01' ,'gfs02', 'gfs03', 'gfs04] and a string variable: $brick_store = /var/bricks How can I append /var/bricks to each item in the array? Lack of a looping construct makes this challenging in puppet. Such that: brick_array = ['gfs01:/var/bricks', 'gfs02:/var/bricks', ... ] I also need to come up with a way to append a further sequence of incrementing brick numbers to the items as well. 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. -- Trevor Vaughan Vice President, Onyx Point, Inc (410) 541-6699 tvaug...@onyxpoint.com -- This account not approved for unencrypted proprietary information -- -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Loading Hiera into array/hash
This is driving me crazy. I'm trying to load the nodes array into a puppet array with hiera. Hiera seems to always flatten an array or a hash to a string, with no delimiter in between, which makes it hard to split into an array later on. The hiera_hash and hiera_array functions only take a single key, so there's no way that I can see to drill down into a multi level yaml file like below. glusterfs_volumes: gfsvol01: master_server: gfs01.us1.xxx.com transport: tcp name: gfsvol01 replicas: 1 nodes: - gfs01.us1.xxx.com - gfs02.us1.xxx.com brick_store: /var/bricks How can I do this? 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.
[Puppet Users] Exec{} keeps running
Argh. I have the definition below. The gluster peer probe command has already been executed successfully, and I'm testing it with 'peer status'. Running the unless= command yields: root@gfs01:~# /usr/sbin/gluster peer status | /bin/grep gfs02.us1.xxx.com Hostname: gfs02.us1.xxx.com root@gfs01:~# echo $? 0 Therefore, the command should never run again, but it is, as evidenced by the fact that /tmp/foo keeps getting X appended to it. define glusterfs::probe_peer ( $ensure, $master_node ) { if $master_node == $::fqdn { case $ensure { 'probed': { exec { add-peer-$name: #command = /usr/sbin/gluster peer probe $name, command = /bin/echo X /tmp/foo, logoutput = true, unless = /usr/sbin/gluster peer status | /bin/grep $name; } } } } } 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.
[Puppet Users] Array References?
The first notice command shows the array as having two elements. The second notice command shows the same array as having only one element. Some sort of variable reference thing? How can I make a copy of the $nodes array rather than make a reference to it? notice (NODES1=$nodes) $n2 = $nodes $useless = inline_template(%= n2.shift -%) notice (NODES2=$nodes) 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.
Re: [Puppet Users] Hiera to hash
On Tue, Aug 21, 2012 at 11:19 PM, Stephen Gran stephen.g...@guardian.co.uk wrote: Hi, On Tue, 2012-08-21 at 21:00 -0700, Douglas Garstang wrote: I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] Try inspecting it some other way than printf debugging - notice always flattens variables by calling .to_s on them, so it is not a very useful tool. I am assuming that things are indeed fine, but this is confusing matters. I've since learned that I have to use hiera_array and hiera_hash, which aren't documented anywhere. Now I've got: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.large: pvdisks: - /dev/xvdb1 - /dev/xvdc1 swapvol_size: 4G logvol_size: 64G and I've tried to access the data every witch way. This gives me a syntax error... $pvdisks = hiera_array(ec2_config['instance'][$::ec2_instance_type]['pvdisks']) and this: $pvdisks = hiera_array($ec2_config['instance'][$::ec2_instance_type]['pvdisks']) gives me: err: Could not retrieve catalog from remote server: Error 400 on SERVER: ec2_config is not an hash or array when accessing it with instance at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:27 on node gfs01.us1.xxx.com Ugh. 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.
Re: [Puppet Users] Hiera to hash
On Tue, Aug 21, 2012 at 11:44 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:19 PM, Stephen Gran stephen.g...@guardian.co.uk wrote: Hi, On Tue, 2012-08-21 at 21:00 -0700, Douglas Garstang wrote: I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] Try inspecting it some other way than printf debugging - notice always flattens variables by calling .to_s on them, so it is not a very useful tool. I am assuming that things are indeed fine, but this is confusing matters. I've since learned that I have to use hiera_array and hiera_hash, which aren't documented anywhere. Now I've got: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.large: pvdisks: - /dev/xvdb1 - /dev/xvdc1 swapvol_size: 4G logvol_size: 64G and I've tried to access the data every witch way. This gives me a syntax error... $pvdisks = hiera_array(ec2_config['instance'][$::ec2_instance_type]['pvdisks']) and this: $pvdisks = hiera_array($ec2_config['instance'][$::ec2_instance_type]['pvdisks']) gives me: err: Could not retrieve catalog from remote server: Error 400 on SERVER: ec2_config is not an hash or array when accessing it with instance at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:27 on node gfs01.us1.xxx.com Ugh. Doug. Actually, apparently, no, that's not what these functions are for. :( 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.
Re: [Puppet Users] Hiera to hash
On Tue, Aug 21, 2012 at 11:51 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:44 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:19 PM, Stephen Gran stephen.g...@guardian.co.uk wrote: Hi, On Tue, 2012-08-21 at 21:00 -0700, Douglas Garstang wrote: I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] Try inspecting it some other way than printf debugging - notice always flattens variables by calling .to_s on them, so it is not a very useful tool. I am assuming that things are indeed fine, but this is confusing matters. I've since learned that I have to use hiera_array and hiera_hash, which aren't documented anywhere. Now I've got: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.large: pvdisks: - /dev/xvdb1 - /dev/xvdc1 swapvol_size: 4G logvol_size: 64G and I've tried to access the data every witch way. This gives me a syntax error... $pvdisks = hiera_array(ec2_config['instance'][$::ec2_instance_type]['pvdisks']) and this: $pvdisks = hiera_array($ec2_config['instance'][$::ec2_instance_type]['pvdisks']) gives me: err: Could not retrieve catalog from remote server: Error 400 on SERVER: ec2_config is not an hash or array when accessing it with instance at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:27 on node gfs01.us1.xxx.com Ugh. Doug. Actually, apparently, no, that's not what these functions are for. :( 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.
Re: [Puppet Users] Hiera to hash
On Wed, Aug 22, 2012 at 11:08 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:51 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:44 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:19 PM, Stephen Gran stephen.g...@guardian.co.uk wrote: Hi, On Tue, 2012-08-21 at 21:00 -0700, Douglas Garstang wrote: I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] Try inspecting it some other way than printf debugging - notice always flattens variables by calling .to_s on them, so it is not a very useful tool. I am assuming that things are indeed fine, but this is confusing matters. I've since learned that I have to use hiera_array and hiera_hash, which aren't documented anywhere. Now I've got: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.large: pvdisks: - /dev/xvdb1 - /dev/xvdc1 swapvol_size: 4G logvol_size: 64G and I've tried to access the data every witch way. This gives me a syntax error... $pvdisks = hiera_array(ec2_config['instance'][$::ec2_instance_type]['pvdisks']) and this: $pvdisks = hiera_array($ec2_config['instance'][$::ec2_instance_type]['pvdisks']) gives me: err: Could not retrieve catalog from remote server: Error 400 on SERVER: ec2_config is not an hash or array when accessing it with instance at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:27 on node gfs01.us1.xxx.com Ugh. Doug. Actually, apparently, no, that's not what these functions are for. :( Doug. :( Apparently this is difficult and/or not supported... -- 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.
Re: [Puppet Users] Hiera to hash
On Wed, Aug 22, 2012 at 1:43 PM, Justin Stoller jus...@puppetlabs.com wrote: On Wed, Aug 22, 2012 at 1:34 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Wed, Aug 22, 2012 at 11:08 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:51 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:44 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:19 PM, Stephen Gran stephen.g...@guardian.co.uk wrote: Hi, On Tue, 2012-08-21 at 21:00 -0700, Douglas Garstang wrote: I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] Try inspecting it some other way than printf debugging - notice always flattens variables by calling .to_s on them, so it is not a very useful tool. I am assuming that things are indeed fine, but this is confusing matters. I've since learned that I have to use hiera_array and hiera_hash, which aren't documented anywhere. Now I've got: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.large: pvdisks: - /dev/xvdb1 - /dev/xvdc1 swapvol_size: 4G logvol_size: 64G and I've tried to access the data every witch way. This gives me a syntax error... $pvdisks = hiera_array(ec2_config['instance'][$::ec2_instance_type]['pvdisks']) and this: $pvdisks = hiera_array($ec2_config['instance'][$::ec2_instance_type]['pvdisks']) gives me: err: Could not retrieve catalog from remote server: Error 400 on SERVER: ec2_config is not an hash or array when accessing it with instance at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:27 on node gfs01.us1.xxx.com Ugh. Doug. Actually, apparently, no, that's not what these functions are for. :( Doug. :( Apparently this is difficult and/or not supported... Is this what you're trying to do? $ec2_config = hiera('ec2_config') $pvdisks = $ec2_config['instance'][$::ec2_instance_type]['pvdisks'] http://docs.puppetlabs.com/puppet/2.7/reference/lang_datatypes.html#hashes No luck. With: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G etc... and in the manifest: $foo = hiera_hash('ec2_config') $pvdisks = $foo['instance'][$::ec2_instance_type]['pvdisks'] # Line 17 from error below. notice (PVDISKS = $pvdisks) puppet bails with: err: Could not retrieve catalog from remote server: Error 400 on SERVER: $foo[instance] is not an hash or array when accessing it with m1.large at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:17 on node gfs01.us1.xxx.co, G. 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.
Re: [Puppet Users] Hiera to hash
On Wed, Aug 22, 2012 at 1:52 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Wed, Aug 22, 2012 at 1:43 PM, Justin Stoller jus...@puppetlabs.com wrote: On Wed, Aug 22, 2012 at 1:34 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Wed, Aug 22, 2012 at 11:08 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:51 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:44 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 21, 2012 at 11:19 PM, Stephen Gran stephen.g...@guardian.co.uk wrote: Hi, On Tue, 2012-08-21 at 21:00 -0700, Douglas Garstang wrote: I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] Try inspecting it some other way than printf debugging - notice always flattens variables by calling .to_s on them, so it is not a very useful tool. I am assuming that things are indeed fine, but this is confusing matters. I've since learned that I have to use hiera_array and hiera_hash, which aren't documented anywhere. Now I've got: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.large: pvdisks: - /dev/xvdb1 - /dev/xvdc1 swapvol_size: 4G logvol_size: 64G and I've tried to access the data every witch way. This gives me a syntax error... $pvdisks = hiera_array(ec2_config['instance'][$::ec2_instance_type]['pvdisks']) and this: $pvdisks = hiera_array($ec2_config['instance'][$::ec2_instance_type]['pvdisks']) gives me: err: Could not retrieve catalog from remote server: Error 400 on SERVER: ec2_config is not an hash or array when accessing it with instance at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:27 on node gfs01.us1.xxx.com Ugh. Doug. Actually, apparently, no, that's not what these functions are for. :( Doug. :( Apparently this is difficult and/or not supported... Is this what you're trying to do? $ec2_config = hiera('ec2_config') $pvdisks = $ec2_config['instance'][$::ec2_instance_type]['pvdisks'] http://docs.puppetlabs.com/puppet/2.7/reference/lang_datatypes.html#hashes No luck. With: ec2_config: instance: m1.small: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G m1.medium: pvdisks: - /dev/xvdb1 swapvol_size: 2G logvol_size: 64G etc... and in the manifest: $foo = hiera_hash('ec2_config') $pvdisks = $foo['instance'][$::ec2_instance_type]['pvdisks'] # Line 17 from error below. notice (PVDISKS = $pvdisks) puppet bails with: err: Could not retrieve catalog from remote server: Error 400 on SERVER: $foo[instance] is not an hash or array when accessing it with m1.large at /truth/sauce/env/prod/modules/role/manifests/base_server.pp:17 on node gfs01.us1.xxx.co, G. Doug. I think I got it... yaml file was bad... 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.
Re: [Puppet Users] Hiera to hash
This in insanity. Now I have: $ec2_config = hiera('ec2_config') if $::ec2_instance_id { $pvdisks = $ec2_config['instance'][$::ec2_instance_type]['pvdisks'] $pvdisk_count = inline_template('%= @pvdisks.length %') $swapvol_enabled = $ec2_config['instance'][$::ec2_instance_type]['volumes']['swap']['enabled'] $logvol_enabled = $ec2_config['instance'][$::ec2_instance_type]['volumes']['log']['enabled'] notice (HERE0 ($swapvol_enabled) ($logvol_enabled)) if ($swapvol_enabled == 'true') { $swapvol_size = $ec2_config['instance'][$::ec2_instance_type]['volumes']['swap']['size'] notice (HERE1) } if ($logvol_enabled == 'true') { $logvol_size = $ec2_config['instance'][$::ec2_instance_type]['volumes']['log']['size'] notice(HERE2) } notice (HERE3 $swapvol_size $swapvol_size) } The first HERE0 correctly displays '(true) (true)' in the logs. However, on the very next line, where the condition is if $swapvol_enabled == 'true',it returns false. WTF??? Doug On Wed, Aug 22, 2012 at 1:56 PM, Wolf Noble wno...@datapipe.com wrote: I accomplished something similar awhile back. While I've not spent much time looking at your particular problem, I think this'll help point you in the direction of what you need… class mymodule::params{ $collector= hiera('mymodule_collector','') } class mymodule::config{ $collector = $mymodule::params::collector $ipstring= inline_template(% collector.each_pair do |key, hash| %%=hash['ip']%,%end%) $ips = split ($ipstring,',') } define mymodule::add_hosts_allow () { exec { hosts_allow_$title: command = /bin/echo \myservice : $title : ALLOW\ /etc/hosts.allow, unless = /bin/grep -c \myservice : $title : ALLOW\ /etc/hosts.allow, } #end exec } On Aug 21, 2012, at 11:00 PM, Douglas Garstang doug.garst...@gmail.com wrote: I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] which obviously is the data picked into a string. 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. This message may contain confidential or privileged information. If you are not the intended recipient, please advise us immediately and delete this message. See http://www.datapipe.com/legal/email_disclaimer/ for further information on confidentiality and the risks of non-secure electronic communication. If you cannot access these links, please notify us by reply message and we will send the contents to you. -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Refreshing Definitions
I'm very confused about something. The definition below is used to set up swap. The three definitions, lvm::swapvol_make, lvm::swapvol_on and lvm::swapvol_fstab, where previously inside this definition, but I broke them into separate defines as I realised that the more I use the $ensure parameter on a resource, the more likely it was that I'd have to perform certain functions multiple times. Previously I could chain those three resources together with subscribe and refreshonly. However, refreshonly only works with Exec {} resources. So, now that they are in their own definitions, how do I do this? I can't put the refreshonly in the definition, because a) I don't think it will be in scope, and b) it makes the definition no longer general in nature. Doug. define lvm::swapvol ( $ensure, $volume_group, $size, $pvdisk_count ) { case $ensure { 'mounted': { # # Logical volumes. # lvm::logical_volume { # # Create a logical volume for swap. # $name: ensure = present, volume_group = $volume_group, size = $size, pvdisk_count = $pvdisk_count; #require = Lvm::Volume_group[$volume_group]; } lvm::swapvol_make { $name: volume_group = $volume_group, subscribe = Lvm::Logical_volume[$name], refreshonly = true; } lvm::swapvol_on { $name: volume_group = $volume_group, subscribe = Lvm::Swapvol_make[$name], refreshonly = true; } lvm::swapvol_fstab { $name: volume_group = $volume_group, subscribe = Lvm::Swapvol_on[$name], refreshonly = true; } } 'umounted': { } 'absent': { } } } -- 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.
Re: [Puppet Users] Dependencies between defines
On Wed, Aug 22, 2012 at 6:06 AM, Martin Alfke tux...@gmail.com wrote: On 22.08.2012, at 14:27, Axel Bock wrote: Hi readers another question for my little puppet project: Can I (and if yes, how) define dependendies between puppet defines? (define like in define mymodule::mydefine() {...}) Example: I have a define prepare_cool_thing and another define cool_thing. Both can be on a machine several times (quite, actually, like vhosts :). So this is entirely valid: prepare_cool_thing{ name1 : } cool_thing{ name1 : } prepare_cool_thing{ name2 : } cool_thing{ name2 : } I'm sure you get it. BUT. I'd like to state within the cool_thing define that the prepare_cool_thing was executed. Can I do that? The following does not seem to do what I want: Prepare_cool_thing[ name1 ] - Cool_thing[ name1 ] # naah, does not work. Where did you put the dependency? What puppet version are you using. Normally this works: define task_one ( $user = 'root' ) { file { '/tmp/one': owner = $user, content = $user, } } define task_two ( $user = 'root' ) { file { '/tmp/two': owner = $user, content = $user, } } task_one { 'foo': } task_two { 'foo': } Task_one['foo'] - Task_two['foo'] You can also place the order inside the define: define task_two ( $user = 'root') { file { '/tmp/two': owner = $name, content = $name, } Task_one[$name] - Task_two[$name] } This really irks me. Is this documented anywhere? How did Task_one get into scope inside Task_two? What is the scope for definitions? Are they global? 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.
[Puppet Users] Hiera to hash
I know I did this once before but can't find docs on how to do it again. I have this in a yaml file: pvdisks: ec2_pvdisks_m1.small: disks: /dev/xvdb1 enabled: yes Loading it with hiera. Manifest has: $testkey = hiera('pvdisks') notice (TESTKEY=$testkey[ec2_pvdisks_m1.small]) This is printing TESTKEY=ec2_pvdisks_m1.smalldisks/dev/xvdb1enabledtrue['ec2_pvdisks_m1.small'] which obviously is the data picked into a string. 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.
[Puppet Users] Dynamic Lookup of facter variable.
I don't get it... if ! ( $ec2_instance_type in [$ec2_inst_type_allow]) { notice(NOT ALLOWED) } else { notice(ALLOWED) } 2012-08-20T02:39:10.537134+00:00 truth puppet-master[24080]: Dynamic lookup of $ec2_instance_type at /truth/sauce/env/prod/modules/rol e/manifests/validate_server.pp:12 is deprecated. Support will be removed in Puppet 2.8. Use a fully-qualified variable name (e.g., $ classname::variable) or parameterized classes. Line 12 is the if statement. However, on the same client system... [us1:i-16c5c050] root@testweb11:~# facter | grep ec2_instance_type ec2_instance_type = m1.large It's a facter variable. What's it complaining about? 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.
Re: [Puppet Users] Dynamic Lookup of facter variable.
Oh god that's ugly. On Sun, Aug 19, 2012 at 7:48 PM, Eric Shamow e...@puppetlabs.com wrote: Facts exist at top scope, as indicated in the scoping doc several people have referred you to on this list. Use $::ec2_instance_type Sent from my iPad On Aug 19, 2012, at 10:44 PM, Douglas Garstang doug.garst...@gmail.com wrote: I don't get it... if ! ( $ec2_instance_type in [$ec2_inst_type_allow]) { notice(NOT ALLOWED) } else { notice(ALLOWED) } 2012-08-20T02:39:10.537134+00:00 truth puppet-master[24080]: Dynamic lookup of $ec2_instance_type at /truth/sauce/env/prod/modules/rol e/manifests/validate_server.pp:12 is deprecated. Support will be removed in Puppet 2.8. Use a fully-qualified variable name (e.g., $ classname::variable) or parameterized classes. Line 12 is the if statement. However, on the same client system... [us1:i-16c5c050] root@testweb11:~# facter | grep ec2_instance_type ec2_instance_type = m1.large It's a facter variable. What's it complaining about? 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. -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
Re: [Puppet Users] Class Naming Convention
On Thu, Aug 16, 2012 at 11:34 PM, Garrett Honeycutt garr...@puppetlabs.com wrote: On 8/16/12 10:44 PM, Douglas Garstang wrote: So, this has always puzzled me a bit. By convention, init.pp contains one class, named the same as the module. However, what is the convention when the module may have multiple external access points? Say you have a module called 'syslog' which provides both a client and a server class. I typically have used syslog::server and syslog::client. I've ended up using this convention more than init.pp because I don't know when I first put the class together exactly what it's going to do. In module mymodule, rather than create init.pp with class mymodule, I'll call it mymodule::base or something and stick it in base.pp. Confused... Doug Not all classes are meant to be directly included by nodes. A common practice would be having a module where you might have a base class, such as syslog and other sub classes, such as syslog::client and syslog::server. Class syslog would contain resources that were common to both syslog::client and syslog::server (ie: they both have a package and a config file). Both syslog::client and syslog::server might include (or possibly inherit) the syslog class. In this setup, a node might include syslog::server or syslog::client, but not syslog directly. When using this pattern, be sure to comment in your base class that it is not meant to be included directly. Garrett, thanks. Aware of all that, but I'm not sure you really answer my question. :) 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.
[Puppet Users] Unless/Onlyif vs Subscribe/Refreshonly
When chaining execs together, and wanting to ensure that exec resources are not executed on every puppet run, which method is better? Using unless/onlyif or subscribe/refreshonly? With unless/onlyif, the exec is evaluated every time. With subscribe/refreshonly, the exec is only executed when a dependent resource changes 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.
Re: [Puppet Users] Class Naming Convention
On Fri, Aug 17, 2012 at 12:52 AM, Denmat tu2bg...@gmail.com wrote: On 17/08/2012, at 17:19, Douglas Garstang doug.garst...@gmail.com wrote: On Thu, Aug 16, 2012 at 11:34 PM, Garrett Honeycutt garr...@puppetlabs.com wrote: On 8/16/12 10:44 PM, Douglas Garstang wrote: So, this has always puzzled me a bit. By convention, init.pp contains one class, named the same as the module. However, what is the convention when the module may have multiple external access points? Say you have a module called 'syslog' which provides both a client and a server class. I typically have used syslog::server and syslog::client. I've ended up using this convention more than init.pp because I don't know when I first put the class together exactly what it's going to do. In module mymodule, rather than create init.pp with class mymodule, I'll call it mymodule::base or something and stick it in base.pp. Confused... Doug Not all classes are meant to be directly included by nodes. A common practice would be having a module where you might have a base class, such as syslog and other sub classes, such as syslog::client and syslog::server. Class syslog would contain resources that were common to both syslog::client and syslog::server (ie: they both have a package and a config file). Both syslog::client and syslog::server might include (or possibly inherit) the syslog class. In this setup, a node might include syslog::server or syslog::client, but not syslog directly. When using this pattern, be sure to comment in your base class that it is not meant to be included directly. Garrett, thanks. Aware of all that, but I'm not sure you really answer my question. :) Doug. Well you can leave init.pp blank, ie, class name { } Then you can put whatever you like in the module's manifest dir. I tend to write 90% of modules with the following: name::config name::install name::service name::client name::server All of those refer to individual .pp files of course. Then something like: include name::server I guess you would normally include ::client or ::server, and it would in turn, include (inherit?) ::config, ::install and ::service? Ie: class foo::client { include foo::config include foo::install include foo::service } If variables are defined in ::config, does that cause any issues with scope? 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.
Re: [Puppet Users] Class Naming Convention
On Fri, Aug 17, 2012 at 9:33 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Fri, Aug 17, 2012 at 12:52 AM, Denmat tu2bg...@gmail.com wrote: On 17/08/2012, at 17:19, Douglas Garstang doug.garst...@gmail.com wrote: On Thu, Aug 16, 2012 at 11:34 PM, Garrett Honeycutt garr...@puppetlabs.com wrote: On 8/16/12 10:44 PM, Douglas Garstang wrote: So, this has always puzzled me a bit. By convention, init.pp contains one class, named the same as the module. However, what is the convention when the module may have multiple external access points? Say you have a module called 'syslog' which provides both a client and a server class. I typically have used syslog::server and syslog::client. I've ended up using this convention more than init.pp because I don't know when I first put the class together exactly what it's going to do. In module mymodule, rather than create init.pp with class mymodule, I'll call it mymodule::base or something and stick it in base.pp. Confused... Doug Not all classes are meant to be directly included by nodes. A common practice would be having a module where you might have a base class, such as syslog and other sub classes, such as syslog::client and syslog::server. Class syslog would contain resources that were common to both syslog::client and syslog::server (ie: they both have a package and a config file). Both syslog::client and syslog::server might include (or possibly inherit) the syslog class. In this setup, a node might include syslog::server or syslog::client, but not syslog directly. When using this pattern, be sure to comment in your base class that it is not meant to be included directly. Garrett, thanks. Aware of all that, but I'm not sure you really answer my question. :) Doug. Well you can leave init.pp blank, ie, class name { } Then you can put whatever you like in the module's manifest dir. I tend to write 90% of modules with the following: name::config name::install name::service name::client name::server All of those refer to individual .pp files of course. Then something like: include name::server I guess you would normally include ::client or ::server, and it would in turn, include (inherit?) ::config, ::install and ::service? Ie: class foo::client { include foo::config include foo::install include foo::service } If variables are defined in ::config, does that cause any issues with scope? So... I just gave this a try, and variables I defined in ::config have gone out of scope in ::install. *sigh* 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.
Re: [Puppet Users] Re: Unless/Onlyif vs Subscribe/Refreshonly
On Fri, Aug 17, 2012 at 2:01 PM, jcbollinger john.bollin...@stjude.org wrote: On Friday, August 17, 2012 11:23:46 AM UTC-5, Douglas wrote: When chaining execs together, and wanting to ensure that exec resources are not executed on every puppet run, which method is better? Using unless/onlyif or subscribe/refreshonly? With unless/onlyif, the exec is evaluated every time. With subscribe/refreshonly, the exec is only executed when a dependent resource changes Neither mechanism is better than the other in any general sense. They serve different purposes, and it is uncommon that both are applicable to any given configuration objective. The 'unless' and 'onlyif' (and 'creates') parameters serve as means for an Exec to determine whether it is already in sync. If it is, then its command will not be run, in the same way that a File that is already in sync will not redundantly download its content. This should also have implications for reports, etc.. The 'unless' and/or 'ifonly' commands must run every time, though. The 'refreshonly' parameter, on the other hand, makes application of the Exec conditional on (and subsequent to) one or more other resources changing, sort of like an 'on update' trigger in a database. In any given case, you should use whichever approach makes sense. I think...and I might be wrong because I'm a little sleep deprived today, that it seems like you just said the same thing twice... 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.
[Puppet Users] Default node
Seems like nodes are matching the default node before they are matching the more specific nodes. My site.pp has: include nodes/*.pp In the nodes directory are two files, default.pp and nagios_server.pp. default.pp: node default { include role::common } nagios_server.pp: node 'mon01.us1.xxx.com' { $node_env = production include nagios::plugins include nagios::server } Puppet is finding the default on mon01.us1.xxx.com. If I comment out the lines in default.pp, it goes to mon01.us1.bitcasa.com. Shouldn't it use the default node last? 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.
Re: [Puppet Users] Default node
Totally lost. On Fri, Aug 17, 2012 at 5:47 PM, Stuart Cracraft smcracr...@me.com wrote: Doug: I hope you are wrong about that as it would be a bad non-explicit, very Ruby-like choice of indirectness for controlling and detailing what should be plain-and-simple and Iowa-like. Stuart On Aug 17, 2012, at 2:27 PM, Douglas Garstang doug.garst...@gmail.com wrote: Seems like nodes are matching the default node before they are matching the more specific nodes. My site.pp has: include nodes/*.pp In the nodes directory are two files, default.pp and nagios_server.pp. default.pp: node default { include role::common } nagios_server.pp: node 'mon01.us1.xxx.com' { $node_env = production include nagios::plugins include nagios::server } Puppet is finding the default on mon01.us1.xxx.com. If I comment out the lines in default.pp, it goes to mon01.us1.bitcasa.com. Shouldn't it use the default node last? 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. -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Class Naming Convention
So, this has always puzzled me a bit. By convention, init.pp contains one class, named the same as the module. However, what is the convention when the module may have multiple external access points? Say you have a module called 'syslog' which provides both a client and a server class. I typically have used syslog::server and syslog::client. I've ended up using this convention more than init.pp because I don't know when I first put the class together exactly what it's going to do. In module mymodule, rather than create init.pp with class mymodule, I'll call it mymodule::base or something and stick it in base.pp. Confused... 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.
Re: [Puppet Users] Re: Class Execution order
On Wed, Aug 15, 2012 at 7:38 AM, jcbollinger john.bollin...@stjude.org wrote: On Tuesday, August 14, 2012 11:37:26 AM UTC-5, Douglas wrote: Not really. I have three run stages that have been working fine. It was when I tried to add Apt::Source | | - Exec[apt-update] Exec['apt-update'] - Package | | to site.pp to globally enforce apt source installs, an apt-get update and then installation of packages, in that order, that the dependency cycles started. I thought maybe mixing the two was bad, which was when I tried replacing the run stages with Class-, which doesn't seem to be allowed syntactically btw. Looks like a bug? There is no inherent problem with mixing stages and chaining, as far as I know. Both are simply facades on top of Puppet's underlying relationship machinery, so fundamentally they are parts of the same thing. I am pretty confident that the problem is with Class| |. There are at least two factors in play there: Classes are not resources. PL has made a concerted effort since the introduction of v. 2.6 to blur, downplay, and obscure the distinction, but they have not removed it. Resource collections are conflated with realization of virtual resources (or collection of exported resources, where there isn't even a distinct name for the concept). There is a longstanding ticket on this issue. Since classes are not resources, but collection syntax specifies, in part, realization of virtual resources of the specified type, I do not find it surprising that Puppet rejects Class| |. It looks like it should work (because PL has done a good job of making classes appear to be resources), but I'm not surprised that it doesn't. I would not consider that a bug per se, but that it should work as you expected seems a reasonable feature request. I could put the installation of apt sources in their own run stage that runs first. However, different classes of servers need different apt sources, and therefore I need the ability to be able to add apt sources at arbitrary points after the initial run stage, yet still ensuring that an apt-get update happens only once after all the apt sources have been installed, but before any packages are installed. This must be a general problem. Wonder how people have solved it...? I agree that the problem seems general. Does it not work to put your Apt::Source resources into their own classes, and assign those classes to your initial stage? That seems the natural solution. Not really. The setup of base apt sources is handled during one of the initial run stages. However, additional repo's are added later as the function of the server is further refined. 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.
[Puppet Users] Custom types in environments working .... yes/no/maybe ?
My issue may be related to this bug: http://projects.puppetlabs.com/issues/13858 Custom types in environments require loading into master's libdir However, now I'm not so sure, This was working previously with a given client. However, after trying on a fresh client, it's failing with: err: Could not run Puppet configuration client: Could not find a default provider for logical_volume The server seems to have the files: /var/lib/puppet/lib/puppet/provider/logical_volume /var/lib/puppet/lib/puppet/type/logical_volume.rb And so does the client: /var/lib/puppet/lib/puppet/type/logical_volume.rb /var/lib/puppet/lib/puppet/provider/logical_volume pluginsync=true in /etc/puppet/puppet.conf. Using multiple environments and puppet 2.7.1. *sigh* 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.
[Puppet Users] Re: Custom types in environments working .... yes/no/maybe ?
On Wed, Aug 15, 2012 at 10:06 AM, Douglas Garstang doug.garst...@gmail.com wrote: My issue may be related to this bug: http://projects.puppetlabs.com/issues/13858 Custom types in environments require loading into master's libdir However, now I'm not so sure, This was working previously with a given client. However, after trying on a fresh client, it's failing with: err: Could not run Puppet configuration client: Could not find a default provider for logical_volume The server seems to have the files: /var/lib/puppet/lib/puppet/provider/logical_volume /var/lib/puppet/lib/puppet/type/logical_volume.rb And so does the client: /var/lib/puppet/lib/puppet/type/logical_volume.rb /var/lib/puppet/lib/puppet/provider/logical_volume pluginsync=true in /etc/puppet/puppet.conf. Using multiple environments and puppet 2.7.1. I tried applying the patch at https://github.com/puppetlabs/puppet/commit/96712efeb543928704fc9938e7429552d8ded039 on both the server and client. That had the effect of changing the error on the client from: err: Could not run Puppet configuration client: Could not find a default provider for logical_volume to: err: Could not run Puppet configuration client: Could not find a default provider for volume_group 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.
[Puppet Users] Re: Custom types in environments working .... yes/no/maybe ?
What a horrible clusterf*ck mess. http://www.mailinglistarchive.com/html/puppet-users@googlegroups.com/2010-03/msg00801.html Doug. On Wed, Aug 15, 2012 at 10:41 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Wed, Aug 15, 2012 at 10:06 AM, Douglas Garstang doug.garst...@gmail.com wrote: My issue may be related to this bug: http://projects.puppetlabs.com/issues/13858 Custom types in environments require loading into master's libdir However, now I'm not so sure, This was working previously with a given client. However, after trying on a fresh client, it's failing with: err: Could not run Puppet configuration client: Could not find a default provider for logical_volume The server seems to have the files: /var/lib/puppet/lib/puppet/provider/logical_volume /var/lib/puppet/lib/puppet/type/logical_volume.rb And so does the client: /var/lib/puppet/lib/puppet/type/logical_volume.rb /var/lib/puppet/lib/puppet/provider/logical_volume pluginsync=true in /etc/puppet/puppet.conf. Using multiple environments and puppet 2.7.1. I tried applying the patch at https://github.com/puppetlabs/puppet/commit/96712efeb543928704fc9938e7429552d8ded039 on both the server and client. That had the effect of changing the error on the client from: err: Could not run Puppet configuration client: Could not find a default provider for logical_volume to: err: Could not run Puppet configuration client: Could not find a default provider for volume_group Doug. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
Re: [Puppet Users] Puppetlabs lvm module
On Tue, Aug 14, 2012 at 2:34 PM, Ryan Coleman r...@puppetlabs.com wrote: On Tue, Aug 14, 2012 at 2:30 PM, Douglas Garstang doug.garst...@gmail.com wrote: Yep. That was the culprit. Maybe you guys wanna run this through a 'puppet parser validate' before posting them to the forge...? Obviously, our intention is not to release borked code but a mistake was made. I'm still borked though because it seems that custom types don't work with environments. I see you've got another thread going about this. Thanks for keeping them logically separate. Seriously can you run it through a syntax checker before posting it? 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.
[Puppet Users] Array Length
How do I get get length of an array in puppet DSL? 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.
Re: [Puppet Users] Array Length
On Wed, Aug 15, 2012 at 2:55 PM, Ryan Coleman r...@puppetlabs.com wrote: On Wed, Aug 15, 2012 at 2:51 PM, Douglas Garstang doug.garst...@gmail.com wrote: How do I get get length of an array in puppet DSL? Hi Doug, You can install the puppetlabs-stdlib module from the Forge and use the size function. Ryan, No thanks. I've stopped using 3rd party modules. Providers don't work with environments... at least I don't think they do no has has provided a definitive answer. Thought this might work... $foo = inline_template(%= [$pvdisks[ %.length) but that gives meerr: Could not retrieve catalog from remote server: Error 400 on SERVER: compile error (erb):1: unknown regexp options - vdb (erb):1: syntax error, unexpected tINTEGER, expecting ']' ...; _erbout.concat(( [/dev/xvdb1/dev/xvdc1] ).to_s); _erbout.c... ^ (erb):1: syntax error, unexpected ']', expecting ')' ...oncat(( [/dev/xvdb1/dev/xvdc1] ).to_s); _erbout.concat .len... Yucko. -- 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.
Re: [Puppet Users] Array Length
On Wed, Aug 15, 2012 at 2:58 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Wed, Aug 15, 2012 at 2:55 PM, Ryan Coleman r...@puppetlabs.com wrote: On Wed, Aug 15, 2012 at 2:51 PM, Douglas Garstang doug.garst...@gmail.com wrote: How do I get get length of an array in puppet DSL? Hi Doug, You can install the puppetlabs-stdlib module from the Forge and use the size function. Ryan, No thanks. I've stopped using 3rd party modules. Providers don't work with environments... at least I don't think they do no has has provided a definitive answer. Thought this might work... $foo = inline_template(%= [$pvdisks[ %.length) but that gives meerr: Could not retrieve catalog from remote server: Error 400 on SERVER: compile error (erb):1: unknown regexp options - vdb (erb):1: syntax error, unexpected tINTEGER, expecting ']' ...; _erbout.concat(( [/dev/xvdb1/dev/xvdc1] ).to_s); _erbout.c... ^ (erb):1: syntax error, unexpected ']', expecting ')' ...oncat(( [/dev/xvdb1/dev/xvdc1] ).to_s); _erbout.concat .len... Yucko. Oops.Typo in paste.I actually used $foo = inline_template(%= [$pvdisks] %.length) 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.
Re: [Puppet Users] Array Length
On Wed, Aug 15, 2012 at 3:05 PM, Tom De Vylder t...@penumbra.be wrote: On 15 Aug 2012, at 23:58, Douglas Garstang wrote: On Wed, Aug 15, 2012 at 2:55 PM, Ryan Coleman r...@puppetlabs.com wrote: On Wed, Aug 15, 2012 at 2:51 PM, Douglas Garstang doug.garst...@gmail.com wrote: How do I get get length of an array in puppet DSL? Hi Doug, You can install the puppetlabs-stdlib module from the Forge and use the size function. Ryan, No thanks. I've stopped using 3rd party modules. Providers don't work with environments... at least I don't think they do no has has provided a definitive answer. Could you elaborate on this one? I'm using the stdlib with environments. Never ran into any issues with that. Ryan, What version of puppet are you using? We're on 2.7.1. 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.
Re: [Puppet Users] Array Length
On Wed, Aug 15, 2012 at 5:03 PM, Calvin Walton calvin.wal...@kepstin.ca wrote: On Wed, 2012-08-15 at 14:59 -0700, Douglas Garstang wrote: On Wed, Aug 15, 2012 at 2:58 PM, Douglas Garstang Oops.Typo in paste.I actually used $foo = inline_template(%= [$pvdisks] %.length) You seem to be misunderstanding how erb templates work; I strongly recommend that you go and re-read the docs. The syntax to use would look like this: $foo = inline_template(%= @pvdisks.length %) if the variable is local (in the same class/define), or $foo = inline_template(%= scope.lookupvar('scope::varname').length %) if it's from somewhere else. The '@' character does not appear anywhere on the page http://docs.puppetlabs.com/guides/templating.html. 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.
[Puppet Users] Custom Facts accessible via Facter
I don't get it. I just wrote a simple test custom fact in ruby (ugh, I hate ruby) and was able to access it as a variable on the client side. However, it doesn't appear in the facter output. Is is supposed to? 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.
Re: [Puppet Users] Custom Facts accessible via Facter
On Wed, Aug 15, 2012 at 10:46 PM, Florian Koch florian.koch1...@gmail.com wrote: Try Facter - p Regards Thanks. Didn't know about that. Now, back to scraping my eyeballs with a blunt rusty razor blade, err looking at ruby code. 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.
Re: [Puppet Users] Re: Class Execution order
On Tue, Aug 14, 2012 at 6:09 AM, jcbollinger john.bollin...@stjude.org wrote: On Tuesday, August 14, 2012 12:12:33 AM UTC-5, Douglas wrote: Trying to force puppet class execution order with: Class['lvm'] - Class['network'] - Class['apt'] - Class | | This is giving me: err: Could not retrieve catalog from remote server: Error 400 on SERVER: Resource type class doesn't exist at /truth/sauce/env/prod/modules/role/manifests/common.pp:37 on node testweb07.us1.xxx.com warning: Not using cache on failed catalog I did have it working with run stages, but when trying to also use the relationship syntax with the following in site.pp Apt::Source | | - Exec[apt-update] Exec['apt-update'] - Package | | got the dreaded cyclic dependency errors... :( Yes, both run stages and chaining from/to collections are prone to causing cycles. They have their uses, but you do need to think very carefully about how you use them. Moreover, the more you use them, the more likely you are to have trouble. It is often quite hard to make correct blanket statements about resource relationships, more so the more complex your manifests become. It looks and sounds as if you are trying to re-express your stages-based manifests using resource chaining. If that's the case then you are on a wild goose chase. Declaring the same relationships via a different syntax must necessarily produce the same cycle(s). To fix the problem you need to remove (the right) unneeded relationships. Not really. I have three run stages that have been working fine. It was when I tried to add Apt::Source | | - Exec[apt-update] Exec['apt-update'] - Package | | to site.pp to globally enforce apt source installs, an apt-get update and then installation of packages, in that order, that the dependency cycles started. I thought maybe mixing the two was bad, which was when I tried replacing the run stages with Class-, which doesn't seem to be allowed syntactically btw. Looks like a bug? I could put the installation of apt sources in their own run stage that runs first. However, different classes of servers need different apt sources, and therefore I need the ability to be able to add apt sources at arbitrary points after the initial run stage, yet still ensuring that an apt-get update happens only once after all the apt sources have been installed, but before any packages are installed. This must be a general problem. Wonder how people have solved it...? 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.
[Puppet Users] Puppetlabs lvm module
I just grabbed the puppet labs lvm module from Puppet forge. Attempting to use... physical_volume { ['/dev/xvdb1', '/dev/xvdc1']: ensure = present; } results in: err: Could not retrieve catalog from remote server: Error 400 on SERVER: Syntax error at ':'; expected '}' at /truth/sauce/env/prod/modules/lvm/manifests/init.pp:29 on node testweb10.us1.xxx.com Line 29 of init.pp is: # # Just clean up the logical volume # absent: { logical_volume { $name: ensure = absent, volume_group = $vg, size = $size } } I don't get it what am I missing 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.
Re: [Puppet Users] Puppetlabs lvm module
I've always used semicolons at the end of resources never caused a problem before, and puppet-lint doesn't complain about them. On Tue, Aug 14, 2012 at 1:42 PM, Eric Shamow e...@puppetlabs.com wrote: Everything else aside, you have a semicolon after ensure = present instead of a comma in your physical_volume resource. I'm not certain that it's causing the problem but it might be confusing the parser. -Eric -- Eric Shamow Professional Services http://puppetlabs.com/ (c)631.871.6441 Join us for PuppetConf 2012 at the Mission Bay Convention Center in San Francisco, California on September 27th and 28th -- http://bit.ly/pcsig12 On Tuesday, August 14, 2012 at 4:39 PM, Douglas Garstang wrote: I just grabbed the puppet labs lvm module from Puppet forge. Attempting to use... physical_volume { ['/dev/xvdb1', '/dev/xvdc1']: ensure = present; } results in: err: Could not retrieve catalog from remote server: Error 400 on SERVER: Syntax error at ':'; expected '}' at /truth/sauce/env/prod/modules/lvm/manifests/init.pp:29 on node testweb10.us1.xxx.com (http://testweb10.us1.xxx.com) Line 29 of init.pp is: # # Just clean up the logical volume # absent: { logical_volume { $name: ensure = absent, volume_group = $vg, size = $size } } I don't get it what am I missing 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 (mailto:puppet-users@googlegroups.com). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto:puppet-users+unsubscr...@googlegroups.com). For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
Re: [Puppet Users] Puppetlabs lvm module
Eric, Yes... that's specifically line 29. 19logical_volume { $name: 20 ensure = present, 21 volume_group = $vg, 22 size = $size, 23 before = Volume_group[$vg] 24} 25 } 26 # 27 # Just clean up the logical volume 28 # 29 absent: { 30logical_volume { $name: ensure = absent, volume_group = $vg, size = $size } 31 } 32 # 33 # Create the whole chain. 34 # code compression syntax not familiar with that... Doug. On Tue, Aug 14, 2012 at 1:45 PM, Eric Shamow e...@puppetlabs.com wrote: Oh right - for the code compression syntax…I don't use it and so I tend to forget it exists. Sorry about that. Is line 29 specifically this? absent: { It would be helpful to see in context with line numbers, such as in a gist. -Eric -- Eric Shamow Professional Services http://puppetlabs.com/ (c)631.871.6441 Join us for PuppetConf 2012 at the Mission Bay Convention Center in San Francisco, California on September 27th and 28th -- http://bit.ly/pcsig12 On Tuesday, August 14, 2012 at 4:43 PM, Douglas Garstang wrote: I've always used semicolons at the end of resources never caused a problem before, and puppet-lint doesn't complain about them. On Tue, Aug 14, 2012 at 1:42 PM, Eric Shamow e...@puppetlabs.com (mailto:e...@puppetlabs.com) wrote: Everything else aside, you have a semicolon after ensure = present instead of a comma in your physical_volume resource. I'm not certain that it's causing the problem but it might be confusing the parser. -Eric -- Eric Shamow Professional Services http://puppetlabs.com/ (c)631.871.6441 Join us for PuppetConf 2012 at the Mission Bay Convention Center in San Francisco, California on September 27th and 28th -- http://bit.ly/pcsig12 On Tuesday, August 14, 2012 at 4:39 PM, Douglas Garstang wrote: I just grabbed the puppet labs lvm module from Puppet forge. Attempting to use... physical_volume { ['/dev/xvdb1', '/dev/xvdc1']: ensure = present; } results in: err: Could not retrieve catalog from remote server: Error 400 on SERVER: Syntax error at ':'; expected '}' at /truth/sauce/env/prod/modules/lvm/manifests/init.pp:29 on node testweb10.us1.xxx.com (http://testweb10.us1.xxx.com) Line 29 of init.pp is: # # Just clean up the logical volume # absent: { logical_volume { $name: ensure = absent, volume_group = $vg, size = $size } } I don't get it what am I missing 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 (mailto:puppet-users@googlegroups.com). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto:puppet-users+unsubscr...@googlegroups.com). For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- 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 (mailto:puppet-users@googlegroups.com). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto:puppet-users+unsubscr...@googlegroups.com). For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com (mailto:doug.garst...@gmail.com) Cell: +1-805-340-5627 -- 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 (mailto:puppet-users@googlegroups.com). To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com (mailto:puppet-users+unsubscr...@googlegroups.com). For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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
Re: [Puppet Users] Pass array to a define
On Sat, Aug 11, 2012 at 7:48 PM, Stefan Schulte stefan.schu...@taunusstein.net wrote: On Sat, Aug 11, 2012 at 01:46:57PM -0700, James A. Peltier wrote: - Original Message - | On Fri, Aug 10, 2012 at 05:10:20PM -0700, Douglas Garstang wrote: | How can I pass an array to a define? It's not documented in the | puppet | language guide. | | I've got: | | define lvm::create_vg ( $pvdisks ) { | exec { | 'pvcreate': | command = /sbin/pvcreate -yf $pvdisks, | unless = /sbin/pvdisplay $pvdisks, | ... | } | } | | class someclass { | lvm::create_vg { | 'bcvg01': | pvdisks = ['/dev/xvdb1', '/dev/xvdc1']; | } | } | | Inside the define, $pvdisks gets expanded to '/dev/xvdb1/dev/xvdc1' | | Doug. | | Inside your define $pvdisks is whatever you passed as the pvdisks | parameter, so in your case $pvdisks *is* an array. But in the unless | parameter you use the array in a string context so all your items are | concatenated. Unfortunately puppet does not have a join function to | convert an array to a string. | | On the other hand it may not be desired to destroy every disk you | pass | as in the pvdisks array if only one of the disks is not a LVM disk | (as | pvdisplay returns with a non-zero exitcode as soon as one disk is not | recognized to be a LVM disk) | | So the best approach is probably to get the LVM puppet plugin and | replace your exec with | | physical_volume { $pvdisks: | ensure = present, | } | | The physical_volume is a new type that comes with the LVM plugin. | | [1] http://forge.puppetlabs.com/puppetlabs/lvm | | -Stefan Great! But what happens if you want to specify multiple physical volumes be a member of a single data volume during creation. Is the expectation that you'd always specify a lvm:vg with the initial disk and then lvm:vg extend that volume? Do you mean something like sda1 and sda2 beeing two physical volumes in the volume group vg? This should work: physical_volume { [ '/dev/sda1', '/dev/sda2']: ensure = present. } volume_group { 'vg': ensure = present, physical_volumes = [ '/dev/sda1', '/dev/sda2' ], require = [ Physical_volume['/dev/sda1'], Physical_volume['/dev/sda2'], ], } -Stefan Yeah, well I tried the puppet labs lvm module. After I fixed the syntax errors, which included a missing '}' in the code (wtf!??!), it seems that custom types don't work with environments... http://projects.puppetlabs.com/issues/4409 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.
[Puppet Users] Custom Providers and Environmemts.
I've installed the puppet labs lvm module. After fixing the missing } at line 20 in init.pp (really?!?!), I'm getting this:' err: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type physical_volume at /truth/sauce/env/prod/modules/role/manifests/common.pp:43 on node testweb10.us1.xxx.com Seems related to: http://projects.puppetlabs.com/issues/4409 I'm using environments. Is this fixed? 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.
[Puppet Users] Re: Custom Providers and Environmemts.
On Tue, Aug 14, 2012 at 2:25 PM, Douglas Garstang doug.garst...@gmail.com wrote: I've installed the puppet labs lvm module. After fixing the missing } at line 20 in init.pp (really?!?!), I'm getting this:' err: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type physical_volume at /truth/sauce/env/prod/modules/role/manifests/common.pp:43 on node testweb10.us1.xxx.com Seems related to: http://projects.puppetlabs.com/issues/4409 I'm using environments. Is this fixed? Doug Jeez, I dunno... the rb files are on the client... [us1:i-f8350ebe] root@testweb10:/etc/sysctl.d# ls -l /var/lib/puppet/lib/puppet/type total 16 -rw-r--r-- 1 root root 531 2012-08-14 20:35 filesystem.rb -rw-r--r-- 1 root root 1380 2012-08-14 20:35 logical_volume.rb -rw-r--r-- 1 root root 320 2012-08-14 20:35 physical_volume.rb -rw-r--r-- 1 root root 458 2012-08-14 20:35 volume_group.rb 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.
Re: [Puppet Users] Custom Providers and Environmemts.
On Tue, Aug 14, 2012 at 2:49 PM, Eric Shamow e...@puppetlabs.com wrote: Specifically the types need to be in the server's $libdir. You can place them there manually, but the way they generally get there is via pluginsync. So the easiest way to ensure the master can process them is to place them in the module path used by the server *when the server is acting as a puppet agent* and run puppet agent on the server. This will sync the types to the correct directory on the master and enable it to parse them when they are used elsewhere. -Eric Actually, *sigh* something else is wrong, because I used the concat module earlier, after enabling pluginsync on both master and client, and it seems to have synced what it needs ok: [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib# ls -l total 8 drwxr-sr-x 2 root root 4096 2012-08-14 18:02 facter drwxr-sr-x 4 root root 4096 2012-08-14 20:35 puppet [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib# cd facter/ [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib/facter# ls -l total 4 -rw-r--r-- 1 root root 103 2012-08-14 18:02 concat_basedir.rb Something else is wrong, something specifically with puppetlabs/lvm. The concat module is in the same environment too. 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.
Re: [Puppet Users] Custom Providers and Environmemts.
On Tue, Aug 14, 2012 at 2:59 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 14, 2012 at 2:49 PM, Eric Shamow e...@puppetlabs.com wrote: Specifically the types need to be in the server's $libdir. You can place them there manually, but the way they generally get there is via pluginsync. So the easiest way to ensure the master can process them is to place them in the module path used by the server *when the server is acting as a puppet agent* and run puppet agent on the server. This will sync the types to the correct directory on the master and enable it to parse them when they are used elsewhere. -Eric Actually, *sigh* something else is wrong, because I used the concat module earlier, after enabling pluginsync on both master and client, and it seems to have synced what it needs ok: [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib# ls -l total 8 drwxr-sr-x 2 root root 4096 2012-08-14 18:02 facter drwxr-sr-x 4 root root 4096 2012-08-14 20:35 puppet [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib# cd facter/ [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib/facter# ls -l total 4 -rw-r--r-- 1 root root 103 2012-08-14 18:02 concat_basedir.rb Something else is wrong, something specifically with puppetlabs/lvm. The concat module is in the same environment too. Doug. Now I'm really confused... The files _ARE_ on the client... [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib/puppet# find . -ls 2745884 drwxr-sr-x 4 root root 4096 Aug 14 20:35 . 2745974 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./type 2745984 -rw-r--r-- 1 root root 1380 Aug 14 20:35 ./type/logical_volume.rb 2746014 -rw-r--r-- 1 root root 458 Aug 14 20:35 ./type/volume_group.rb 2745994 -rw-r--r-- 1 root root 320 Aug 14 20:35 ./type/physical_volume.rb 2746004 -rw-r--r-- 1 root root 531 Aug 14 20:35 ./type/filesystem.rb 2745894 drwxr-sr-x 6 root root 4096 Aug 14 20:35 ./provider 2745934 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/logical_volume 2745964 -rwxr-xr-x 1 root root 3653 Aug 14 20:35 ./provider/logical_volume/lvm.rb 2745914 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/filesystem 2745924 -rw-r--r-- 1 root root 825 Aug 14 20:35 ./provider/filesystem/lvm.rb 2745944 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/physical_volume 2745954 -rw-r--r-- 1 root root 401 Aug 14 20:35 ./provider/physical_volume/lvm.rb 2745904 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/volume_group 2746024 -rw-r--r-- 1 root root 1856 Aug 14 20:35 ./provider/volume_group/lvm.rb But... [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib/puppet# puppet agent --test --onetime --verbose info: Retrieving plugin info: Loading facts in concat_basedir info: Loading facts in concat_basedir err: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type physical_volume at /truth/sauce/env/prod/modules/role/manifests/common.pp:44 on node testweb10.us1.xxx.com 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.
Re: [Puppet Users] Custom Providers and Environmemts.
On Tue, Aug 14, 2012 at 3:03 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 14, 2012 at 2:59 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Aug 14, 2012 at 2:49 PM, Eric Shamow e...@puppetlabs.com wrote: Specifically the types need to be in the server's $libdir. You can place them there manually, but the way they generally get there is via pluginsync. So the easiest way to ensure the master can process them is to place them in the module path used by the server *when the server is acting as a puppet agent* and run puppet agent on the server. This will sync the types to the correct directory on the master and enable it to parse them when they are used elsewhere. -Eric Actually, *sigh* something else is wrong, because I used the concat module earlier, after enabling pluginsync on both master and client, and it seems to have synced what it needs ok: [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib# ls -l total 8 drwxr-sr-x 2 root root 4096 2012-08-14 18:02 facter drwxr-sr-x 4 root root 4096 2012-08-14 20:35 puppet [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib# cd facter/ [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib/facter# ls -l total 4 -rw-r--r-- 1 root root 103 2012-08-14 18:02 concat_basedir.rb Something else is wrong, something specifically with puppetlabs/lvm. The concat module is in the same environment too. Doug. Now I'm really confused... The files _ARE_ on the client... [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib/puppet# find . -ls 2745884 drwxr-sr-x 4 root root 4096 Aug 14 20:35 . 2745974 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./type 2745984 -rw-r--r-- 1 root root 1380 Aug 14 20:35 ./type/logical_volume.rb 2746014 -rw-r--r-- 1 root root 458 Aug 14 20:35 ./type/volume_group.rb 2745994 -rw-r--r-- 1 root root 320 Aug 14 20:35 ./type/physical_volume.rb 2746004 -rw-r--r-- 1 root root 531 Aug 14 20:35 ./type/filesystem.rb 2745894 drwxr-sr-x 6 root root 4096 Aug 14 20:35 ./provider 2745934 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/logical_volume 2745964 -rwxr-xr-x 1 root root 3653 Aug 14 20:35 ./provider/logical_volume/lvm.rb 2745914 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/filesystem 2745924 -rw-r--r-- 1 root root 825 Aug 14 20:35 ./provider/filesystem/lvm.rb 2745944 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/physical_volume 2745954 -rw-r--r-- 1 root root 401 Aug 14 20:35 ./provider/physical_volume/lvm.rb 2745904 drwxr-sr-x 2 root root 4096 Aug 14 20:35 ./provider/volume_group 2746024 -rw-r--r-- 1 root root 1856 Aug 14 20:35 ./provider/volume_group/lvm.rb But... [us1:i-f8350ebe] root@testweb10:/var/lib/puppet/lib/puppet# puppet agent --test --onetime --verbose info: Retrieving plugin info: Loading facts in concat_basedir info: Loading facts in concat_basedir err: Could not retrieve catalog from remote server: Error 400 on SERVER: Puppet::Parser::AST::Resource failed with error ArgumentError: Invalid resource type physical_volume at /truth/sauce/env/prod/modules/role/manifests/common.pp:44 on node testweb10.us1.xxx.com Doug. Files are on the server too.. [us1] root@truth:/truth# find / -name physical_volume.rb /truth/sauce/env/prod/modules/lvm/spec/unit/puppet/type/physical_volume.rb /truth/sauce/env/prod/modules/lvm/lib/puppet/type/physical_volume.rb The second one, under env/prod is the correct environment. So... this should work... 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.
[Puppet Users] Return value from a define?
So, general puppet design question. I have a definition called create_vg that creates an lvm volume group. An input to this is obviously the list of physical disks. In a normal programming language, I'd put the identification of the physical disks into one function, and pass the result of that to create_vg(). However, since a define in puppet can't return a value (can it?), you don't have many options unless you want to set it as a fact with fact-add, which bothers me, because your effectively than accumulating a list of global variables that may not need to be variable. So, your effectively left with putting the logic that determines the physical disks _inside_ create_vg(). No? Seems so... non functional! 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.
Re: [Puppet Users] Pass array to a define
On Sat, Aug 11, 2012 at 5:21 AM, Stefan Schulte stefan.schu...@taunusstein.net wrote: On Fri, Aug 10, 2012 at 05:10:20PM -0700, Douglas Garstang wrote: How can I pass an array to a define? It's not documented in the puppet language guide. I've got: define lvm::create_vg ( $pvdisks ) { exec { 'pvcreate': command = /sbin/pvcreate -yf $pvdisks, unless = /sbin/pvdisplay $pvdisks, ... } } class someclass { lvm::create_vg { 'bcvg01': pvdisks = ['/dev/xvdb1', '/dev/xvdc1']; } } Inside the define, $pvdisks gets expanded to '/dev/xvdb1/dev/xvdc1' Doug. Inside your define $pvdisks is whatever you passed as the pvdisks parameter, so in your case $pvdisks *is* an array. But in the unless parameter you use the array in a string context so all your items are concatenated. Unfortunately puppet does not have a join function to convert an array to a string. On the other hand it may not be desired to destroy every disk you pass as in the pvdisks array if only one of the disks is not a LVM disk (as pvdisplay returns with a non-zero exitcode as soon as one disk is not recognized to be a LVM disk) So the best approach is probably to get the LVM puppet plugin and replace your exec with physical_volume { $pvdisks: ensure = present, } The physical_volume is a new type that comes with the LVM plugin. [1] http://forge.puppetlabs.com/puppetlabs/lvm Thanks. What am I looking at when I extract this? I was expecting to see a couple of .pp files. Installation documentation!? 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.
[Puppet Users] Installing Modules.
Someone directed me to this... http://forge.puppetlabs.com/puppetlabs/lvm How do you install these...? The documentation at http://docs.puppetlabs.com/puppet/2.7/reference/modules_installing.html says to use the puppet module command... where? On the server? The docs also say this isn't available until puppet 2.7.14, and we're using 2.7.1. How do I install? 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.
Re: [Puppet Users] variable scoping?
I feel your pain. On Sat, Aug 11, 2012 at 10:24 PM, Zachary Alex Stern z...@enternewmedia.com wrote: Also, fwiw, I've read that document on scoping beginning to end several times. Doesn't mean much to me I'm afraid - pretty new to all this. On Saturday, August 11, 2012 10:36:48 PM UTC-4, Eric Shamow wrote: The best reference to explain how variable scoping works in Puppet is this one - http://docs.puppetlabs.com/guides/scope_and_puppet.html Scoping has changed with 2.7, so you may find some confusing references online that follow the pre-2.7 rules. In general the 2.7 changes are designed to introduce some sanity to variable scopes and eliminate dynamic scoping, which causes all kinds of pain. The easiest way to think about scoping in general is that a scope is defined by its container. If I put something physical in a box, I have access to it the moment I open the box, and other objects inside the box can interact with it. If, however, I now put that box inside a second box, the objects in the second box cannot interact directly with the objects in the first - the first object is protected by its container. Scoping mostly works the same way. The right way to get at the variable is to always explicitly scope, as you began to get at below with your scope.lookupvar example. As that can be a bit of a pain to repeat, you can always copy the value into a local variable: class puppet::config { include puppet::params $puppetserver = puppet::params::puppetserver … } -Eric -- Eric Shamow Professional Services http://puppetlabs.com/ ©631.871.6441 Join us for PuppetConf 2012 at the Mission Bay Convention Center in San Francisco, California on September 27th and 28th -- http://bit.ly/pcsig12 On Saturday, August 11, 2012 at 8:45 PM, Zachary Stern wrote: I'm having a really hard time grasping how variables are scoped in puppet (not really much of a programmer). I've got a manifest that looks like this: ### class puppet::config { include puppet::params file { '/etc/puppet/puppet.conf': ensure = present, content = template('puppet/puppet.conf.erb'), owner = 'root', group = 'admins', require = Class['puppet::install'], notify = Class['puppet::service'], } } ### I've then got a manifest like this, which has a class being included above: ### class puppet::params { $puppetserver = 'command.enterawesome.com (http://command.enterawesome.com)' } ### The template being used in the first class includes the variable $puppetserver, but somehow, the include statement isn't enough for the variable to be defined within the scope of the manifest/template above. What gives? It works just fine if I include a statement like this in the erb file: %= scope.lookupvar('puppet::params::puppetserver') % But I'd really like to understand scoping better. What is it I need to do to just refer to the variable by name? Why isn't the include statement enough? Isn't in including the puppet::params class inside the puppet::config class, and therefore having the variable defined in that context? Apparently not. But I don't understand why. I wan't to end up at a point where the variable is in the proper scope, such that I can just have a statement like %= puppetserver % inside of the template I'm using. Thanks in advance! -- You received this message because you are subscribed to the Google Groups Puppet Users group. To post to this group, send email to puppet...@googlegroups.com (mailto:puppet...@googlegroups.com). To unsubscribe from this group, send email to puppet-users...@googlegroups.com (mailto:puppet-users+unsubscr...@googlegroups.com). For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en. -- 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/-/IgWXSc13m04J. 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Re: Installing Modules.
On Sat, Aug 11, 2012 at 10:33 PM, Douglas Garstang doug.garst...@gmail.com wrote: Someone directed me to this... http://forge.puppetlabs.com/puppetlabs/lvm How do you install these...? The documentation at http://docs.puppetlabs.com/puppet/2.7/reference/modules_installing.html says to use the puppet module command... where? On the server? The docs also say this isn't available until puppet 2.7.14, and we're using 2.7.1. How do I install? Doug Main page http://docs.puppetlabs.com/puppet/2.7/reference/modules_publishing.html Seriously... is it that hard to document _how_ to install these things? It HAS to be there but where...? 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.
[Puppet Users] New Scope 2.7
So... I was just reading the new puppet scoping documentation at http://docs.puppetlabs.com/guides/scope_and_puppet.html. I don't get it. If I have this... class web_server { include common include webserver $my_role = web_server } Can I access the $my_role variable in the webserver class? 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.
Re: [Puppet Users] Re: New Scope 2.7
On Fri, Aug 10, 2012 at 1:42 PM, llowder llowde...@gmail.com wrote: On Friday, August 10, 2012 3:28:33 PM UTC-5, Douglas wrote: So... I was just reading the new puppet scoping documentation at http://docs.puppetlabs.com/guides/scope_and_puppet.html. I don't get it. If I have this... class web_server { include common include webserver $my_role = web_server } Can I access the $my_role variable in the webserver class? If you use: $web_server::my_role This seems completely screwed to me. What if your in a general class, one not necessarily related to the function of a web server (but still included from a web server), and you need to access the role? 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.
Re: [Puppet Users] Re: New Scope 2.7
On Fri, Aug 10, 2012 at 2:24 PM, llowder llowde...@gmail.com wrote: On Friday, August 10, 2012 3:52:42 PM UTC-5, Douglas wrote: On Fri, Aug 10, 2012 at 1:42 PM, llowder llow...@gmail.com wrote: On Friday, August 10, 2012 3:28:33 PM UTC-5, Douglas wrote: So... I was just reading the new puppet scoping documentation at http://docs.puppetlabs.com/guides/scope_and_puppet.html. I don't get it. If I have this... class web_server { include common include webserver $my_role = web_server } Can I access the $my_role variable in the webserver class? If you use: $web_server::my_role This seems completely screwed to me. What if your in a general class, one not necessarily related to the function of a web server (but still included from a web server), and you need to access the role? Then use the fully qualified variable name as I mentioned in my last post. What if the class I am in doesn't KNOW that the parent is $web_server ...? 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.
[Puppet Users] Pass array to a define
How can I pass an array to a define? It's not documented in the puppet language guide. I've got: define lvm::create_vg ( $pvdisks ) { exec { 'pvcreate': command = /sbin/pvcreate -yf $pvdisks, unless = /sbin/pvdisplay $pvdisks, ... } } class someclass { lvm::create_vg { 'bcvg01': pvdisks = ['/dev/xvdb1', '/dev/xvdc1']; } } Inside the define, $pvdisks gets expanded to '/dev/xvdb1/dev/xvdc1' 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.
Re: [Puppet Users] Re: Tag Negation
Well that sucks, On Wed, Aug 8, 2012 at 4:53 PM, Peter Brown rendhal...@gmail.com wrote: I don't think the tag system was designed to be used like that. Have you checked all the docs? On 9 August 2012 01:19, Douglas Garstang doug.garst...@gmail.com wrote: Anyone? Anyone? Sent from my iPhone On Aug 7, 2012, at 4:47 PM, Douglas Garstang doug.garst...@gmail.com wrote: All, Is there a way to run puppet and specify to apply resources NOT containing a tag? ie, negating something like this? puppetd --tags solaris The use case for this is to put a tag in our application code so that when running puppet we know changes made there will NOT be enacted. The only way I can see to do it is to do the opposite put a tag indicating it isn't our code everywher else and run puppetd WITH the tag, which isn't as maintainable. 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. -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
[Puppet Users] Running apt-get update on package install
I'm on Ubuntu, and I wanted to always have 'apt-get update' run before attempting to install packages, so I put this in my top level site.pp file: exec { 'refresh-repos': command = '/usr/bin/apt-get update'; } Package { require = Exec['refresh-repos'] } However, that causes a nasty cyclic dependency error. I really HATE those because the error message makes it impossible to interpret what's actually going on. How can I do this without the awful cyclic error messages? 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.
[Puppet Users] Re: Tag Negation
Anyone? Anyone? Sent from my iPhone On Aug 7, 2012, at 4:47 PM, Douglas Garstang doug.garst...@gmail.com wrote: All, Is there a way to run puppet and specify to apply resources NOT containing a tag? ie, negating something like this? puppetd --tags solaris The use case for this is to put a tag in our application code so that when running puppet we know changes made there will NOT be enacted. The only way I can see to do it is to do the opposite put a tag indicating it isn't our code everywher else and run puppetd WITH the tag, which isn't as maintainable. 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.
Re: [Puppet Users] Re: Scope Confusion!
On Wed, Aug 8, 2012 at 6:25 AM, jcbollinger john.bollin...@stjude.org wrote: On Tuesday, August 7, 2012 1:25:32 PM UTC-5, Douglas wrote: As usual, I'm confused about scope in puppet. This puppet 2.7.1. In my classes below, the bottom class, company::web::content, requires the file resource '/usr/local/company'. However, that resource is defined two includes back in the class company::common. I always thought this wasn't supposed to work, and that you could only access the immediate scope, not the scope of stuff beyond this. It does work however. Is it supposed to. Why? Yes, it is supposed to. All classes and resources have global scope once they are declared. The 'include' function does not introduce classes and their resources into the current, innermost scope -- it doesn't need to do so, and couldn't even if it wanted to do. Instead, 'include' ensures that the specified class has been parsed and added to the catalog, which, as I said, puts them into the global scope. The model pretty much has to work that way, because the physical resources of the target node all have global scope, too. It is useful and appropriate for classes and definitions to 'include' (or 'require') the classes on which they rely, provided that those classes are not parametrized (Puppet = 2.7.x). Aside from it's plain aggregation function, that way it's a lot easier to make classes independent of the order in which they are declared, plus it has documentary value. Classes that 'include' all the classes on which they directly rely are more robust. However, there is no requirement for a class to 'include' its dependencies. If a class does not do so, then it simply relies on those dependencies to have been declared by some other class that was parsed before it. Users of parametrized classes rely heavily on this, because parametrized classes can be declared only once, but they may need to be referenced by many other classes. Ok, so to put it another way, your saying that once a class is included, it's scope becomes global and can be used anywhere else, no matter the relationship between the class where it was included, and the class that's trying to access it? 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.
[Puppet Users] Scope Confusion!
As usual, I'm confused about scope in puppet. This puppet 2.7.1. In my classes below, the bottom class, company::web::content, requires the file resource '/usr/local/company'. However, that resource is defined two includes back in the class company::common. I always thought this wasn't supposed to work, and that you could only access the immediate scope, not the scope of stuff beyond this. It does work however. Is it supposed to. Why? class company::common { file { '/usr/local/company': } } class company::web::common { include company::common } class company::web::content { include company::web::common file { '/usr/local/company/www': require = File['/usr/local/company'] } } 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.
[Puppet Users] Tag Negation
All, Is there a way to run puppet and specify to apply resources NOT containing a tag? ie, negating something like this? puppetd --tags solaris The use case for this is to put a tag in our application code so that when running puppet we know changes made there will NOT be enacted. The only way I can see to do it is to do the opposite put a tag indicating it isn't our code everywher else and run puppetd WITH the tag, which isn't as maintainable. 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.
[Puppet Users] File default precedence..?
Something that I have been confused about for a while. If I have: /etc/puppet/modules/foo/manifests/bar.pp: class foo::bar { File { backup = false } } /etc/puppet/manifests/site.pp: File { backup = true } which one takes precedence in this situation? What about when an include or an inherit is used instead? 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.
[Puppet Users] Relative Symlinks
Is there any way to get relative symlinks in puppet? This: file { tomcat-current: #/opt/foo/apache-tomcat-current: ensure = link, target = /opt/foo/apache-tomcat-${tomcat_version}; } yields: Wed Mar 21 09:58:05 -0700 2012 Puppet (err): Failed to apply catalog: Parameter path failed: File paths must be fully qualified, not 'tomcat-current' at /etc/puppet/env/development/modules/tomcat7/manifests/server.pp:18 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.
Re: [Puppet Users] Relative Symlinks
Thanks. On Wed, Mar 21, 2012 at 10:04 AM, Christopher Wood christopher_w...@pobox.com wrote: $ cat /tmp/symlink.pp file { '/tmp/link_to_zz': ensure = link, target = 'zz', } $ puppet /tmp/symlink.pp notice: /Stage[main]//File[/tmp/link_to_zz]/ensure: created $ ls -l /tmp/link_to_zz lrwxrwxrwx 1 cwood cwood 2 Mar 21 13:03 /tmp/link_to_zz - zz (ln target linkname) On Wed, Mar 21, 2012 at 09:59:50AM -0700, Douglas Garstang wrote: Is there any way to get relative symlinks in puppet? This: file { tomcat-current: #/opt/foo/apache-tomcat-current: ensure = link, target = /opt/foo/apache-tomcat-${tomcat_version}; } yields: Wed Mar 21 09:58:05 -0700 2012 Puppet (err): Failed to apply catalog: Parameter path failed: File paths must be fully qualified, not 'tomcat-current' at /etc/puppet/env/development/modules/tomcat7/manifests/server.pp:18 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. -- 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. -- Regards, Douglas Garstang http://www.linkedin.com/in/garstang Email: doug.garst...@gmail.com Cell: +1-805-340-5627 -- 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.
Re: [Puppet Users] extlookup can't match key.
On Mon, Mar 19, 2012 at 5:53 PM, Gary Larizza g...@puppetlabs.com wrote: On Tue, Mar 20, 2012 at 11:35 AM, Douglas Garstang doug.garst...@gmail.com wrote: I have a 2.7.6 server and a 2.6.4 client. I'm trying to use ext_lookup. site.pp: $extlookup_datadir = /etc/puppet/manifests/extdata $extlookup_precedence = [%{fqdn}, domain_%{domain}, common] Try using Puppet variables: [$fqdn, domain_${domain}, 'common'] Tried. Still getting the same error. I don't think it's even recognizing ext lookup(). Wasn't that functionality added in puppet 2.6? Btw, what I originally had was copied straight from the docs. 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.
Re: [Puppet Users] extlookup can't match key.
On Tue, Mar 20, 2012 at 7:33 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Mon, Mar 19, 2012 at 5:53 PM, Gary Larizza g...@puppetlabs.com wrote: On Tue, Mar 20, 2012 at 11:35 AM, Douglas Garstang doug.garst...@gmail.com wrote: I have a 2.7.6 server and a 2.6.4 client. I'm trying to use ext_lookup. site.pp: $extlookup_datadir = /etc/puppet/manifests/extdata $extlookup_precedence = [%{fqdn}, domain_%{domain}, common] Try using Puppet variables: [$fqdn, domain_${domain}, 'common'] Tried. Still getting the same error. I don't think it's even recognizing ext lookup(). Wasn't that functionality added in puppet 2.6? Btw, what I originally had was copied straight from the docs. Doug I get the same error if I replace ext lookup with xxx. It seems like the function isn't there, yet the docs clearly state it was added in puppet 2.6.1, and my server is 2.7.6 and my client is 2.6.4... 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.
Re: [Puppet Users] extlookup can't match key.
On Tue, Mar 20, 2012 at 8:03 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Mar 20, 2012 at 7:33 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Mon, Mar 19, 2012 at 5:53 PM, Gary Larizza g...@puppetlabs.com wrote: On Tue, Mar 20, 2012 at 11:35 AM, Douglas Garstang doug.garst...@gmail.com wrote: I have a 2.7.6 server and a 2.6.4 client. I'm trying to use ext_lookup. site.pp: $extlookup_datadir = /etc/puppet/manifests/extdata $extlookup_precedence = [%{fqdn}, domain_%{domain}, common] Try using Puppet variables: [$fqdn, domain_${domain}, 'common'] Tried. Still getting the same error. I don't think it's even recognizing ext lookup(). Wasn't that functionality added in puppet 2.6? Btw, what I originally had was copied straight from the docs. Doug I get the same error if I replace ext lookup with xxx. It seems like the function isn't there, yet the docs clearly state it was added in puppet 2.6.1, and my server is 2.7.6 and my client is 2.6.4... Doug Jeez... it shouldn't be this damn hard... 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.
Re: [Puppet Users] extlookup can't match key.
On Tue, Mar 20, 2012 at 9:55 AM, Nan Liu n...@puppetlabs.com wrote: On Tue, Mar 20, 2012 at 9:33 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Mar 20, 2012 at 8:03 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Tue, Mar 20, 2012 at 7:33 AM, Douglas Garstang doug.garst...@gmail.com wrote: On Mon, Mar 19, 2012 at 5:53 PM, Gary Larizza g...@puppetlabs.com wrote: On Tue, Mar 20, 2012 at 11:35 AM, Douglas Garstang doug.garst...@gmail.com wrote: I have a 2.7.6 server and a 2.6.4 client. I'm trying to use ext_lookup. site.pp: $extlookup_datadir = /etc/puppet/manifests/extdata $extlookup_precedence = [%{fqdn}, domain_%{domain}, common] Try using Puppet variables: [$fqdn, domain_${domain}, 'common'] Tried. Still getting the same error. I don't think it's even recognizing ext lookup(). Wasn't that functionality added in puppet 2.6? Btw, what I originally had was copied straight from the docs. Doug I get the same error if I replace ext lookup with xxx. It seems like the function isn't there, yet the docs clearly state it was added in puppet 2.6.1, and my server is 2.7.6 and my client is 2.6.4... If you replace extlookup with xxx it should error: $ puppet apply -e notice(xxx('key1','unknown')) Unknown function xxx at line 1 ... $ puppet apply -e notice(extlookup('key1','unknown')) notice: Scope(Class[main]): unknown notice: Finished catalog run in 0.04 seconds Feel free to try the one line example above, it doesn't seem like it's compiling the manifest you are describing. So, now it's working. _after_ I upgraded the client to 2.7.6... 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.
[Puppet Users] OpenSUSE weirdness.
I'm having some weird issues with puppet 2.7.6 on OpenSUSE. When I run puppet in the foreground, it's all fine. However, when I run it as a service, all that get's logged is: abc:/var/log/puppet # cat puppet.log Tue Mar 20 10:11:57 -0700 2012 Puppet (warning): iconv doesn't seem to support UTF-8/UTF-16 conversions Tue Mar 20 10:11:58 -0700 2012 Puppet (notice): Reopening log files Tue Mar 20 10:11:57 -0700 2012 Puppet (warning): iconv doesn't seem to support UTF-8/UTF-16 conversions Although, it seems to be running fine. When I stop the daemon, the following is immediately flushed to puppet.log: Tue Mar 20 10:12:47 -0700 2012 Puppet (notice): Starting Puppet client version 2.7.6 Tue Mar 20 10:12:48 -0700 2012 Puppet (err): Could not retrieve catalog from remote server: getaddrinfo: Name or service not known Tue Mar 20 10:12:48 -0700 2012 Puppet (notice): Using cached catalog Tue Mar 20 10:12:50 -0700 2012 /Stage[main]/Sudo::Common/File[/etc/sudoers] (err): Could not evaluate: getaddrinfo: Name or service not known Could not retrieve file metadata for puppet:///modules/sudo/etc/sudoers: getaddrinfo: Name or service not known at /etc/puppet/modules/sudo/manifests/common.pp:17 Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Snmp::Agent/File[/etc/snmp/snmpd.conf] (err): Could not evaluate: getaddrinfo: Name or service not known Could not retrieve file metadata for puppet:///modules/snmp/etc/snmp/snmpd.conf: getaddrinfo: Name or service not known at /etc/puppet/modules/snmp/manifests/agent.pp:26 Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Snmp::Agent/Service[snmpd] (notice): Dependency File[/etc/snmp/snmpd.conf] has failures: true Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Snmp::Agent/Service[snmpd] (warning): Skipping because of failed dependencies Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Ssh::Server/File[/etc/ssh/sshd_config] (err): Could not evaluate: getaddrinfo: Name or service not known Could not retrieve file metadata for puppet:///modules/ssh/etc/ssh/sshd_config: getaddrinfo: Name or service not known at /etc/puppet/modules/ssh/manifests/server.pp:26 Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Ssh::Server/Service[sshd] (notice): Dependency File[/etc/ssh/sshd_config] has failures: true Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Ssh::Server/Service[sshd] (warning): Skipping because of failed dependencies Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Mcollective::Agent/File[/usr/libexec/mcollective/mcollective/agent/package.rb] (err): Could not evaluate: getaddrinfo: Name or service not known Could not retrieve file metadata for puppet:///modules/mcollective/agent/package.rb: getaddrinfo: Name or service not known at /etc/puppet/modules/mcollective/manifests/agent.pp:43 Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Mcollective::Agent/Service[mcollective] (notice): Dependency File[/usr/libexec/mcollective/mcollective/agent/package.rb] has failures: true Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Mcollective::Agent/Service[mcollective] (warning): Skipping because of failed dependencies Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Postfix::Server/File[/etc/postfix/main.cf] (err): Could not evaluate: getaddrinfo: Name or service not known Could not retrieve file metadata for puppet:///modules/postfix/etc/postfix/main.cf: getaddrinfo: Name or service not known at /etc/puppet/modules/postfix/manifests/server.pp:27 Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Postfix::Server/Service[postfix] (notice): Dependency File[/etc/postfix/main.cf] has failures: true Tue Mar 20 10:12:51 -0700 2012 /Stage[main]/Postfix::Server/Service[postfix] (warning): Skipping because of failed dependencies Tue Mar 20 10:12:51 -0700 2012 Puppet (notice): Finished catalog run in 1.82 seconds Tue Mar 20 10:12:52 -0700 2012 Puppet (err): Could not send report: getaddrinfo: Name or service not known Tue Mar 20 10:13:24 -0700 2012 Puppet (notice): Caught TERM; calling stop I'm rather confused. I tried putting autoflush = true in the [user] section of puppet.conf but it had no effect. I also don't know why those name service errors are occurring. 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.
[Puppet Users] mcollective bits
I've always found the mcollective docs at http://docs.puppetlabs.com/mcollective/reference/basic/gettingstarted.html very confusing. What _exactly_ goes on the client (i.e. the remote system)? The docs talk about editing both the server.cfg and the client.cfg files. The server.cfg file is part of the collective package and the client.cfg file is part of the client.cfg package. However, I though the client package was installed on the single querying system? As you can see, it's all quite confusing and the documentation doesn't clearly explain it. 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.
[Puppet Users] Mcollective for OpenSUSE
Sorry if there's an mcollective mailing list... So, I'm working for a company that using OpenSUSE, which in my opinion is a very bad idea. Anyway, how can I get collective for OpenSUSE that doesn't involve using tarballs? It's not in the standard OpenSUSE repo's. Does someone else have a repo? Are there spec files for building RPM's in the tarball? 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.
Re: [Puppet Users] Mcollective for OpenSUSE
On Wed, Mar 14, 2012 at 9:59 AM, Darin Perusich da...@darins.net wrote: There's a .spec in the tarball that builds cleanly when you comment out the two %defines and manually set the version and release. The %defines cause a Too many levels of recursion in macro expansion. error. Darin, I haven't gone backed and looked at the spec file, but when you attempt to install mcollective-common, it barfs because it can't find the rubygems-stomp dependency, which doesn't seem to exist on OpenSUSE. Since OpenSUSE also uses RPM's, it would be nice if the people that wrote the spec file could have written to build clean RPM's, not just RPM's that work only on CentOS/Redhat. Douglas. -- 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.
Re: [Puppet Users] Mcollective for OpenSUSE
On Wed, Mar 14, 2012 at 12:37 PM, Darin Perusich da...@darins.net wrote: Hi Douglas, On Wed, Mar 14, 2012 at 3:22 PM, Douglas Garstang doug.garst...@gmail.com wrote: On Wed, Mar 14, 2012 at 9:59 AM, Darin Perusich da...@darins.net wrote: There's a .spec in the tarball that builds cleanly when you comment out the two %defines and manually set the version and release. The %defines cause a Too many levels of recursion in macro expansion. error. Darin, I haven't gone backed and looked at the spec file, but when you attempt to install mcollective-common, it barfs because it can't find the rubygems-stomp dependency, which doesn't seem to exist on OpenSUSE. Since OpenSUSE also uses RPM's, it would be nice if the people that wrote the spec file could have written to build clean RPM's, not just RPM's that work only on CentOS/Redhat. rubygems-stomp is available in the devel:languages:ruby:extensions repository, link below, so you can download/install the rpm from there or add the repo to you system. I have this repo installed on the system I built mcollective on so stomp was available. Also, you can search all the available opensuse repo's for packages at http://software.opensuse.org/search. http://download.opensuse.org/repositories/devel:/languages:/ruby:/extensions/ Any idea where that is via rsync? This yields nothing: rsync -avrt rsync://rsync.opensuse.org/opensuse-full | grep rubygem-stomp Copying files from a repo without anything except rsync isn't really feasible. Douglas. -- 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.
[Puppet Users] MCollective Cost?
Someone told me yesterday that collective wasn't free, New to me. Has something changed in the past month, or are they looking at the commercial version? The web site must be somewhat confusing if a new user thinks it costs, but it doesn't. 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.