Augeas

Augeas - 創建新的 ini 部分

  • June 20, 2012

我在 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語句以冪等方式應用此類更改。

引用自:https://serverfault.com/questions/400558