Поскольку Capfile - это просто Ruby, вы можете использовать код Ruby, чтобы делать то, что вы хотите.Например, если ваш файл hosts.cap выглядит следующим образом:
db-master.example.com
db-slave1.example.com
, вы получите его в массив с таким кодом Ruby:
File.read('hosts.cap').strip.split
и передадите его role
вызовите правильно, используйте оператор splat (*):
role :db_hosts, *File.read('hosts.cap').strip.split
, хотя я бы порекомендовал поместить его в две части, потому что он понятнее:
machines = File.read('hosts.cap').strip.split
role :db_hosts, *machines