working on a chef recipe and I need to format a drive before mounting it and I did it like this:
execute "Format drive" do
command "mkfs.ext4 /dev/xvde1"
end
and then I used another command to mount it in /var/log/ All worked fine but now the problem is that when I run the recipe a second time the mkfs.ext4 fails because the drive is mounted.. and it should fail :)
My question is how can I run this mkfs.ext4 command on the node only the first time and not every time after that?
Or how can I force chef to not stop when this particular command fails (not and elegant solution though)
Or is there another ruby command that is used for specifically formatting drives? (longshot)
A a workaround solution I found is to add the format command at the end of this file /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.10.4/lib/chef/knife/bootstrap that I've notice runs only when creating the server for the first time but I would like to do this the proper way.
You can add a not_if statement to do a check and see if it has already been mounted so it won't attempt to do it again. Something like this:
execute "Format drive" do
command "mkfs.ext4 /dev/xvde1"
not_if "grep xvde1 /proc/mounts"
end
There is also only_if for cases when you want to do something only if some other criteria has been met.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With