$ file é um atributo. Se você quiser usar o nome de uma instância da definição (um dos itens da matriz que você está usando ao declarar o aptfile), você usaria $ name.
Então, se você mantiver as coisas como elas são, você faria algo assim:
aptfile {'somename':
file => ['apt.conf', 'sources.list'],
}
No entanto, o que você provavelmente está procurando é algo assim:
define aptfile(
$base_path = '/etc/apt',
) {
file {"${base_path}/${name}":
source => "puppet:///modules/${module_name}/files/${name}",
}
}
Observe que $ name vem do título / nome do recurso (define é essencialmente um recurso personalizado de tipos) quando você o declara. O aplica-se a todos os recursos. Quando você usa uma matriz ao declarar um arquivo de recursos {['f1.txt', 'f2.txt']:} você está simplesmente condensando a declaração de múltiplos recursos de arquivo ... arquivo {'f1.txt':}, arquivo {'f2.txt':}. $ name dentro do corpo é o nome da declaração de recursos em jogo enquanto está sendo analisado / processado.
Em seguida, chame como você:
aptfile {['apt.conf', 'sources.list']: }
Eu me vejo usando apenas modelos com conteúdo = > template ('modulename / somefile.erb') mesmo se eu não precisar da funcionalidade do template apenas porque o caminho é mais são (com o mínimo de overhead adicional eu imagino). Ansioso para source = > adotando o mesmo uso de caminho mais razoável.
Marcar