TL;DR - Chef will probably do nothing on the second run.
Actual answer -
Chef will parse the recipe, compiling a “resource collection” that
looks something like:
[ ‘package[apache]’, ‘file[yourconfig]’, ‘service[apache]’ ]
Then, it will process the resources individually, in the order
generated by the recipe. Each resource will independently check to see
if it needs to take action to fix its subject through a provider,
potentially changing the system as it goes.
The package resource will consult the package manager to test if it
needs to install apache.
if [rpm -qa | grep apache] of
if [dpkg -L | grep apache]
under the hood.
The file resource (and its cousins template, remote_file,
cookbook_file, etc) will take checksums in memory and against the file
on disk. If they differ, the one in memory wins and gets written,
leaving you a diff in your output. (logs, why-run, etc)
‘service[apache]’ will check to see if apache is running and fix it if
it isn’t, etc.
hope that helps
On Mon, Nov 5, 2012 at 9:02 AM, Jens Skott firstname.lastname@example.org wrote:
I have a question about RPM:s and config files with chef.
Im sorry if im writing a question I should find the answer to on the
site but have not found any information regarding it or I could just
have missed it.
The question I have is. If I write a recipe that installs a RPM
package trough yum, then deploys config files in specific directories
and then restarts the enables and starts the service. Then have a
dependency on apache recipe and does and action [:restart] on httpd
What does the chef recipe actualy do the second time chef runs? Does
it reinstalls the RPM and config files then restarts the httpd
service? Or does it do a diff to see if its the same package and skip
the installation and configfiles but restarts httpd?
Anyone who can enlighten me or point me to a RTFM page? =)
Tel: +46-8-5142 4396
Schibsted Centralen IT