2017-06-21 3 views
2

私のようなパッカーJSONを持っています、ファイルに変数が置換されますんPackerのファイルプロビジョナにユーザー変数を使用する方法は?

{ 
    "var" : "{{ user `myvariablename`}}" 
} 

ファイルのみ後にシェルプロビジョニングとsedの交換です:

"builders": [{...}], 
"provisioners": [ 
      { 
       "type": "file", 
       "source": "packer/myfile.json", 
       "destination": "/tmp/myfile.json" 
      } 
    ], 
"variables": { 
     "myvariablename": "value" 
} 

とmyfile.jsonですオプションはここにありますか?

パッカーバージョンの使用0.12.0

答えて

-1

ユーザー変数は、まずテンプレート内の変数セクションで定義する必要があります。ユーザー変数をデフォルトの空の文字列にしたい場合でも、それを定義する必要があります。この説明は、テンプレートの変数を使用して変更できるものを新入者が理解するのにかかる時間を短縮するのに役立ちます。

変数セクションは、ユーザー変数名のデフォルト値へのキー/値のマッピングです。デフォルト値は空文字列です。例を以下に示します。

{ 
"variables": { 
"aws_access_key": "", 
"aws_secret_key": "" 
}, 

"builders": [{ 
"type": "amazon-ebs", 
"access_key": "{{user `aws_access_key`}}", 
"secret_key": "{{user `aws_secret_key`}}", 
// ... 
}] 
} 

check this link for more information

+0

おかげで好意を使用することができ、しかし、問題は、Packerによって使用される外部ファイル(ファイルプロビジョナ)で変数を使用する方法に関する詳細です。 – MarMan

2

あなたは環境変数として渡す必要があり、例:

"provisioners": [ 
    { 
     "type": "shell" 
     "environment_vars": [ 
     "http_proxy={{user `proxy`}}", 
     ], 
     "scripts": [ 
     "some_script.sh" 
     ], 
    } 
    ], 
    "variables": { 
    "proxy": null 
    } 

、スクリプトでは、あなたが$http_proxy

+0

environment_vars wor ksはシェルプロビジョナのためだけであり、ファイルのためのものではありません。 https://www.packer.io/docs/provisioners/file.html – MarMan

関連する問題