Linux

如何將 Linux 命令的輸出儲存在 Puppet 文件中?

  • February 7, 2019

我想在特定的 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'),
}

這會使用代理的主機名播種隨機數生成器,因此如果主機名保持不變,它將始終生成相同的隨機字元串,但對於每個主機來說會有所不同。

引用自:https://serverfault.com/questions/952805