Puppet 6 and module puppetlabs/accounts hiera yaml does not fill content

女生的网名这么多〃 提交于 2020-01-06 08:06:58

问题


I am attempting to define my user accounts as Hashes in Hiera, like this:

---
accounts::user:
  jack:
    ensure: present
    bashrc_content: file('accounts/shell/bashrc')
    bash_profile_content: file('accounts/shell/bash_profile')

It works fine if I define them in my *.pp files.

Please, find more details about hiera.yaml, manifest and users.yamal on Gist

Why doesn't this work?

P.S. This question continues to,


回答1:


No, what you are trying to do is not possible.

I have a few options for you. In Hiera, you could have all of the data other than the call to the file() function:

---
accounts::user:
  jack:
    locked: false
    comment: Jack Doe
    ensure: present
    groups:
    - admins
    - sudo
    shell: '/bin/bash'
    home_mode: '0700'
    purge_sshkeys: false
    managehome: true
    managevim: false
    sshkeys:
    - ssh-rsa AAAA
    password: '70'

And then in your manifest:

$defaults = {
  'bashrc_content' => file('accounts/shell/bashrc'),
  'bash_profile_content' => file('accounts/shell/bash_profile'),
}

$user_data = lookup('accounts::user', Hash[String,Hash], 'hash', {})
$user_data.each |$user,$props| {
  accounts::user { $user: * => $props + $defaults }
}

Another option is to simply include your file content in the YAML data, i.e.

---
accounts::user:
  jack:
    locked: false
    comment: Jack Doe
    ensure: present
    groups:
    - admins
    - sudo
    shell: '/bin/bash'
    home_mode: '0700'
    purge_sshkeys: false
    managehome: true
    managevim: false
    bashrc_content: |
      # If not running interactively, don't do anything
      [ -z "$PS1" ] && return

      if [ -f /etc/bashrc ]; then
        . /etc/bashrc   # --> Read /etc/bashrc, if present.
      fi
      ...
    bash_profile_content: ...
    sshkeys:
    - ssh-rsa AAAA
    password: '70'

Then you won't need the file function or the files at all.

For more info:

  • On what you can interpolate in Hiera data.
  • The splat operator (*) and a useful blog on how to use it.
  • On multiline-strings in YAML.


来源:https://stackoverflow.com/questions/55058734/puppet-6-and-module-puppetlabs-accounts-hiera-yaml-does-not-fill-content

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!