【发布时间】:2016-08-13 08:29:16
【问题描述】:
我正在尝试使用 puppet 更改配置文件。
这是我要更改的 test.txt 文件:
[default]
#puppet=no
abc=123
[nova]
#puppet=no
我想将“#puppet=no”更改为“puppet=yes”仅在 [default] 选项卡上。
这是我的两个版本的 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',
}
但是当我使用“puppet apply”运行时,它仍然会出现同样的错误:
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'
我认为在定义 'match' 属性时不能应用 'after' 属性。
当我删除“匹配”属性时,它可以工作,但它没有替换原始字符串('#puppet=no')。
它只是像这样在 [default] 之后添加了新行:
[default]
puppet=ok
#puppet=no
abc=123
dedd=0
[nova]
#puppet=no
所以问题仍然存在,我怎样才能擦除(或替换)字符串 '#puppet=no' 仅在 [默认] 选项卡上??
【问题讨论】:
标签: puppet