1

Boxen を使用して開発環境をセットアップしようとしています。開始するためにプルダウンしてスクリプトを実行したいリポジトリがいくつかあります。慣習にたどり着きました。リポジトリには、実行する必要がscripts/あるスクリプトを含むディレクトリがあります。bootstrap

これは、execコマンドで可能になるようです。しかし、何を実行するかを指示するには、レポのディレクトリにアクセスする必要があります。他のスクリプトは$repo_dirまたはを使用します${boxen::config:srcdir}/${name}。私はこれらのそれぞれと、さまざまなスタイルの を試しましたがexec、役に立ちませんでした。

マニフェスト

class projects::hero {

  include ruby

  boxen::project { 'hero':
    ruby          => '2.0.0',
    source        => 'myorg/hero'
  }
  ->
  Exec {
    command       => '$repo_dir/scripts/echo'
  }
  ->
  notify {'hero is running at $srcdir':}
}

これは、指定された目標よりも単純です。スクリプトは、それらが存在するディレクトリ内で実行する必要があります。したがって、私の最初の(そしてできれば最終的な)マニフェストは、execステップに対して次のようになります。

->
exec { 'running bootstrap on hero':
  command         => '$repo_dir/scripts/bootstrap',
  cwd             => '$repo_dir/scripts'
}

スクリプト

今のところ、scripts/echo非常に簡単です:

#!/bin/bash
echo "Echo File!"
touch `date`

出力は実際には表示されないため、日付を含むファイルを作成して、この副作用を観察し、スクリプトが実際に実行されたことを確認できるようにします。

ボクセンを呼び出す

manifestsこのプロジェクトをディレクトリから直接呼び出すだけです。

Chris:manifests chris$ boxen hero

出力

Warning: Scope(Class[Boxen::Environment]): Setting up 'hero'. This can be made permanent by having 'include projects::hero' in your personal manifest.
Error: Could not find resource 'command => $repo_dir/scripts/echo' for relationship from 'Boxen::Project[hero]' on node chris.local
Error: Could not find resource 'command => $repo_dir/scripts/echo' for relationship from 'Boxen::Project[hero]' on node chris.local

${boxen::config::srcdir}代わりに試してみると、これも当てはまります。他の例を見ると、これらの変数が使用されており、機能しているようです。私はそれを間違って呼んでいますか?使用する必要がある別の変数はありますか?

4

1 に答える 1

0

ここであなたのマニフェストに2つの間違いがあることに気付きました:

->
Exec {
    command       => '$repo_dir/scripts/echo'
}
->

1 つ目は、exec の最初の文字を大文字にしたことです。puppet 言語では、これは後続のすべての exec リソース定義 ( docs ) のデフォルトを指定していることを意味します。これはリソース定義自体ではないため、リソースの順序付けを適用できず、エラーが発生します。

もう 1 つの間違いは、変数と組み合わせて単一引用符を使用することです。一重引用符で囲まれた文字列は、リテラルとして解釈されます。言い換えると、'$repo_dir'は文字どおりに$repo_dir解釈されますが、 は変数( docs"$repo_dir" )の内容として解釈されます。$repo_dir

お役に立てれば、

幸運を

于 2014-02-09T08:26:25.313 に答える