假設我在一個節點上有一個exec資源,該節點用運行時確定的名字創建一個文件。我可以完全訪問正在運行的腳本,腳本知道它正在創建的文件的名稱。在Puppet中處理生成的文件
在Puppet中,最好不要使用那麼多原始紅寶石,我怎樣才能使用在File或Package資源中創建的這個文件的名稱?
從我所看到的一些人提到使用自定義的事實。但是,如果我打算多次使用相同的腳本,我該如何將事實隔離在正確的範圍內?
假設我在一個節點上有一個exec資源,該節點用運行時確定的名字創建一個文件。我可以完全訪問正在運行的腳本,腳本知道它正在創建的文件的名稱。在Puppet中處理生成的文件
在Puppet中,最好不要使用那麼多原始紅寶石,我怎樣才能使用在File或Package資源中創建的這個文件的名稱?
從我所看到的一些人提到使用自定義的事實。但是,如果我打算多次使用相同的腳本,我該如何將事實隔離在正確的範圍內?
這可能比看起來更困難。
通常情況下,事實是從代理向主人獲取信息的好方法。通過Facter 2.x
,事實上可以採用數組或散列值來容納您希望通信的多個文件名。
但是,清單從不依賴於在同步exec
(或任何)資源時確定的值。這是因爲資源在目錄申請階段進行評估。清單編譯完成後,此階段開始。代理與完整的目錄一起工作。在編譯甚至開始之前收集事實信息。因此,清單必須能夠完全依賴編譯器開始評估之前存在的信息。
請注意,如果您使用puppet apply
而不是主/代理,則這不會發生變化。
我可以看到兩種方式讓你去做這件事。
exec
資源完成所有必需的工作。這可能也可能不可行。兩者都可能不理想。
另一種替代方法是重新考慮模型,以便文件名無需動態生成。如果沒有更多關於具體問題/情景的知識,我不能評論可行性。
再次感謝您,我最終編寫了一個使用ruby的tempfile類創建文件並返回名稱的自定義函數。 – Derongan 2014-09-04 17:37:30