2017-11-14 23 views
0

いくつかの異なるAMIビルドのビルド/プロビジョニングを管理するパッカー.jsonファイルがあります。各AMIの違いは、変更する内容に応じて、異なるbase-config.json変数セットをpackerに渡すことによって設定されます(たとえば、base_config-us-west-1.jsonとbase_config-us-east-2がある場合など)。 jsonを選択し、vpc_id、subnet_id & security_group_idフィールドに値を設定します)。ユーザ変数を使用してpackerでsnapshot_usersオプションを設定する方法

外部account_idにkms_key_idを使用し、新しく作成されたスナップショットへのアクセス権をキーを所有するaccount_idに付与するAMIを構築する必要があります。

.jsonがこの新しいAMIのためだけのものだったなら、私は簡単に"snapshot_users" : [ "{{user external_account_id}}" ]をjsonに追加して、それを使って完了させることができました。ただし、.jsonに"snapshot_users" : [ "" ]があっても、デフォルトのkms_key_idが使用されている場合("kms_key_id": ""のように)、「デフォルトのKMSキーで暗号化されたスナップショットを共有できません」というエラーでbakeが失敗します。

セクションには、packerコマンドに指定された基準によってのみsnapshot_usersオプションを挿入できますか、またはec2-api-toolsを使用してビルドのアクセス許可を変更する必要があります。複数の完全な.jsonファイルを持つことで、別のAMIを構築することはできません)。

snapsho_users配列が空であるか、空の文字列のみを含むかどうかをパッカーが認識する必要があるため、おそらくパッカーのバグです。無視することができます。

答えて

0

パッカーは、,の変数を配列に分割します。だからあなたはちょうど定義することができます:

{ 
    "variables": { 
    "snap_users": "" 
    }, 
    "builders": [ 
    { 
     "type": "amazon-ebs", 
     "snapshot_users": "{{user `snap_users`}}" 
    } 
    ] 
} 
関連する問題