web-dev-qa-db-ja.com

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" 

これはうまく機能します-一部のターゲット名にはコロンなどが含まれているため、target [x]形式を使用する必要があります。

この構文を使用して私のINIに新しいセクションを作成するための正しいins構文は何ですか?

1
Tim Brigham

次を使用できます。

set /files/opt/.../server.conf/target[. = 'newsection'] 'newsection'

セクションがまだ存在しない場合は、セクションが作成されます。その後、それを使用して、このセクションの下にキーを追加できます。このコードはべき等であるため、キーが必要なすべてのセクションで安全に使用できます。セクションがまだ存在しない場合にのみ作成されるためです。

記録として、新しいセクションを既存のセクションの前に表示したい場合は、couldinsを使用します。例:

# 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'

上記のコードは、最初に貼り付けたコードとは異なり、notべき等であることに注意してください。 AugeasをPuppetで使用する場合は、onlyifステートメントを追加して、そのような変更をべき等な方法で適用することをお勧めします。

3
ℝaphink