cookbook 'nssm', '= 1.2.0'
nssm (14) Versions 1.2.0 Follow5
Installs/Configures NSSM
cookbook 'nssm', '= 1.2.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 or higher
Platform
- Windows
Cookbooks
- windows
Usage
Add recipe[nssm] to 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.2.0
- Use new install_location attribute everywhere
- Don't try to install nssm if it's already there
1.1.0
- Add an attribute for the install location of nssm.exe
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.2.0 passed this metric
1.2.0 passed this metric