Octopus Deploy and Salt Integration?

762 views
Skip to first unread message

Robert Parker

unread,
Aug 1, 2013, 9:57:42 AM8/1/13
to salt-...@googlegroups.com
My company uses NuGet and Octopus Deploy to deploy custom .NET apps and IIS config packages from TFS to Windows servers.  There are also quite a few linux servers that I manage with salt that are also part of the dev environment.  These are composed of mostly CentOS 6.4 VMs running apps like Drupal 7, MariaDB/mysql, MongoDB, and RabbitMQ.  I use salt to deploy application packages as we as configuration to these boxes.  I store most of these custom RPMs, config data, and .sls files in our TFS server and use git-tf to sync up TFS with my salt master and then blow out the data to the various dev/stage/qa/perf environments.  As of now we have two separate deployment processes for Windows and linux, Octopus Deploy and salt.

I am looking for a way to integrate the two, ideally doing something like using Octopus Deploy to push out targeted deployments to various linux servers based on their role and environment.   Since octopus does not yet have a tentacle agent for linux, I was thinking of either using an ssh library via powershell to ssh into my salt master under a restricted user to execute salt state commands or maybe use the salt web API to do something similar via powershell. I also considered trying something with NuGet under mono directly on linux but that also still feels awful kludgy though. 

Has anyone done anything similar to get a unified development deployment process for both Windows and Linux?  Any other ways to skin this cat?  Using TFS/Nuget/Octopus on the Windows side is non-negotiable, but what tools I use on the linux side is much more flexible.

Thanks

David Boucha

unread,
Aug 1, 2013, 11:59:29 PM8/1/13
to salt users list

I think your best bet is to use the salt rest api

--
You received this message because you are subscribed to the Google Groups "Salt-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to salt-users+...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

Robert Parker

unread,
Aug 9, 2013, 11:38:20 AM8/9/13
to salt-...@googlegroups.com
What about the reactor/event system?  I could write a reactor state that initiates a highstate when a tag of "deploy" is caught and the data would contain something like the application role, environment, etc of the app I wanted to deploy to target the appropriate minion to run their highstate and cause the deploy to execute.

The only trouble is, how do I get the event from the Windows Octopus box to the salt master?  I would rather not install a minion on the Octopus box.  I just need a way to initiate an event with the right tag and data on the Windows Octopus box and send it to the salt master, right?  Whats the most efficient and secure way to get external applications to send salt events?

David Boucha

unread,
Aug 9, 2013, 11:53:55 AM8/9/13
to salt users list

Would the Salt REST api work in your situation?

Robert Parker

unread,
Aug 9, 2013, 12:05:08 PM8/9/13
to salt-...@googlegroups.com
The REST API seems relatively insecure, and I don't want to have to code something from scratch (powershell?) to interact with it on the Windows side or run another service on the Salt master.  Is there any other way to generate an event on an external Windows server/application that is sent to the the salt master's reactor system OTHER than installing a minion on the Windows box and executing something like  " salt '*' event.fire_master 'mydata' 'mytag' "?  

Robert

Robert Parker

unread,
Aug 16, 2013, 6:04:27 PM8/16/13
to salt-...@googlegroups.com
How are other companies using salt for continuous deployment/integration?  Our version control system for now is TFS 2012 which does not support git natively (though I understand TFS 2013 will support git).  We deploy Windows applications and configurations through NuGet and Octopus and our developers want a way to take their code (mostly Drupal content for now) and deploy it to linux boxes from TFS using the same Octopus interface as the Windows deploy.  

Right now we are using a separate manual deploy for linux apps which involves me first syncing up my local salt file root area with TFS using a "git-tf pull" then running a state.highstate on all of my drupal (or other apps, targeted by custom grains) minions to go fetch their various features, modules, libraries, feeds and articles directories from the salt master file root via state files with file.recurse formulas.  I'd love to have them connect directly to TFS in the same way they can with git but thats not in the cards for now.  Anyway, I need a way to run these commands securely and dynamically from either a TFS build script or an Octopus deploy.  I've considered using Jenkins but theres no point when all of the code is going to remain in TFS as that is where all the developers checkin their code.  I've been taking a look at the REST API but I don't have much experience coding with a REST API I'm not sure how to bridge the gap.  How do most people interface with the REST API via a windows client?   Powershell and Invoke-RestMethod?

Thanks

Robert Parker

unread,
Aug 20, 2013, 10:16:25 AM8/20/13
to salt-...@googlegroups.com
Are there any other deployment tools such as jenkins that companies are using for version control in conjunction with salt?  Any white papers out there for continuous integration/deployment using salt?

David Boucha

unread,
Aug 20, 2013, 11:54:11 AM8/20/13
to salt users list
SaltStack is using Jenkins. 
Dave Boucha  |  Sr. Engineer


5272 South College Drive, Suite 301 | Murray, UT 84123

office 801-305-3563
da...@saltstack.com | www.saltstack.com

Evan Culver

unread,
Aug 24, 2013, 6:48:07 PM8/24/13
to salt-...@googlegroups.com
We at Wiredrive are using SaltStack + Bamboo to do CI. Bamboo builds packages when code is pushed and we have a custom HTTP API layer that we wrote that Bamboo then uses to fire off Salt commands to distribute the packages to various environments (Dev, QA, RC, Production). Bamboo takes care of tracking where builds are deployed and the state of each build package.
Reply all
Reply to author
Forward
0 new messages