Comando exec de fantoche com variável não executada

1

Eu tenho um módulo Puppet (sub) muito simples que deve usar o Git para clonar um repositório de um local remoto:

class wppuppet::git(
  $location = '/var/www/wp'
) {

  file { $location:
    ensure => 'directory',
    mode   => '0755',
  }

  exec { 'git-wp':
    command => 'git clone https://github.com/WordPress/WordPress ${location}',
    require => Package['git'],
  }

  Package['git']
  -> File[ $location ]
  -> Exec['git-wp']
}

Por algum motivo, ele falha constantemente com o seguinte erro:

Error: git clone https://github.com/WordPress/WordPress ${location} returned 128 instead of one of [0]
Error: /Stage[main]/Wppuppet::Git/Exec[git-wp]/returns: change from notrun to 0 failed: 
git clone https://github.com/WordPress/WordPress ${location} returned 128 instead one of [0]

Eu tentei com ${location} , bem como com $location , mas o resultado permanece o mesmo.

    
por kaiser 02.05.2014 / 01:21

1 resposta

9

Seu primeiro problema é que você tem o parâmetro command cercado de aspas simples ( ' ), que inibem a expansão das variáveis. Se você tem:

$location = "/path/to/target"

Então:

file { '$location':
  ensure => directory,
}

Tentará criar um diretório chamado " $location ", enquanto isso:

file { "$location":
  ensure => directory,
}

Na verdade, tentaria criar /path/to/target .

Com isso em mente, seu recurso exec provavelmente deve ser:

exec { 'git-wp':
  command => "git clone https://github.com/WordPress/WordPress ${location}",
  require => Package['git'],
}

Além disso, não é necessário pré-criar o diretório de destino; git fará isso por você.

Você pode executar o fantoche com --debug para ver as mensagens de erro reais geradas por git .

    
por 02.05.2014 / 02:58