Puppet zum installieren von PHPStorm:

class dev-tools::phpstorm ($version = "3.0", $revision = "111.19", $eap = false) {

        exec { "download-phpstorm":
                unless => "/usr/bin/test -d /opt/PhpStorm-${revision}",
                cwd => "/tmp",
                command => $eap ? {
                        true  => "/usr/bin/wget http://download.jetbrains.com/webide/PhpStorm-EAP-${revision}.tar.gz",
                        false => "/usr/bin/wget http://download.jetbrains.com/webide/PhpStorm-${revision}.tar.gz",
                },
                creates => "/tmp/PhpStorm-${version}.tar.gz"
        }

        exec { "untar-phpstorm":
                cwd => "/opt",
                command => $eap ? {
                        true  => "/bin/tar xvfz /tmp/PhpStorm-EAP-${revision}.tar.gz",
                        false => "/bin/tar xvfz /tmp/PhpStorm-${revision}.tar.gz",
                },
                creates => "/opt/PhpStorm-${revision}",
                require => [Exec["download-phpstorm"]]
        }

        file { "/opt/PhpStorm-${revision}/bin/phpstorm.vmoptions":
                source => "puppet:///modules/dev-tools/phpstorm/phpstorm.vmoptions"
        }

        file { "/usr/share/applications/phpstorm.desktop":
                content => template("dev-tools/phpstorm.desktop.erb")
        }
}

Die Puppet-Klasse installiert PHPStorm in das Verzeichnis **/opt
**Über Parameter kann die Versionsnummer angegeben werden. Die Verwendung von Parametern wird im puppet Handbuch unter http://docs.puppetlabs.com/learning/modules2.html erklärt.

Das Puppet setzt zusätzlich die Default-Java VM Einstellungen von PHPStorm und erhöht den zur Verfügung stehenden Arbeitsspeicher. 

-Xms32m
-Xmx1024m
-XX:MaxPermSize=150m
-ea
-Didea.platform.prefix=PhpStorm

Zum automatischen erstellen von Menü-Einträgen für die neue PHPStorm Version habe ich das Template “phpstorm.desktop.erb” angelegt. Dort wird immer der aktuelle Pfad aktualisiert.

[Desktop Entry]
Encoding=UTF-8
Exec=export AWT_TOOLKIT=MLtoolkit; /bin/sh /opt/PhpStorm-<%= revision %>/bin/phpstorm.sh
Icon=/opt/PhpStorm-<%= revision %>/bin/webide.png
Icon[de_DE]=/opt/PhpStorm-<%= revision %>/bin/webide.png
Name=PhpStorm
Name[de_DE]=PhpStorm
Type=Application
Categories=Development;Application

Die Datei habe ich in ein eigenes dev-tools Modul gepackt. Die Struktur sieht wie folgt aus:

modules
└── dev-tools
    ├── files
    │   └── phpstorm.vmoptions
    ├── templates
    │   └── phpstorm.desktop.erb
    └── manifests
        ├── init.pp
        └── phpstorm.pp