我有以下资源声明来通过木偶中的augeas设置setenv.sh文件。
augeas {'test': lens => 'Properties.lns', incl => '/tmp/setenv.sh', changes => "set CATALINA_OPTS \" $CATALINA_OPTS -XX:PermSize=192m -XX:MaxPermSize=192m \"", }
我遇到了上述几个问题。
该文件基本上将configuration附加到CATALINA_OPTSvariables,这意味着当我运行augeas它将删除该variables的所有实例,并用我的更改replace它。 我怎样才能做到以下几点?
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/appdynamics/appagent/javaagent.jar" CATALINA_OPTS="$CATALINA_OPTS -XX:PermSize=192m -XX:MaxPermSize=192m"
试图运行上述由于报价失败。 debugging输出显示:
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'
我怎么能改变在string中使用双引号?
如果您只想将行添加到文件中,请尝试使用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”模块中可用。
如果你想影响最后一个CATALINA_OPTSvariables,你需要指定它:
augeas {'test': lens => 'Properties.lns', incl => '/tmp/setenv.sh', changes => "set CATALINA_OPTS[last()] \" $CATALINA_OPTS -XX:PermSize=192m -XX:MaxPermSize=192m \"", }
您可以使用[2]而不是[last()] ,但至less后者确保它是文件中最后一次出现的variables。