I must give credit to CodeKing and his article of how to use Octopus Deploy with AWS. His script provides the steps necessary to query the Octopus server for the latest project release and to initiate the deployment. Here is his post:
http://www.codeproject.com/Articles/719801/AWS-Deployment-With-Octopus-Deploy
The process I will demonstrate will rely on Chef to register the Octopus Tentacle as well as initiating the deployment of the latest project release to the server. I'm not going to go into details about using Chef, if you need help using Chef please refer to their documentation at: https://docs.chef.io/
The recipe assumes the following:
- Amazon's AWS CLI is installed on the server (this can be done using another chef recipe)
- The server has access to S3 to download files to install Octopus Tentacle
- The Octopus project is configured to increment version numbers
- An Octopus account with an API key that has proper permissions to deploy the release.
- Download the Octopus Tentacle installer.
- Install Octopus Tentacle
- Register the Octopus Tentacle to the Octopus Server
- Deploy the latest project release from Octopus Server
1. Download the Octopus Tentacle installation from S3
It's not necessary to put the installer file on S3, but I prefer this approach as I know the file will always be available, vs relying on a web link that could potentially change.Modify this script to use your S3 bucket
2. Install Octopus Tentacle
With the installer downloaded, we must now install Octopus on the server.
3. Register the Octopus Tentacle to the Octopus Server
The next step is to configure and register the Octopus tentacle to the Octopus server. This will register the tentacle using the server hostname, which is later used for the deployment process.
Modify this script to use your Octopus server, API key, and role
4. Deploy the latest release
The final step is to query the Octopus server for the latest release of the specified project and then make an API call to the Octopus server to initiate a deployment to the server.
Modify this script to use your Octopus server, Project, and API key,
Running Chef - putting it all together
The above steps can be placed into a single Chef recipe or kept into separate recipes and run individually. I prefer to put these in a single recipe and call it via the Chef run-list.
I currently use Chef-Solo and therefore make a call like this, specifiying the runlist as well as the environment.
chef-solo -c c:/chef/solo.rb -j c:/chef/runlist.json -E development -L c:/chef/log.log -l info