Назад | Перейти на главную страницу

Команда Puppet exec с невыполненной переменной

У меня есть очень простой (под) модуль Puppet, который должен использовать Git для клонирования репозитория из удаленного места:

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']
}

Почему-то постоянно выходит из строя следующая ошибка:

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]

Я пробовал это с ${location} а также с $location, но результат остается прежним.

Ваша первая проблема в том, что у вас есть command параметр в одинарных кавычках ('), которые препятствуют расширению переменных. Если у вас есть:

$location = "/path/to/target"

Затем:

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

Попытка создать каталог под названием "$location", тогда как это:

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

На самом деле попытался бы создать /path/to/target.

Имея это в виду, ваш exec ресурс, вероятно, должен выглядеть так:

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

Кроме того, нет необходимости предварительно создавать целевой каталог; git сделаю это за вас.

Вы можете запустить марионетку с --debug чтобы увидеть фактические сообщения об ошибках, выводимые git.