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. 🙂
Hi
If you are interested in doing deployments from either subversion or git then I have written a puppet module which provides a parser function which will checkout files on your puppetmaster and send them through to your servers. It’s called ‘vcsdeploy’ and it is here: http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff
regards
Dave
Hi Dave,
Thanks for sharing the link.
I’m currently using Ansible for my deployment.
Simple and without no fuss deployment/orchestration tool. 🙂