如何使用Puppet更改文件的内容?

如何使用Puppet更改文件的内容?,puppet,Puppet,我有一个html文件,我想使用Puppet将该文件替换为具有相同文件名的空文件。我想知道Puppet是否可以删除文件的全部内容 例如,这是删除Puppet中的一行的正确方法吗 file_line { 'delete a line': ensure => absent, path => /tmp/test, line => '\ ' match => '^(?:.*)' } 如果您知道有一个文件/path/to/file.html,并且希望确保该文件存在且为空,则

我有一个html文件,我想使用Puppet将该文件替换为具有相同文件名的空文件。我想知道Puppet是否可以删除文件的全部内容

例如,这是删除Puppet中的一行的正确方法吗

file_line { 'delete a line':
 ensure => absent,
 path => /tmp/test,
 line => '\ '
 match => '^(?:.*)'
}

如果您知道有一个文件
/path/to/file.html
,并且希望确保该文件存在且为空,则很容易:

file { '/path/to/file.html':
  ensure  => file,
  content => '',
}
如果要确保使用
file\u line
删除该文件中的某一行,则在设置
sure=>缺席
时有两种方法

一种方法是设置
match=>…
match\u作为缺勤=>true
, 如下例所示:

file_line { 'bashrc_proxy':
  ensure            => absent,
  path              => '/etc/bashrc',
  match             => '^export\ HTTP_PROXY\=',
  match_for_absence => true,
}
在此代码示例中,match将查找以export开头的行 然后是HTTP_代理并将其删除。如果多行匹配,则 除非设置了
multiple=>true
参数,否则将引发错误

请注意,
line=>…
参数将被接受,但在中被忽略 上面的例子

使用
sure=>缺席的第二种方法是指定
行=>…
, 没有对手:

file_line { 'bashrc_proxy':
  ensure => absent,
  path   => '/etc/bashrc',
  line   => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
}
请注意,当以这种方式确保不存在行时,默认行为 这一次是要始终删除所有匹配的行,并且此行为 不能被禁用

另请参见代码和单元测试中的

我还提出了一个请求,要求将这些
文件行
的示例添加到正式文档中,因为之前没有充分的文档记录


谢谢你的提问

如果您知道有一个文件
/path/to/file.html
,并且希望确保该文件存在且为空,则很容易:

file { '/path/to/file.html':
  ensure  => file,
  content => '',
}
如果要确保使用
file\u line
删除该文件中的某一行,则在设置
sure=>缺席
时有两种方法

一种方法是设置
match=>…
match\u作为缺勤=>true
, 如下例所示:

file_line { 'bashrc_proxy':
  ensure            => absent,
  path              => '/etc/bashrc',
  match             => '^export\ HTTP_PROXY\=',
  match_for_absence => true,
}
在此代码示例中,match将查找以export开头的行 然后是HTTP_代理并将其删除。如果多行匹配,则 除非设置了
multiple=>true
参数,否则将引发错误

请注意,
line=>…
参数将被接受,但在中被忽略 上面的例子

使用
sure=>缺席的第二种方法是指定
行=>…
, 没有对手:

file_line { 'bashrc_proxy':
  ensure => absent,
  path   => '/etc/bashrc',
  line   => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
}
请注意,当以这种方式确保不存在行时,默认行为 这一次是要始终删除所有匹配的行,并且此行为 不能被禁用

另请参见代码和单元测试中的

我还提出了一个请求,要求将这些
文件行
的示例添加到正式文档中,因为之前没有充分的文档记录


谢谢你的提问

这是可能的。将
文件
资源与
内容=>''
一起使用<代码>文件\行
仅用于一行,即使指定文件中有多行可以匹配。这是可能的。将
文件
资源与
内容=>''
一起使用<代码>文件\行
仅用于一行,即使指定文件中有多行可以匹配。非常感谢!您的回答帮助我解决了我的问题:)是否可以说对任何行执行此操作,而不指定行的内容(例如:line=>'export HTTP_PROXY=)?正如我所解释的,这就是:match参数的要点。我不知道“any match”是什么意思。你能准确地展示一下你传递给对手的是什么吗?你有可能会问一个新问题,在这种情况下,我很乐意回答。非常感谢!您的回答帮助我解决了我的问题:)是否可以说对任何行执行此操作,而不指定行的内容(例如:line=>'export HTTP_PROXY=)?正如我所解释的,这就是:match参数的要点。我不知道“any match”是什么意思。你能准确地展示你传递给对手的是什么吗?你可能应该问一个新问题,在这种情况下,我很乐意回答。