Linux
如何將 Linux 命令的輸出儲存在 Puppet 文件中?
我想在特定的 Puppet 代理上創建一個新文件,並將 Linux 命令的輸出儲存到該文件中。
content
有沒有一種簡單的方法可以使用該屬性來做到這一點?我要執行的命令是file { '/home/akrall/out_string': ensure => 'file', owner => 'andreas', group => 'andreas', mode => '400' content => '<the output of the command would go here>' }
我要執行的命令本身是
openssl rand -hex 32
,並且我想確保它對於每個代理都是唯一的,所以這就是為什麼我選擇不將其儲存為 Puppet 變數並將相同的變數發送給多個代理,因為它會每個代理都使用相同的字元串。誰能告訴我該怎麼做?我試過content => '"$(openssl rand -hex 32)"'
了,但這對我不起作用,我不確定我還應該嘗試什麼。**編輯:**如果沒有簡單的方法可以做到這一點
content
,我可以使用exec
命令將輸出寫入文件,但我希望有一些我可以做的事情,file
這樣我就可以將它們全部保存在同一個資源中。
您可以使用該
generate()
函式執行此操作,但由於每次執行該命令都會生成不同的結果,因此每次 Puppet 執行時文件都會發生更改。您可以做的是使用stdlib模組中的
fqdn_rand_string()
函式。就像是:file { '/home/akrall/out_string': ensure => 'file', owner => 'andreas', group => 'andreas', mode => '400', content => fqdn_rand_string(64, '0123456789abcdef'), }
這會使用代理的主機名播種隨機數生成器,因此如果主機名保持不變,它將始終生成相同的隨機字元串,但對於每個主機來說會有所不同。