我尝试使用puppet更改配置文件。
这是我要更改的test.txt文件:
[default]
#puppet=no
abc=123
[nova]
#puppet=no
我想改变"#puppet = no" to" puppet = yes" 仅限于[默认]标签。
这是我的test.pp两个版本:
file_line{"someline":
path => '/root/openstack-puppet/computenode/nova/test.txt',
match => '[default]\n#puppet',
line => 'puppet=ok'
}
这个找不到匹配模式,所以只需添加" puppet = ok"在文件的末尾。
file_line{"someline":
path => '/root/openstack-puppet/computenode/nova/test.txt',
match => '#puppet',
line => 'puppet=ok'
}
由于多重匹配模式问题导致此失败。
我也尝试了Augeas,但是我无法找到如何使用Augeas取消注释。
有人请帮助我解决这个问题!!
=============================================== ==========================
我运行此代码:
file_line { 'someline':
path => '/root/openstack-puppet/computenode/nova/test.txt',
after => '\[default\]',
multiple => 'false',
match => '#puppet',
line => 'puppet=ok',
}
但是当我和&#34跑步时,木偶申请"它仍然会出现同样的错误:
Error: More than one line in file '/root/openstack-puppet/computenode/nova/test.txt' matches pattern '#puppet'
Error: /Stage[main]/Main/File_line[someline]/ensure: change from absent to present failed: More than one line in file '/root/openstack-puppet/computenode/nova/test.txt' matches pattern '#puppet'
我认为'之后'当匹配时,属性无法应用'属性已定义。
当我删除'匹配'属性,它有效,但它没有取代原始字符串('#puppet = no')。
它只是在[默认]之后添加了新行:
[default]
puppet=ok
#puppet=no
abc=123
dedd=0
[nova]
#puppet=no
所以问题仍然存在,如何删除(或替换)字符串'#puppet = no' 仅在[默认]标签上
答案 0 :(得分:1)
该文件看起来符合 ini 文件格式,因此更好的解决方案是使用 inifile 资源类型 https://forge.puppet.com/modules/puppetlabs/inifile
ini_setting { "sample setting":
ensure => present,
path => '/root/openstack-puppet/computenode/nova/test.txt',
section => 'default',
setting => 'puppet',
value => 'yes',
}
答案 1 :(得分:0)
你好,你可以试试。
include stdlib
file_line{"someline":
ensure => 'present',
after => 'default',
multiple => false,
path => '/root/openstack-puppet/computenode/nova/test.txt',
line => 'puppet=ok',
}