[chef] Re: RE: Re: Re: power shell and chef


Chronological Thread 
  • From: Paul Morton - BIA < >
  • To: " " < >
  • Subject: [chef] Re: RE: Re: Re: power shell and chef
  • Date: Wed, 22 Feb 2012 13:13:05 -0800
  • Accept-language: en-US
  • Acceptlanguage: en-US

I wish that I had the gumption to figure out how to hack the core of chef, however I am a coward. So instead I use a windows_service lwrp…

Check it out. Make installing, configuring and controller windows services super easy. It too uses the win32_service gem.




On Feb 22, 2012, at 1:05 PM, David Leaver wrote:

I’ve used the win32 service rubygem like so:
 
gem install win32-service --no-rdoc --no-ri --verbose --platform x86-mswin32
 
 
powershell "Install Service: MyService" do
                code <<-EOH
                                c:
                                cd /WindowsServices/MyService /
                                ./Install.bat
                                sc.exe failure MyService reset= 0 actions= restart/60
                EOH
                not_if {Win32::Service.exists?("MyService")}
end
 
Which runs the powershell given if the service doesn’t exist.
 
Cheers,
Dave.
 
From: Sascha Bates [mailto:  
Sent: Thursday, 23 February 2012 3:39 a.m.
To:  " style="color: blue; text-decoration: underline; ">
Subject: [chef] Re: Re: power shell and chef
 

Thanks, this helps.

Some samples with the "windows_batch" resources:

 not_if { Registry.key_exists?('HKLM\\SOFTWARE\\Microsoft\\<your registry entry> ') }
 not_if { File.exists?("C:\\etc\\<something.txt>") }

I had problems with the Services bit , but with powershell you can get it to work using a Here Doc to get over a quotes within quotes problem . Eg, when you have to check for databases in sql server using "EXEC sp_databases" , you might have to add this in a here doc and use that in your only_if or not_if . What doesn't work is not_if " sqlcmd -S Localhost "Exec sp_databases" | grep <instance name> " but using the here doc in here would work well.

Also with powershell , in the not_if or only_if , you'll have to use "powershell.exe" -- for eg , not_if "powershell.exe <your command>" but a normal windows command line would work well.

Hope that helps.

 

Can anyone point me to some example chef code using not_if/only_if on windows/powershell blocks?  I have some ideas but I'm not sure they're very good.  I need to set up a service and make sure I don't kick off a reboot or anything crazy every time chef runs. 
 
Learning powershell syntax at the same time I'm wrangling chef for windows is not advised, but really, who am I kidding?  When would I have bothered otherwise?
 
Sascha
 
 




Archive powered by MHonArc 2.6.16.

§