web-dev-qa-db-ja.com

パッカープロビジョニングスクリプトで引数を渡す方法は?

入力パラメーターをパッカープロビジョニングスクリプトに渡すのに苦労しています。私はさまざまなオプションを試しましたが、喜びはありません。

目的は、私のprovision.shがパッカーのビルド中に送信する入力パラメーターを受け入れることです。

packer build -var role = abc test.json

Jsonファイルでユーザー変数を取得できますが、プロビジョニングスクリプトを渡すことができません。入力パラメーターに基づいて決定を行わなければなりません。

私は何かを試しました

"provisioners": 
{
  "type": "Shell",
  "scripts": [
  "provision.sh {{user `role`}}"
 ]
}

しかし、パッカー検証自体は、そのようなファイル/ディレクトリエラーメッセージなしで失敗します。

誰かがこれについて私を助けることができればそれは本当の助けになるでしょう。

前もって感謝します。

10
Thayz

environment_varsオプションを使用する必要があります。ドキュメント Shell Provisioner-environment_vars を参照してください。

例:

"provisioners": [
  {
    "type": "Shell"
    "environment_vars": [
      "HOSTNAME={{user `vm_name`}}",
      "FOO=bar"
    ],
    "scripts": [
      "provision.sh"
    ],
  }
 ]
16

スクリプトが引数を使用するようにすでに構成されている場合。 inline配列ではなくscriptsとして実行するだけです。

これを行うには、スクリプトがシステムにすでに存在している必要があります。fileプロビジョナーを使用してシステムにスクリプトをコピーすることで、これを実現できます。

  "provisioners": [
    {
      "type":        "file",
      "source":      "scripts/provision.sh",
      "destination": "/tmp/provision.sh"
    },
    {
      "type": "Shell",
      "inline": [
        "chmod u+x /tmp/provision.sh",
        "/tmp/provision.sh {{user `vm_name`}}"]
    }
  ]
5
TJ Biddle