Hi, I'm trying to get ReadyRoll and Octopus working together and I've got some questions. Let me preface by saying that I have a fully working Octopus environment where we are using it to deploy web apps and windows services for about 50 projects with the builds occurring in TFS and pushing packages to the Octopus repository, so that side of things is working well and I have a decent working knowledge of Octopus.
I've gone through the process of understanding ReadyRoll from the project standpoint and I've successfully got my TFS build outputting and publishing the packages for both the web app and the database project to Octopus. I can see the package in Octopus, so everything up to there is fine.
My questions relate to what type of step do I need to be using for the database portion? Do I use the standard 'Deploy a NuGet package' step and then just uncheck all of the options for transforms and IIS stuff? I want to integrate a step for the db deployment into an existing project that has steps present for the web side of things.
Does the Tentacle agent need to be installed on the db server? Your example shows setting a variable for the DatabaseServer, so it seems that it will go to that server to deploy and doesn't need a Tentacle, similar to FTP steps? If it was always running on the agent on the db server and so the variable would always be 'localhost' then it seems pointless to need a variable. That part is confusing me.
The Octopus site has a blog post about doing this with a tool other than ReadyRoll, but it must be older because the screenshot of the step that is used does not seem to exist for me (I'm using 1.6.2 of Octopus).
If it's better for me to post this to the Octopus folks I can, but I thought I would start here first. Thanks in advance for any insight you can give me, I'm going to keep fiddling in the meantime.
That is correct, you use a standard “Deploy a NuGet package” step to deploy the ReadyRoll database deployment packages and uncheck the IIS related options. Sorry that the tutorial is not very clear about this, I will take a note to revise this for Octopus 1.6.
The Tentacle agent can indeed be installed on each SQL Server machine and the DatabaseServer variable set to “localhost” for all environments (or “localhost\MYINSTANCE” if you have a named instance). This is useful in the scenario where environment-specific Windows credentials need to be used during database deployment (ie. in the tentacle service “Run as” settings).
However, most of our customers opt instead to install the tentacle on a single machine and then set the DatabaseServer variable for each environment as appropriate, eg. devdbserver, stgdbserver, proddbserver, etc. This approach has the advantage of keeping the number of Tentacle agents to a minimum: since SQL Server inherently supports remote query execution, for most cases there is no real advantage to using a local tentacle agent on a SQL Server machine.
Both approaches are valid, but it really depends on the individual needs of the deployment environment. I hope this goes some way to clarifying the ReadyRoll/Octopus integration setup.
This question has received the maximum number of answers.