如何使用 Puppet 更改文件的内容?
How to change the contents of a file by using Puppet?
我有一个 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_line
删除该文件中的一行,则在设置 ensure => absent
时有两种方法可以做到这一点。
一个是设置match => ...
和match_for_absence => true
,
如以下示例所示:
file_line { 'bashrc_proxy':
ensure => absent,
path => '/etc/bashrc',
match => '^export\ HTTP_PROXY\=',
match_for_absence => true,
}
在此代码示例中,匹配将查找以 export 开头的行
然后是 HTTP_PROXY 并将其删除。如果多行匹配,一个
除非设置 multiple => true
参数,否则将引发错误。
请注意 line => ...
参数将被接受 但被忽略
上面的例子。
第二种使用ensure => absent
的方法是指定一个line => ...
,
没有匹配项:
file_line { 'bashrc_proxy':
ensure => absent,
path => '/etc/bashrc',
line => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
}
请注意,当以这种方式确保行不存在时,默认行为
这次是始终删除所有匹配的行,这种行为
无法禁用。
我还提出了一个拉取请求,将 file_line
的这些示例添加到官方文档 here 中,因为之前没有充分记录。
感谢提问。
我有一个 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_line
删除该文件中的一行,则在设置 ensure => absent
时有两种方法可以做到这一点。
一个是设置match => ...
和match_for_absence => true
,
如以下示例所示:
file_line { 'bashrc_proxy':
ensure => absent,
path => '/etc/bashrc',
match => '^export\ HTTP_PROXY\=',
match_for_absence => true,
}
在此代码示例中,匹配将查找以 export 开头的行
然后是 HTTP_PROXY 并将其删除。如果多行匹配,一个
除非设置 multiple => true
参数,否则将引发错误。
请注意 line => ...
参数将被接受 但被忽略
上面的例子。
第二种使用ensure => absent
的方法是指定一个line => ...
,
没有匹配项:
file_line { 'bashrc_proxy':
ensure => absent,
path => '/etc/bashrc',
line => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
}
请注意,当以这种方式确保行不存在时,默认行为 这次是始终删除所有匹配的行,这种行为 无法禁用。
我还提出了一个拉取请求,将 file_line
的这些示例添加到官方文档 here 中,因为之前没有充分记录。
感谢提问。