Acabei de descobrir o problema. Primeiro, em vez de 'file' use 'directory' no parâmetro ensure . Segundo, torne o processo de cópia recursivo para incluir todas as subpastas.
file {
'/home/vagrant/scripts':
ensure => 'directory',
source => 'puppet:///modules/ycsb/scripts',
recurse => 'remote',
path => '/home/vagrant/YCSB/scripts',
owner => 'vagrant',
group => 'vagrant',
mode => '0744', # Use 0700 if it is sensitive
}