As you might be aware of, I am directly comparing all my previously 18 written Cfengine 3 code snippets with Puppet 2.x/3.x. This time a Puppet manifest will run a very simple shell command, similar to the Cfengine 3 version. Writing the Puppet manifest for running a shell command exec { "start_mysql": command => "/etc/init.d/mysql […]

Author:

As you might be aware of, I am directly comparing all my previously 18 written Cfengine 3 code snippets with Puppet 2.x/3.x.
This time a Puppet manifest will run a very simple shell command, similar to the Cfengine 3 version.

Writing the Puppet manifest for running a shell command

exec { "start_mysql":
	command	=> "/etc/init.d/mysql start"

	# Here you could also use require
	# require	=> Package["mysql-server"]
	
	# Another important feature would be setting the path variable
	# path	=> "/usr/local/bin:/bin/"
}

Now let’s apply the manifest and verify the result:

/etc/init.d/mysql stop

ps aux |grep mysql
root     12366  0.0  0.0   4384   832 pts/0    S+   15:48   0:00 grep
--colour=auto mysql

puppet apply xenuser_org-006-running_shell_commands.pp
Warning: Could not retrieve fact fqdn
Notice: /Stage[main]//Exec[start_mysql]/returns: executed successfully
Notice: Finished catalog run in 2.25 seconds

ps aux |grep mysql
mysql    12611  2.7  0.9 318512 34604 ?        Ssl  15:48   0:00
/usr/sbin/mysqld
root     12833  0.0  0.0   4384   836 pts/0    S+   15:48   0:00 grep
--colour=auto mysql

There you go – MySQL is up and running.

Summary
I think that executing shell commands directly via a Puppet manifest is not very “clean”, but sometimes you have no other option. I like that the function for doing so is called “exec” and that there are a lot of cool and useful parameters for it:
http://docs.puppetlabs.com/references/stable/type.html#exec

Compared to Cfengine 3, I am missing the “comment” which will appear in the syslog. However, the code in Puppet is much shorter.
As usual, you can download today’s Puppet manifest for executing a shell command here.

Comments on this entry (no comments)

Did you like this post? You can share your opinion with us! Simply click here.

Add Your Comment

Powered by sweet Captcha


three + 4 =