Augeas
Augeas - 創建新的 ini 部分
我在 augeas 中有一個配置文件,使用自定義鏡頭輸出數據如下。
/files/opt/../server.conf/target[1] = "general" /files/opt/../server.conf/target[1]/serverName = "XXX" /files/opt/../server.conf/target[1]/guid = "XXX0XXX" /files/opt/../server.conf/target[2] = "sslConfig" /files/opt/../server.conf/target[2]/sslKeysfilePassword = "$1$XXXXX"
這很好用 - 一些目標名稱包含冒號等,所以我需要使用目標
$$ x $$格式。 使用此語法在我的 INI 中創建新部分的正確 ins 語法是什麼?
您可以使用:
set /files/opt/.../server.conf/target[. = 'newsection'] 'newsection'
如果該部分尚不存在,它將創建它。然後,您可以使用它在此部分下添加密鑰。此程式碼是冪等的,因此可以安全地將其用於您需要密鑰的每個部分,因為它只會在該部分尚不存在時創建該部分。
作為記錄,如果您真的希望新部分出現在現有部分之前,則可以使用,例如:
ins
# Add a new target node before the sslConfig target ins target before /files/opt/.../server.conf/target[. = 'sslConfig'] # Set the target name to "newsection" by matching the node right before the "sslConfig" target set /files/opt/.../server.conf/target[following-sibling::*[1][label() = 'target'][. = 'sslConfig']] 'newsection'
請注意,與我粘貼的第一個程式碼不同,上面的程式碼*不是冪等的。*如果您將 Augeas 與 Puppet 一起使用,您可能希望添加一條
onlyif
語句以冪等方式應用此類更改。