cookbook 'nssm', '= 1.0.0'
nssm (14) Versions 1.0.0 Follow5
Installs/Configures NSSM
cookbook 'nssm', '= 1.0.0', :supermarket
knife supermarket install nssm
knife supermarket download nssm
NSSM Cookbook
This cookbook installs the Non-Sucking Service Manager (http://nssm.cc), and exposes resources to install
and remove
Windows services.
Requirements
Chef 11.14.2 and Ruby 1.9.3 or higher.
Platform
- Windows
Cookbooks
- windows
Usage
Add recipe[nssm]
to a run list.
Quick Start
To install a Windows service:
nssm 'service name' do program 'C:\Windows\System32\java.exe' args '-jar C:/path/to/my-executable.jar' action :install end
To remove a Windows service:
nssm 'service name' do action :remove end
Using Parameters
A parameter is a hash key representing the same name as the registry entry which controls the associated functionality. So, for example, the following sets the Startup directory, I/O redirection, and File rotation for a service:
nssm 'service name' do program 'C:\Windows\System32\java.exe' args '-jar C:/path/to/my-executable.jar' params( AppDirectory: 'C:/path/to', AppStdout: 'C:/path/to/log/service.log', AppStderr: 'C:/path/to/log/error.log', AppRotateFiles: 1 ) action :install end
Arguments with Spaces
Having spaces in servicename
, program
and params
attributes is not a problem, but spaces in an argument is a different matter.
When dealing with an argument containing spaces, surround it with 3 double quotes:
nssm 'service name' do program 'C:\Program Files\Java\jdk1.7.0_67\bin\java.exe' args '-jar """C:/path/with spaces to/my-executable.jar"""' action :install end
When dealing with arguments requiring interpolation and it contains one or more arguments with spaces, then encapsulate the args
string using %()
notation and use """
around arguments with spaces:
my_path_with_spaces = 'C:/path/with spaces to/my-executable.jar' nssm 'service name' do program 'C:\Program Files\Java\jdk1.7.0_67\bin\java.exe' args %(-jar """#{my_path_with_spaces}""") action :install end
Attributes
-
node['nssm']['src']
- This can either be a URI or a local path to nssm zip. -
node['nssm']['sha256']
- SHA-256 checksum of the file. Chef will not download it if the local file matches the checksum.
Resource/Provider
Actions
- :install: Install a Windows service.
- :remove: Remove Windows service.
Attribute Parameters
- :servicename: Name attribute. The name of the Windows service.
- :program: The program to be run as a service.
- :args: String of arguments for the program. Optional
- :params: Hash of key value pairs where key represents associated registry entry. Optional
- :start: Start service after installing. Default: true
ChefSpec Matchers
The NSSM cookbook includes custom ChefSpec matchers you can use to test your own cookbooks that consume Windows cookbook LWRPs.
Example Matcher Usage
expect(chef_run).to install_nssm('service name').with( :program 'C:\Windows\System32\java.exe' :args '-jar C:/path/to/my-executable.jar' )
NSSM Cookbook Matchers
- install_nssm(servicename)
- remove_nssm(servicename)
Getting Help
- Ask specific questions on Stack Overflow.
- Report bugs and discuss potential features in Github issues.
Contributing
Please refer to CONTRIBUTING.
License
MIT - see the accompanying LICENSE file for details.
NSSM CHANGELOG
1.0.0
- Remove deprecated matchers
- Ensure nssm is being installed before service is installed
0.2.0
- Chef cache path no longer hard coded
- Chefspec matchers comply with naming convention
0.1.0
- Initial release using nssm v2.24
Foodcritic Metric
1.0.0 passed this metric
1.0.0 passed this metric