Thanks Steven,  I uploaded my code 
to https://github.com/roadtest/plm-accounts and I will study your code in 
the mean time.

cheers,

carl

On Sunday, February 10, 2013 12:07:15 AM UTC-5, Steven wrote:
>
>  I'm not noticing the problem, but maybe it would help to see some other 
> code.
> I just uploaded my mounts module to github. It has one place that uses a 
> function from Example42, but that can be replaced with a normal hiera call.
>
> https://github.com/snemetz/Puppet_mounts
>
> I have a few modules that use this method, but I need time to document and 
> clean them up a bit, before releasing them.
> Mounts is one of the simpler ones.
>
> Steven
>
>
> ------------------------------
> Date: Sat, 9 Feb 2013 20:15:55 -0800
> From: [email protected] <javascript:>
> To: [email protected] <javascript:>
> Subject: Re: [Puppet Users] hiera query yaml parameters
>
> When trying to separate user information in a yaml file, I encounter two 
> issues. 
>
> 1. when I use the yaml file in init.pp under my user account module,  it 
> gives following errors. ssh_user_hash is the assigned in class  as 
>  "$ssh_user_hash = hiera(ssh_users)"
> ===
> root@vm1:/etc/puppet/manifests# puppet apply --verbose nodes.pp
> Info: Loading facts in 
> /etc/puppet/modules/stdlib/lib/facter/puppet_vardir.rb
> Info: Loading facts in 
> /etc/puppet/modules/stdlib/lib/facter/facter_dot_d.rb
> Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/pe_version.rb
> Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/root_home.rb
> Warning: Could not retrieve fact fqdn
> Warning: Unrecognised escape sequence '\!' in file 
> /etc/puppet/manifests/nodes.pp at line 12
> Warning: Host is missing hostname and/or domain: vm1
> Error: *ssh_user_hash is not an hash or array* when accessing it with 
> user1 at /etc/puppet/modules/plm-accounts/manifests/init.pp:41 on node vm1
> Error: *ssh_user_hash is not an hash or array *when accessing it with 
> user1 at /etc/puppet/modules/plm-accounts/manifests/init.pp:41 on node vm1
> ===
>
> 2.if I move the hiera output to node.pp, it can run on host vm1, which is 
> my puppet master with yaml file on it. But it can't run on other puppet 
> client server as it says can't find yaml file.
> ===
> Error: Could not find data item ssh_users in any Hiera data file and no 
> default supplied at /etc/puppet/manifests/nodes.pp:1 *on node vm2*
> ===
>
> Here is my yaml file and init.pp in my user module file.
> #more /var/lib/hiera/OpsUser.yaml
> ---
> ssh_users:
> user1 :
>         FullName : "User1"
>         additional_groups : "adm"
>         shell : "/bin/bash"
>         gid : 1003
>         uid : 1003
>         pwhash : "$1$E7OvghG0$OmZMtTbQ2uYf5GA5u7RSH1"
>         ssh_key : 
>                 type : "ssh-rsa"
>                 key : 
> "AAAAB3NzaC1yc2EAAAABJQAAAIBqOaxEVoWs69JM1H5jpzW7JvIwuanN4VW7F+uDVI1sii6BjROmYgYCvVoH+9/c3K5MNxqk35DHlFffgFk0b3o24Qa4RZZgxnUPTxsRIScaHQlr4/flYw643zVSwBpiEdBUfpRinc
> UiaYfy6SCPu3aiKRyFgxZ6VByExrbHLwsz5w=="
>                 comment : "[email protected] <javascript:>"
>
> root@vm1:/var/lib/hiera# more 
> /etc/puppet/modules/plm-accounts/manifests/init.pp
> class plm-accounts {
>     #exec {
>     #"/bin/echo user1:abc123 | /usr/sbin/chpasswd":
>     #onlyif => "/bin/egrep -q '^user1:\!:' /etc/shadow",
>     #}
>
> $ssh_user_hash = hiera(ssh_users)
>   $user_keys = keys($ssh_user_hash)
>   notice (" keys are $ssh_user_hash" )
>   if is_array ($user_keys) {
>     add_users { $user_keys: }
>   }
>
>   define add_users {
>     $user_uid = $ssh_user_hash[$name][uid] 
>     $real_name = $ssh_user_hash[$name][FullName]
>     notice ( "$user_uid is $real_name ")
>     plm-accounts::virtual { "$name" :
>       uid => $user_uid,
>       realname => $real_name,
>         }
> plm-accounts::add_ssh_key { $name :
>       key => "${ssh_user_hash[$name][ssh_key][key]}", 
>       type => "${ssh_user_hash[$name][ssh_key][type]}"
>                               }
>   }
> }
>
>
>
>
> On Tuesday, February 5, 2013 12:00:25 PM UTC-5, roadtest wrote:
>
> you are right again:-) 
>
> For people who are new to puppet,  here is the installation instruction - 
> http://forge.puppetlabs.com/puppetlabs/stdlib.  stdlib is built in Puppet 
> Enterprise and needs to be installed for community version.
>
> cheers,
>
> carl
>
> On Tuesday, February 5, 2013 11:28:46 AM UTC-5, Steven wrote:
>
>  keys comes form the PuppetLab's stdlib module
> So does is_array and a bunch of other nice functions
>
>
> Steven
>
>  
> ------------------------------
> Date: Tue, 5 Feb 2013 07:12:45 -0800
> From: [email protected]
> To: [email protected]
> Subject: Re: [Puppet Users] hiera query yaml parameters
>
> Steven, thanks for your reply!  You are right. It is unnecessary using 
> create_resource to query yaml parameters. It can be done directly as 
> following:
>
> $sshd_hash = hiera(os_users)
> $server_ssh_keys = $sshd_hash[$username][ssh_keys][key]
>
> format of my os_users yaml file was not correct, that is why it failed me. 
>
> Btw, there is no keys function in puppet.
>
> Cheers,
>
> carl
>
>
>
> On Sunday, February 3, 2013 10:21:25 PM UTC-5, Steven wrote:
>
>  You can read the hash directly, create_resource is not needed (may or may 
> not be desired)
>
> $user_defs = hiera('os_users') will give you the full hash
>
> What I tend to do for this type of data structure is:
>
> $user_defs = hiera('os_users')
> $user_keys = keys($user_defs)
> if is_array($user_keys) {
>   process_users { $user_keys:; }
> }
>
> define process_users {
>   # Do whatever you want for each element of the hash
>   # $name will be the hash key
>   # $user_defs[$name] is the hash of the current item
>   # $user_defs[$name]['comment'] to access the user's comment field
> }
>
>
> Steven
>
>
> ------------------------------
> From: [email protected]
> Subject: Re: [Puppet Users] hiera query yaml parameters
> Date: Sun, 3 Feb 2013 19:19:25 -0500
> To: [email protected]
>
> Could you show your solution, please ?
>
> I would like to see how you did it.
>
> On Feb 3, 2013, at 6:46 PM, roadtest wrote:
>
> I figure out the solution. 
>
> Using the create_resource to convert YAML to a hash array, then I can 
> query retrieve every individual value.  If there is better way, feel free 
> to share with group.
>
> carl
>
> On Saturday, February 2, 2013 3:25:33 PM UTC-5, roadtest wrote:
>
> Hello,
>
> I have a yaml data file containing user account with following information.
> #more users.yaml
> ---
> os_users:
>  user1:
>   locked: false
>   comment: System Operator
>   uid: '700'
>   gid: '700'
>   groups:
>   - admin
>   - sudonopw
>   sshkeys:
>   - ssh-rsa 
> AAAAB3NzaC1yc2EAAAABIwAAAQEAwLBhQefRiXHSbVNZYKu2o8VWJjZJ/B4LqICXuxhiiNSCmL8j+5zE/VLPIMeDqNQt8L
>  user2:
>   locked: true
>   comment: Test Locked Account
>   uid: '701'
>   gid: '701'
>   groups:
>   - admin
>   - sudonopw
>   sshkeys:
>   - ssh-rsa 
> AAAAB3NzaC1yc2EAAAABIwAAAQEAwLBhQefRiXHSbVNZYKu2o8VWJjZJ/B4LqICXuxhiiNSCm
>
> I can search os_users information like following:
> #hiera -c /etc/hiera.yaml os_users
> {"user1"=>{"groups"=>["admin", "sudonopw"], "locked"=>false, 
> "comment"=>"System Operator", "uid"=>"700", "sshkeys"=>["ssh-rsa 
> AAAAB3NzaC1yc2EAAAABIwAAAQEAwLBhQefRiXHSbVNZYKu2o8VWJjZJ/B4LqICXuxhiiNSCmL8j+5zE/VLPIMeDqNQt8L"],
>  
> "gid"=>"700"}, "user2"=>{"groups"=>["admin", "sudonopw"], "locked"=>true, 
> "comment"=>"Test Locked Account", "uid"=>"701", "sshkeys"=>["ssh-rsa 
> AAAAB3NzaC1yc2EAAAABIwAAAQEAwLBhQefRiXHSbVNZYKu2o8VWJjZJ/B4LqICXuxhiiNSCm"], 
> "gid"=>"701"}}
>
> My question is how I can get value of os_users -> user1 -> sshkeys. I 
> tried:
> #hiera -c /etc/hiera.yaml os_users[user1[sshkeys]]
> nil
>
> Could you please advise whether this is doable or direct me to some 
> document?
>
> Thanks in advance,
>
> carl
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>  
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>  
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected]<javascript:>
> .
> Visit this group at http://groups.google.com/group/puppet-users?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>  
>  
>  

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/puppet-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to