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

标签 puppet

我需要帮助使用 Puppet 替换 apache Vhost 文件中的单词。我的虚拟主机文件如下所示:

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>

现在我想用第一行的 $fqdn 因子变量替换 * 。我不想使用 Puppet Forge 的 apache 模块。我从 stdlib 模块中找到了 file_line,但它无法用 Factor 变量替换。

我可以使用 exec 资源类型来运行 sed 命令来将 * 替换为主机名,但我想避免这样做。还有其他方法可以做到这一点吗?

最佳答案

实际上,您可以在此处使用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>',
}

关于puppet - 需要使用 puppet 替换文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47611220/

相关文章:

puppet - 使用 Bolt 检查目标机器上的文件是否存在

mysql - 目前 Ubuntu 上的 puppetlabs-mysql 模块有什么技巧吗?

linux - 使用puppet创建动态大小的lvm

puppet - 从模块外部获取 Puppet 文件

powershell - 我可以通过powershell为tightVNC设置密码吗?

ruby - 在 Ruby 中读取一行文本时如何删除 "hidden"个字符?

Puppet 找不到模板的变量

ruby - 使用 puppet Factor 返回多个自定义事实

linux - 运行 puppet 证书列表不显示我正在寻找的证书

puppet - 在使用 Puppet 安装其他软件包之前运行 `apt-get update`