Puppet
如何使用通過 puppet 執行的 augeas 附加到同一個變數?
我有以下資源聲明來
setenv.sh
通過 puppet 中的 augeas 設置文件。augeas {'test': lens => 'Properties.lns', incl => '/tmp/setenv.sh', changes => "set CATALINA_OPTS \" $CATALINA_OPTS -XX:PermSize=192m -XX:MaxPermSize=192m \"", }
我在上面遇到了一些問題。
- 該文件基本上將配置附加到
CATALINA_OPTS
變數,這意味著當我執行 augeas 時,它會刪除該變數的所有實例並用我的更改替換它。我怎樣才能實現以下目標?CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/appdynamics/appagent/javaagent.jar" CATALINA_OPTS="$CATALINA_OPTS -XX:PermSize=192m -XX:MaxPermSize=192m"
- 由於引號,嘗試執行上述失敗。調試輸出顯示:
Debug: Augeas[test](provider=augeas): sending command 'set' with params ["/files/tmp/setenv.sh/CATALINA_OPTS", " -XX:PermSize=192m -XX:MaxPermSize=192m "] Debug: Augeas[test](provider=augeas): Put failed on one or more files, output from /augeas//error: Debug: Augeas[test](provider=augeas): /augeas/files/tmp/setenv.sh/error = put_failed Debug: Augeas[test](provider=augeas): /augeas/files/tmp/setenv.sh/error/path = /files/tmp/setenv.sh Debug: Augeas[test](provider=augeas): /augeas/files/tmp/setenv.sh/error/lens = /usr/share/augeas/lenses/dist/properties.aug:50.25-.100: Debug: Augeas[test](provider=augeas): /augeas/files/tmp/setenv.sh/error/message = Malformed child node 'CATALINA_OPTS'
如何讓更改在字元串中使用雙引號?
如果您只想將行附加到文件,請嘗試使用 file_line 資源而不是 augeas,例如:
file_line { 'line1': path => '/tmp/setenv.sh', line => 'CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/appdynamics/appagent/javaagent.jar"', } file_line { 'line2': path => '/tmp/setenv.sh', line => 'CATALINA_OPTS="$CATALINA_OPTS -XX:PermSize=192m -XX:MaxPermSize=192m"', }
為避免雙引號問題,只需單引號整個文件行。如果要將行添加到文件中的特定位置,可以使用 ‘after’ 屬性。
file_line 在“puppetlabs/stdlib”模組中可用。