23

vagrant と puppet を使用して、開発環境用の仮想マシンをセットアップしています。.pp ファイルにいくつかの環境変数を単純に設定したいと思います。Ubuntu 64 ビット用の仮想ボックスと vagrant ベース ボックスを使用します。

私は現在これを持っています。

$bar = 'bar'

class foobar {
   exec { 'foobar':
     command => "export Foo=${bar}",
   }
}

しかし、プロビジョニング時にエラーが発生します:コマンド「エクスポート」が見つかりませんでした。

これは、execタイプのある種のrequireまたはパスが欠けているので、十分に単純であるように思われますか? ドキュメントに、環境変数を設定するための環境オプションがあることに気付きました。それを使用する必要がありますか?

4

9 に答える 9

22

パペットの実行で使用可能な変数のみが必要な場合は、何が問題になっていますか:

Exec { environment => [ "foo=$bar" ] }

?

于 2013-08-24T10:33:38.370 に答える
0

これは古い質問であることは知っていますが、PS1プロンプト値を設定して、次の.bashrcようにファイルに追加することができました。

$PS1 = '\[\e[0;31m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \$ '

そしてクラス内:

exec {"vagrant-prompt":
  unless =>  "grep -F 'export PS1=\"${PS1}\"' ${HOME_DIR}/.bashrc",
  command => "echo 'export PS1=\"${PS1}\"' >> ${HOME_DIR}/.bashrc",
  user => "${APP_USER}",
}

は、固定文字列として解釈します-Fgrepそうしないと、ファイルが見つからず、.bashrcファイルに追加され続けます。

于 2015-06-09T17:50:10.807 に答える
0

ドキュメントをチェックしてください https://puppet.com/docs/puppet/5.5/types/exec.html

class envcheck {

  file { '/tmp/test':
    ensure => file,
  }

  exec { 'foobar':
    command     => 'echo $bar >> /tmp/test',
    environment => ['bar=foo'],
    path        => ['/bin/'],
  }
}
  1. シェルでエコーが発生するため、空のファイルを作成します。パペットがコマンドを実行しているのは、私たちが見ているものではありません。
  2. 環境変数 bar を foo に設定します。
  3. echo バイナリのパスを設定します。これは通常、システム コマンドには必要ありませんが、知っておくと便利です。
于 2021-05-08T18:10:09.580 に答える