2016-11-24 6 views
1

パッカーテンプレートからGCEイメージを作成しようとしています。パッカーでGCEのメタデータを指定する方法は?

ここに私がその目的のために使用している部分があります。

"builders": [ 
... 
    { 
     "type": "googlecompute", 
     "account_file": "foo", 
     "project_id": "bar", 
     "source_image": "centos-6-v20160711", 
     "zone": "us-central1-a", 
     "instance_name": "packer-building-image-centos6-baz", 
     "machine_type": "n1-standard-1", 
     "image_name": "centos6-some-box-name", 
     "ssh_username": "my_username", 
     "metadata": { 
      "startup-script-log-dest": "/opt/script.log", 
      "startup-script": "/opt/startup.sh", 
      "some_other_custom_metadata_key": "some_value" 
     }, 
     "ssh_pty": true 
    } 
], 
... 

必要なファイルも作成しました。ここにその部分があります

"provisioners": [ 
... 
    { 
     "type": "file", 
     "source": "{{user `files_path`}}/startup.sh", 
     "destination": "/opt/startup.sh" 
    }, 
... 

    { 
     "type": "shell", 
     "execute_command": "sudo sh '{{.Path}}'", 
     "inline": [ 
      ... 
      "chmod ugo+x /opt/startup.sh" 
     ] 
    } 
... 

「メタデータ」フィールドがなくてもすべて機能します。私は提供されたパラメータでイメージ/インスタンスを作成することができます。イメージからインスタンスを作成しようとすると、提供されたメタデータを見つけることができず、起動スクリプトを実行したり、ロギングファイルやその他のカスタムメタデータを設定することができません。 ここに私が使用しているソースはhttps://www.packer.io/docs/builders/googlecompute.html#metadataです。

提案が役に立ちます。メタデータタグstartup-scriptがactuallスクリプトではありませんパスを含める必要があり、事前

答えて

0

感謝。プロビジョナは、起動スクリプトが実行された後(少なくとも開始された後)に実行されます。

代わりにPackerにstartup_script_fileを使用して、起動スクリプトへのパスを指定します。

関連する問題