使用puppet的augeas功能,我想修改配置文件:
/etc/ssh/sshd_config
在没有木偶的情况下,我用Augas的"augtool"进行了实验,发现了几条似乎有效的线:
augtool> set /files/etc/ssh/sshd_config/Match[1]/Condition/User "bill","ben"
augtool> set /files/etc/ssh/sshd_config/Match/Settings/PasswordAuthentication "no"
augtool> save
虽然它看起来还可以,但我真的不明白[1]在这里有什么用途。
我试过把这些台词放进木偶:,但没有成功
augeas { "sshd_config":
context => "/files/etc/ssh/sshd_config",
changes => [
'set Match[1]/Condition/User "bill","ben"',
'set Settings/PasswordAuthentication "no"',
],
}
它给出了错误:错误:/Stage[main]/Samipermissions/Augas[shd_config]:无法评估:保存失败,请参阅调试
在调试模式下运行Puppet告诉我同样的事情。
有人知道这是怎么回事吗?
谢谢你m0dlx。你的回答让我摆脱了错误,但我想我仍然有点迷失在一系列的比赛中。使用"augtool"我可以完成以下操作:
set /files/etc/ssh/sshd_config/Match[1]/Condition/User "neil","nigel"
set /files/etc/ssh/sshd_config/Match[1]/Settings/PasswordAuthentication "no"
set /files/etc/ssh/sshd_config/Match[2]/Condition/User "yvonne","yvette"
set /files/etc/ssh/sshd_config/Match[2]/Settings/PasswordAuthentication "yes"
在配置文件中,它显示为:
Match User neil,nigel
PasswordAuthentication no
Match User yvonne,yvette
PasswordAuthentication yes
这是完美的。我把这个翻译成Puppet:
augeas { "sshd_config":
context => "/files/etc/ssh/sshd_config",
changes => [
'set Match[1]/Condition/User "neil","nigel"',
'set Match[1]/Settings/PasswordAuthentication "no"',
'set Match[2]/Condition/User "yvonne","yvette"',
'set Match[2]/Settings/PasswordAuthentication "yes"',
],
}
但配置文件中的结果却大不相同:
Match User neil
PasswordAuthentication no
Match User yvonne
PasswordAuthentication yes
虽然它看起来还可以,但我真的不明白[1]在这里有什么用途。
[1]
类似于访问数组元素,它表示如果有多个Match
条目,则要访问第一个。
'设置设置/PasswordAuthentication"否"',
您在augtool测试中错过了领先的Match/
,这可能会导致Puppet的保存失败。
如果您仍然有问题,请在问题中包含Puppet的完整调试输出。
m0dlx的回答和后来的评论让我找到了以下完美的方法:
augeas { "sshd_config":
context => "/files/etc/ssh/sshd_config",
changes => [
'set Match[1]/Condition/User "neil,nigel"',
'set Match[1]/Settings/PasswordAuthentication "no"',
'set Match[2]/Condition/User "yvonne,yvette"',
'set Match[2]/Settings/PasswordAuthentication "yes"',
],
}
谢谢你m0dlx。