2013-11-22 49 views
2

我正在使用puppet 3.3.1來配置運行Ubuntu 12.04的vagrant box與hiera。在Puppet 3.3.1中使用create_resources時遇到麻煩

我能當我在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文件本身中的部分,但似乎這種默認行爲應該是可能的。

任何提示?

回答

2

你必須把它放在一個單獨的變量。

$defaults = { 
    ensure => present, 
    type => "ssh-rsa", 
} 

create_resources("ssh_authorized_key", hiera("ssh_keys"), $defaults)