Obrigado a Tim Stoop (que apontou no comentário). Portanto, sempre que você adicionar um arquivo em algum local e adicionar o código-fonte, será necessário colocá-lo no diretório "arquivos", e, mais importante, o diretório de arquivos não deverá ser nomeado nas fontes.
Como minha fonte é: source => "puppet:///modules/raj/myexpect.sh"
, então o arquivo real precisa estar em /etc/puppet/modules/raj/files
Isso é mencionado no documento do boneco: link
(Eu tinha perdido completamente até que @Tim Stoop apontasse acima nos comentários.
Em seguida, o caminho no módulo files
estava incorreto. Você precisa colocar o caminho inteiro, incluindo o nome do arquivo lá. Usando ensure => 'present'
, o fantoche garante que o arquivo esteja presente, se não for criado.
Por isso: caminho = > /tmp/myexpect.sh
está correto.
O manifesto inteiro correto está abaixo:
SLES11SP4-118:~ # cat /etc/puppet/manifests/site.pp
node default {
include base
}
node 'sles11sp4-170.dev.insiteone.com' {
class {'base':}
}
class base {
exec { "remove yum":
command => 'zypper removerepo 1',
logoutput => 'true',
path => '/usr/bin/'
}
exec { "add yum":
command => 'zypper addrepo -f http://10.156.14.121/repo/RPMS/QA/ QA',
logoutput => 'true',
path => '/usr/bin/'
}
file {
'my_expect_script':
ensure => 'present',
source => "puppet:///modules/raj/myexpect.sh", # Make sure file is in /etc/puppet/modules/raj/files
path => '/tmp/myexpect.sh',
owner => 'root',
group => 'root',
mode => '0744',
notify => Exec['run_my_script'],
}
exec {
'run_my_script':
command => '/tmp/myexpect.sh',
refreshonly => true,
}
}