Scripting
使用 Puppet 同步兩個目錄
我有一堆伺服器,上面有兩個需要同步的目錄。例如,在我可能擁有的同一台伺服器上
/var/path/to/dir1
,/var/path/to/dir2
每個伺服器下可能有文件和文件夾。我想同步/var/path/to/dir1
並/var/path/to/dir2
作為“備份”。有誰知道在 Puppet 中同步這兩個目錄的有效方法?我是否必須創建一個自定義腳本來執行此操作並使用
exec
Puppet 清單文件中的方法?我的猜測是創建一個腳本來遞歸驗證主目錄中每個文件的 MD5 雜湊,然後使用該列表驗證第二個目錄中的文件。我不確定是否有辦法在 Puppet 中原生地做到這一點。
你在 puppet 上走在了正確的軌道上。讓 puppetmaster 作為事實來源,將它們存放在執行 puppetmaster 的伺服器中,並聲明應該存在的文件和規範版本。您甚至可能希望使用 SVN 或 GIT 之類的東西對您在 puppetmaster 伺服器中提供的文件進行版本控制。
這為您提供了關於這兩個位置中的內容的一些強有力的保證。
file { '/var/path/to/dir1/': ensure => 'present', source => 'puppet:///path/to/dir1', recurse => 'true', } file { '/var/path/to/dir2/': ensure => 'present', source => 'puppet:///path/to/dir1', recurse => 'true', }
如上所述,您可能需要刪除任何收集到的不受歡迎的額外內容,例如
{ purge => 'true', force => 'true', }
正如向我指出的那樣(謝謝!!),如果 ‘/var/path/to/dir1/’ 下有大量文件或子文件夾的深層層次結構,則完成 puppet 執行的時間可能會增加迅速。我仍然建議您將 puppet 伺服器作為事實來源,但您最好使用 rsync,例如:
rsync::get { '/var/path/to/dir1/': source => 'puppet:///path/to/dir1', purge => true, } rsync::get { '/var/path/to/dir2/': source => 'puppet:///path/to/dir1', purge => true, }