Recentemente encontrei o mesmo problema ou tive pensamentos semelhantes. Corri para essa questão enquanto trabalhava com outra coisa.
Então, eu queria executar certas configurações de fantoches com base no tipo de servidor para o qual ele foi configurado. Deve ser bastante simples fazer algo semelhante, mas usar atributos para executar tarefas diferentes, dependendo da situação.
Eu configurei para que os servidores fossem descritos normalmente no Capistrano, como:
role :web, "mywebhost" #attributes to the server can be added at the end
Em seguida, criei uma tarefa para fazer o bootstrap de todos os servidores para garantir que eles tivessem fantoches. Depois disso, adicionei comandos para executar após a tarefa de autoinicialização e em qual função. Essas condições podem aproveitar os atributos.
after "bootstrap", :roles=>[:web] do
# here we place code specific for configuring the web role using puppet
try_sudo("puppet apply config/puppet/web.pp")
end
Você pode ver o link a seguir para se inspirar na execução de tarefas com base em atributos: puxando strings de fantoches com capistrano
Este exemplo é para fantoches, mas você pode simplesmente desconsiderar o boneco e criar a estrutura capistrano que você quer.
Eu tenho um repo de teste configurado no github descrevendo isso. Eu ainda tenho que adicionar o readme, mas você deve encontrar o que você precisa aqui: bonecos-de-barraca