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