puppet: Não foi possível avaliar: não foi possível recuperar informações da produção do ambiente

1

Eu vi a postagem semelhante aqui , mas isso não resolve

A intenção é copiar o script bash no nó do agente e executar.

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",
      path => '/tmp/',
      owner => 'root',
      group => 'root',
      mode  => '0744',
      notify => Exec['run_my_script'],
  }
  exec {
    'run_my_script':
     command => '/tmp/myexpect.sh',
     refreshonly => true,
  }
}

No /etc/puppet.conf

SLES11SP4-118:~ # vim /etc/puppet/puppet.conf
[main]
    dns_alt_names=puppet,puppet.dev.insiteone.com
    server=puppet.dev.insiteone.com
    modulepath=/etc/puppet/modules

Verifiquei se os diretórios estão presentes no servidor de fantoches:

SLES11SP4-118:~ # puppet config print modulepath
/etc/puppet/modules:/usr/share/puppet/modules

SLES11SP4-118:~ # ls /etc/puppet/modules/raj/
myexpect.sh

SLES11SP4-118:~ # ls /usr/share/puppet/modules/raj/
myexpect.sh

Erro (marionete aplicar /etc/puppet/manifests/site.pp --debug):

err: /Stage[main]/Base/File[my_expect_script]: Could not evaluate: Could not retrieve information from environment production source(s) puppet:///modules/raj/myexpect.sh at /etc/puppet/manifests/site.pp:31
notice: /Stage[main]/Base/Exec[run_my_script]: Dependency File[my_expect_script] has failures: true
warning: /Stage[main]/Base/Exec[run_my_script]: Skipping because of failed dependencies

Os dois primeiros executivos funcionam bem (remova yum e adicione yum)

    
por kingsmasher1 12.04.2017 / 18:14

1 resposta

1

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,
  }
}
    
por 14.04.2017 / 09:12