【发布时间】:2013-11-22 01:04:31
【问题描述】:
我正在使用 puppet 3.3.1 来配置一个运行 ubuntu 12.04 和 hiera 的 vagrant box。
当我在 yaml 文件中明确声明每个参数时,我可以将 hiera 与 create_resources 一起使用,但我无法获得 http://docs.puppetlabs.com/references/latest/function.html#createresources 所述的默认值(可选的第三个参数起作用)
这是一个不起作用的例子:
# hiera.yaml
---
:backends:
- yaml
:yaml:
:datadir: /vagrant/hiera
:hierarchy:
- common
这是common.yaml中的数据
# common.yaml
ssh_keys:
deployer_key:
user: deployer
# type: ssh-rsa
# ensure: present
key: "AAAAB3NzaC1yc2EAAAABIwAAAQEA9Y9X..."
现在,如果我在清单中调用以下内容,它会抱怨没有将类型传递给 ssh_authorized_key。
create_resources("ssh_authorized_key", hiera("ssh_keys"), { ensure => present, type => "ssh-rsa" } )
但如果我取消注释类型并确保 common.yaml 中的行并调用
create_resources("ssh_authorized_key", hiera("ssh_keys"))
一切正常。
如何让默认参数起作用?最好不要把东西弄干。我想我可以使用 &label 和 << 语法重用 yaml 文件本身中的部分,但似乎这种默认行为应该是可能的。
有什么建议吗?
【问题讨论】:
标签: ubuntu ssh virtual-machine vagrant puppet