一个主机上的多个相似文件来自 puppet 中的一个模板

multiple similar files on one host from one template in puppet

全部。这似乎是其他人已经回答过的问题,但我找不到,如果这是一个老问题,请见谅。

我想用同一个模板在一台主机上制作多个文件。这些是内部网络和外部网络上 IP 的 dnsmasq 主机文件。一个文件需要内部 IP 地址,一个文件需要外部 IP 地址。

如果这没有意义,假设我想在每个用户的主目录中放置一个套用信函。这封信可能会说 "Hi <%= @username %>".

我做不到

$username = 'bob'
file { '/home/bob/HELLO':
  content => template('hello/HELLO.erb')
}
$username = 'fred'
file { '/home/fred/HELLO':
  content => template('hello/HELLO.erb')
}

我该怎么做?

谢谢!

你的代码将无法工作,因为你不能在 puppet 中 reassign variables

使用define创建您自己的参数化类型。 例如:

define myfile ($username, $path)
{
    file { $path:
        content => template('hello/HELLO.erb')
    }
}

下次使用它:

myfile {'file1': 
   $username => 'bob', 
   $path     => '/home/bob/HELLO',
} 

myfile {'file2': 
   $username => 'fred', 
   $path     => '/home/fred/HELLO',
}