需要使用puppet替换文件中的字符串

时间:2017-12-02 18:38:36

标签: puppet

我需要帮助使用Puppet替换apache Vhost文件中的单词。我的Vhost文件如下:

<DataTemplate x:Key="MyDataTemplate">
    <Button Command="{Binding ElementName=VmDcHelper, Path=DataContext.MyCommand}" />
</DataTemplate>

现在我想用<VirtualHost *:80> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L] </VirtualHost> 替换第一行的* facter变量。我不想使用Puppet Forge的apache模块。我在$fqdn模块中找到了file_line,但它无法替换为facter变量。

我可以使用stdlib资源类型运行exec命令来替换*与主机名,但我想避免这样做。还有其他办法吗?

1 个答案:

答案 0 :(得分:2)

您实际上可以在这里使用file_line

include stdlib
$fqdn = $facts['fqdn']
file_line { 'virtual_host':
  ensure => present,
  path   => '/path/to/httpd.conf',
  line   => "<VirtualHost ${fqdn}:80>",
  match  => '<VirtualHost \*:80>',
}