Tentei escrever o código do puppet na mão e, depois, acabei tentando copiar e colar para ver se havia algo de errado, mas a linha do "file_line" é sempre adicionada não importa o caso, talvez o grep não esteja retornando corretamente (apesar do mesmo estar ok na pasta bin), segue mensagem recebida:
vagrant@precise32:~$ sudo puppet apply /vagrant/manifests/web.pp
warning: Could not retrieve fact fqdn
notice: /Stage[main]//Exec[apt-update]/returns: executed successfully
notice: /Stage[main]//File_line[production]/Exec[/bin/echo 'JAVA_OPTS="$JAVA_OPTS -Dbr.com.caelum.vraptor.environment=production"' >> '/etc/default/tomcat7']/returns: executed successfully
notice: /Stage[main]//Service[tomcat7]: Triggered 'refresh' from 1 events
notice: Finished catalog run in 11.16 seconds
Parte do código utilizado:
file_line { "production":
file => "/etc/default/tomcat7",
line => "JAVA_OPTS=\"\$JAVA_OPTS -Dbr.com.caelum.vraptor.environment=production\"",
require => Package["tomcat7"],
notify => Service["tomcat7"]
}
define file_line($file, $line) {
exec { "/bin/echo '$line' >> '$file'":
unless => "/bin/grep -qfx '$(line) '$(file)'"
}
}