Puppet

如何使用通過 puppet 執行的 augeas 附加到同一個變數?

  • May 11, 2015

我有以下資源聲明來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 \"",
}

我在上面遇到了一些問題。

  1. 該文件基本上將配置附加到CATALINA_OPTS變數,這意味著當我執行 augeas 時,它會刪除該變數的所有實例並用我的更改替換它。我怎樣才能實現以下目標?
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/appdynamics/appagent/javaagent.jar"
CATALINA_OPTS="$CATALINA_OPTS -XX:PermSize=192m -XX:MaxPermSize=192m"
  1. 由於引號,嘗試執行上述失敗。調試輸出顯示:
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”模組中可用。

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