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.
Think 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
-s
On Mon, Nov 5, 2012 at 9:02 AM, Jens Skott jens.skott@schibsted.se 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
service.
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? =)
Jens Skott
Tel: +46-8-5142 4396
Schibsted Centralen IT