Thanks for getting in touch! While multiple Tentacles would work, it doesn't sound necessary. I think the easiest solution would be to take advantage of roles. You can use the same machine, but with multiple roles which can each be targeted for specific steps. Combining this with variables scoped to these specific roles, and I think that may be a good option.
Let me know what you think and if you have any additional questions going forward. :)
But the same step needs to be run for 2 different roles, based on how I want to deploy it. So I'm not sure how that would work...I need to be able to deploy it to a specific target only to be determined at the time of deployment, and I won't want to have 2 steps that are identical. On the deployment page, there's an option to only deploy to specific machines or environments but not to only deploy to specific roles.
Thanks for getting back to me, and I'm terribly sorry about the delay in replying! You're correct that you can't limit which machines will be deployed to by role at deployment time. You can only include or exclude specific machines individually. This feature idea may be a good one to suggest up on our UserVoice site. This is the main avenue we take when considering new features/enhancements for future releases. https://octopusdeploy.uservoice.com/
That being said, there may be a way around it. You could take advantage of the channels feature (introduced in Octopus 3.2) which would allow you to scope your steps to an individual channel. When you create your release, you select the appropriate channel for it, and that would determine which steps are run. Would that be a possible solution for you? You can refer to our comprehensive documentation around the channel feature as well if needed. https://octopus.com/docs/deploying-applications/projects/channels
I hope this helps! Don't hesitate to reach out if you have any further questions. :)
Isn't this what environments are for? You can have the same machine in both the stage and prod environments, and scope the variables to those environments. Then, depending on which "mode" you want to deploy it in, you deploy to that environment