Re: [Puppet Users] Iterate over array to mount NFS directories

Luke Bigum
Tue, 25 Sep 2012 09:09:05 -0000

Hi Forrie,

With regards to your iteration question, you would need to use a defined
type, something like this (untested):

define nfs_mount ( $server, $prefix, $state = "mounted" ) {
     $mount_point = "${prefix}/${name}"

     #If the state is "unmounted" the mount point
''File'' is removed
     file { $mount_point:
         ensure => $state ? {
             "unmounted" => absent,
             "absent" => absent,
             default => present,
         }
     }

     mount { $mount_point:
         ensure => $state,
         device => "{$server}:${mount_point}",
     }
}

nfs_mount { $production: server => $server, prefix => $prefix}

See the documentation for the Mount type in Puppet and it''s ensure
parameter for possible values for $state in the define above - it''s
possible to have entries in /etc/fstab but not actually mounted, which
should satisfy your two stage cleanup, or you can just set $state to
''absent'' straight away and clean up the both NFS mount and
mount point.
This means you need to maintain two arrays: one of active mount points
and one of decomissioned mounts, however you probably don''t need to
keep
the decomissioned mounts around for ever, once every server has cleaned
themselves up they can be removed from the manifest.

http://docs.puppetlabs.com/references/latest/type.html#mount

Hope that helps,

-Luke

On 24/09/12 23:43, Forrie wrote:
> I have many systems that require NFS mounts for production.  Rather
> than have one entry of file{} and mount{} per NFS import, in a *.pp
> file, I''d rather set up and iterate over an array.   Looking at
the
> docs, I''m not quite sure how to do this properly.  We have three
> groups for which I would need this (production, development, test)
> that each have their own NFS mounts.
>
> here''s what I would use:
>
> $server = "server.name.com"
> $prefix = "/some/nfs/root"
>
> # array
> production = [
>               "dir1",
>               "dir2",
>               "dir3",
>               "dir4",
> ] # etc etc
>
> Then issue a command to iterate and manage those NFS mounts.
>
> Since these change from time-to-time, and require some pruning... I
> will be left with "unmanaged" resources (ie: directory mount
points)
> scattered around that I will need to clean up.  I read through some
> tickets for feature requests and got lost in where this is going --
> however, to keep the place neat and clean, I''d like to unmanage
the
> mount points and the fstab entries after.   The idea of manually doing
> this from system to system isn''t good.
>
> I''m still new-ish to puppet, so any pointers would be appreciated.
>
>
> Thanks.
>
>
> --
> 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/-/MQ9gniWF4gUJ.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users+unsubscribe@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.