In the last blog which features creating a basic module in Puppet here and here, this is a sample init.pp I’ve created to install, tomcat,mysql,subversion,java1.5 and load a database from a dump file. Notice that JDK is installed while accepting the license by using debconf-utils package. Tested in Ubuntu hardy which is launch from Amazon EC2.
Hope this will help some of my friends in their Puppet configurations.
class hostmanager::server {
file { "/root/db.sql":
source=> "puppet://$servername/hostmanager/db.sql"
}
file { "/etc/init.d/tomcat5.5":
source=> "puppet://$servername/hostmanager/tomcat5.5"
}
$wantedpackages = ["debconf-utils", "mysql-server", "subversion"]
package { $wantedpackages: ensure => installed }
package { ["sun-java5-jdk"] :
ensure => installed,
require => Exec ["accept-license"]
}
package { ["tomcat5.5"] :
ensure => installed,
require => Package["sun-java5-jdk"]
}
exec { "informdb-load":
command => "mysql < /root/db.sql",
path =>"/bin:/usr/bin",
subscribe => File["/root/db.sql"],
subscribe => Service["mysql"],
unless => "mysql informdb -e 'quit'"
}
exec { "accept-license":
command => "echo 'sun-java5-bin shared/accepted-sun-dlj-v1-1 boolean true<br /> sun-java5-jdk shared/accepted-sun-dlj-v1-1 boolean true
sun-java5-jre shared/accepted-sun-dlj-v1-1 boolean true
sun-java5-jre sun-java5-jre/stopthread boolean true
sun-java5-jre sun-java5-jre/jcepolicy note
sun-java5-bin shared/present-sun-dlj-v1-1 note
sun-java5-jdk shared/present-sun-dlj-v1-1 note
sun-java5-jre shared/present-sun-dlj-v1-1 note
'|debconf-set-selections",
path =>"/bin:/usr/bin",
subscribe =>Package["debconf-utils"]
}
service { "tomcat5.5":
ensure => running,
hasstatus => true,
hasrestart => true,
require => Package["tomcat5.5"],
require => File["/etc/init.d/tomcat5.5"],
restart => true
}
service { "mysql":
ensure => running,
hasstatus => true,
hasrestart => true,
require => Package["mysql-server"],
restart => true
}
}
Let’s start learning more about puppet. 🙂