2017-11-14 19 views
0

여러 AMI 빌드의 빌드/프로비저닝을 관리하는 패커 .json 파일이 있습니다. 각 AMI의 차이점은 변경되는 내용에 따라 packer에 다른 base-config.json 변수 세트를 전달하여 구성됩니다 (예 : base_config-us-west-1.json 및 base_config-us-east-2가 있음). json을 선택하고 하나를 선택하여 vpc_id, subnet_id & security_group_id 필드를 채 웁니다.packager에서 사용자 변수를 사용하여 snapshot_users 옵션을 구성하는 방법

이제 external account_id에 kms_key_id를 사용하고 새로 생성 된 스냅 샷에 대한 액세스를 키를 소유 한 account_id에 부여하는 AMI를 빌드해야합니다.

.json이 새 AMI에만 사용 된 경우 json에 "snapshot_users" : [ "{{user external_account_id}}" ]을 쉽게 추가하고 완료 할 수 있습니다. 그러나 .json에 "snapshot_users" : [ "" ]이 있어도 기본 kms_key_id가 사용되는 경우 ("kms_key_id": ""과 같이 사용됨) 오류 "기본 KMS 키로 암호화 된 스냅 샷을 공유 할 수 없음"문제로 bake가 실패합니다.

옵션을 builders 섹션에 packer 명령에 지정된 일부 기준으로 만 삽입 할 수있는 방법이 있습니까, 아니면 ec2-api-tools를 사용하여 빌드 권한을 변경하는 스크립트가 필요하지 않습니다. ami, 빵 굽기가 끝난 후 (여러 개의 완전한 .json 파일을 가지고 있으면 다른 AMI를 빌드 할 수 없습니다).

아마도 packer는 snapsho_users 배열이 비어 있거나 빈 문자열 만 포함되어있는 경우이를 인식해야하므로 무시할 수 있습니다.

답변

0

패커는 ,의 변수를 배열로 나눕니다. 따라서 다음을 정의 할 수 있습니다.

{ 
    "variables": { 
    "snap_users": "" 
    }, 
    "builders": [ 
    { 
     "type": "amazon-ebs", 
     "snapshot_users": "{{user `snap_users`}}" 
    } 
    ] 
}