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

时间:2015-06-17 16:20:15

标签: templates puppet

所有。这似乎是其他人已经回答的问题,但是我找不到它,所以如果这是一个老问题就道歉。

我想在同一个模板上的一个主机上创建多个文件。这些是内部vs外部网络上IP的dnsmasq主机文件。一个文件需要内部IP地址,一个文件需要外部IP地址。

如果这没有意义,想象一下我想在每个用户的主目录中加上一个套用信。这封信可能会说"嗨<%= @ username%>"。

我不能做像

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

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

您的代码无效,因为您无法在傀儡中reassign variables

使用define创建自己的参数化类型。 E.g:

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',
}