2017-04-18 124 views
0

目前試圖瞭解木偶艙單另一個人寫的,並會見了在類下面的結構:木偶類語法澄清

postgres_helper::tablespace_grant { $tablespace_grants: 
    privilege => 'all', 
    require => [Postgresql::Server::Role[$rolename]] 
    } 

什麼呢$ tablespace_grants:在這種情況下手段?首先,我認爲是某種標題的,然而,當我使用通知接收的它的值,它是散列:

Tablespace_grants值爲[{名稱=> TS_INDEX_01,角色=>顯影劑}, {名=> TS_DATA01_01,角色=>開發商}]

+0

實際上,它是一個數組,允許使用資源標題,Puppet會遍歷它:https://docs.puppet.com/puppet/4.9/lang_resources_advanced.html#arrays-of-titles。試着做一個'notify'而不是'notice',這樣你就知道代理的價值是什麼,而不是主人的價值。 –

回答

2

什麼呢$ tablespace_grants:是指在這種情況下?首先,我建議 是某種稱號,

這是一個變量的引用,使用,是的,作爲一個postgres_helper::tablespace_grant資源聲明的標題。

然而,當我使用通知接收 它的價值,這是散列:

Tablespace_grants值爲[{名稱=> TS_INDEX_01,角色=>顯影劑}, {名稱=> TS_DATA01_01,角色=>顯影劑}]

實際上,這似乎是散列的陣列。數組可以用作資源聲明的標題來緊湊地聲明多個資源,每個數組元素一個資源。然而在木偶4中,the elements are required to be strings。早期版本的Puppet會將散列串化爲資源標題;我無法確定,木偶4是否仍然落後於此。

無論如何,在任何版本的Puppet中,整體聲明都不可能是其原始作者所期望的。它看起來像是聲明多個資源,每個資源都具有由其中一個散列指定的屬性,但是給定的代碼無法實現,並且尚不清楚想要的代碼是什麼。

+0

也許'create_resources'與幾個默認屬性會代表原來的意圖? –

+0

@MattSchuchard,是的,'create_resources()'可能最終解決了這個問題,但數據目前不是'create_resources()'可以使用的形式。 –

+0

@MattSchuchard,如果OP使用Puppet 4,或者Puppet 3使用未來的解析器,那麼'each'構造就可以完成目前安排的數據。 –