Version information
This version is compatible with:
Start using this module
Add this module to your Puppetfile:
mod 'kenmaglio-winsw', '1.1.1'
Learn more about managing modules with a PuppetfileDocumentation
winsw
Table of Contents
- Important
- Description
- Setup - The basics of getting started with winsw
- Usage - Configuration options and additional functionality
- Reference - An under-the-hood peek at what the module is doing and how
- Limitations - OS compatibility, etc.
- Development - Guide for contributing to the module
Important
If you change the $service_id value, after you have installed the service, and you do not ensure abscent first, you will cause errors. The reason is because the code which tried to uninstall, will already have been effected.
Tested on Windows 10 and Windows Server 2012 R2. There shouldn't be any reason this wouldn't work on
Description
This module encapsulates functionality of the WinSW service application wrapper. The development of that project is accredited: https://github.com/kohsuke/winsw
This module attempts to allow any executable with any arguments to be wrapped in a Windows Service. This will require files to be placed on the system in a managed path: EXE, XML, EXE.Config
Derived Types:
- install
- service
Install will create the folders in $install_path, drop the files in that folder named $serviceid[.exe|.xml]. Then after those are successfull, the defined type will install the service into the Service Manager.
Service will ensure the service is running.
Beginning with winsw
By default, classifying a node with this class will not get you very far. It will test that the module will work and will run an instance of powershell.exe as a service.
You can take two approaches:
- Use the Defined Types under Usage in your own module. They will automatically be created once you add this module ot your puppet file.
- You can build your own class that manages multiple services this way, if you so choose.
- You can classify a node with the winsw class, and use hiera to override the local variables.
Usage
Usage Pattern for Installing and Configuring Title = name of executable / service
Optional Parameters
Usage Pattern for Uninstalling
Additional Configuration Parameters
To Specify Service Account to run service as
To Run Interactively (not service account cannot be used - only local system)
Reference
The module includes embedded the winsw executable file, and provides a template for the configuration XML. It attepts to create whatever directories you need specified by $install_path Then drops the needed files in that path as $service_name(.exe|.xml)
Utilizing exec's against powershell this module will then manage the behavior flow of winsw commands.
Known Side-Effects
On initial install, the output will show not only the Exec[install_serviceid], but also the Exec[rebuild_service_serviceid]. This is expected as the config xml file is placed, which fires the notify on Exec[rebuild_service_serviceid]. This notify is needed if a config xml file change happens. The service must be stopped, uninstalled, installed and started to take effect.
Limitations
Limitations for current release are really more around parameters which the native WinSW executable can take, which have not been implemented here yet. Right now only the basics to get an executable running, with arguments and environment variables are possible.
More will be added in later revisions.
If you need one specifically please open an issue here on github, and I will try to add that functionality quickly for you.
See: https://github.com/kohsuke/winsw
Development
Please fork and submit pull requests
To setup local environment:
You can include --noop if you don't want to apply, however service actions will fail as it won't actually install.
If you run an elevated command prompt, you can navigate to the service executable directory. Then you can use these to test states of your service and the module. (note MyService is your servie name)
Versiom 1.1.1
Published: 2016.12.07
- Utilizes Toolbox Module
Versoin 1.1.0
Published: 2016.12.07
Adds Enhancements
- Implements RunAs Capabilities
- Implements Interactive
- Refactors Service Defined Type to use Native Service Resource
- Refactors Service_ID to be Title of Resource for Install and Service Defined Types
Resolves Bugs
- Variable Namespacing for EPP
Dependencies
- puppetlabs/powershell (>=2.1.0)
- kenmaglio/toolbox (>=1.0.3)
MIT License Copyright (c) 2016 kenmaglio Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.