木偶,奥古斯像和物镜:未保存文件,因为未检测到差异

时间:2018-07-17 21:42:57

标签: configuration puppet augeas

我想使用人偶和Augeas编辑Java属性文件。我使用的似乎是正确的代码,但实际上这不会修改文件。

$disabledalgo = "SSLv3, RC4, MD5withRSA, DH keySize < 768, EC keySize < 224"

$incl = "/tmp/java.security"

augeas { "tlsconf":
 lens           => "Properties.lns",
 incl           => "$incl",
 changes        => "set 'jdk.tls.disabledAlgorithms' '$disabledalgo'",
 onlyif         => "get 'jdk.tls.disabledAlgorithms' != '$disabledalgo'",
}

属性文件就是这样

grep jdk.tls.disabledAlgorithms -A 1 /tmp/java.security
jdk.tls.disabledAlgorithms=TLSv1.1, SSLv3, RC4, MD5withRSA, DH keySize < 768, \
    EC keySize < 224

当我启动木偶时,我将得到此输出。

Debug: Augeas[tlsconf](provider=augeas): Opening augeas with root /, lens path , flags 64
Debug: Augeas[tlsconf](provider=augeas): Augeas version 1.4.0 is installed
Debug: Augeas[tlsconf](provider=augeas): Will attempt to save and only run if files changed
Debug: Augeas[tlsconf](provider=augeas): sending command 'set' with params ["/files/tmp/java.security/jdk.tls.disabledAlgorithms", "SSLv3, RC4, MD5withRSA, DH keySize < 768, EC keySize < 224"]
Debug: Augeas[tlsconf](provider=augeas): Skipping because no files were changed

我希望jdk.tls.disabledAlgorithms包含SSLv3, RC4, MD5withRSA, DH keySize < 768, EC keySize < 224

编辑:当值的顺序​​完全不同时,我观察到相同的问题,例如

jdk.tls.disabledAlgorithms=TLSv1, SSLv3, TLSv1.1, RC4, MD5withRSA, DH keySize < 768, \
    EC keySize < 224

即使将RC4从文件中删除,它也不会更改。

在创建问题之前,我读过augeas in puppet does not change file,但由于context参数似乎正确,因此该问题并不适用。

谢谢

1 个答案:

答案 0 :(得分:1)

Properties透镜具有一种解析多行条目的独特方法,因为它创建了没有标签的子节点,因此无法对其进行管理。

我建议您在修改密钥之前先将其删除:

augeas { "tlsconf":
 lens           => "Properties.lns",
 incl           => $incl,
 changes        => [
                     'rm jdk.tls.disabledAlgorithms',
                     "set jdk.tls.disabledAlgorithms '$disabledalgo'",
                   ],
}

它不会保留条目在文件中的位置,但是应该可以工作。还请注意,onlyif在这里不是必需的。