首页 > 解决方案 > Packer 将现有的 ebs-volume 附加到 AMI

问题描述

我正在尝试使用打包器在我的 AMI 上附加现有的亚马逊 ebs 卷和一些预加载的信息,但我还没有找到方法。

查看打包程序文档,我很确定我正在寻找的是一个 amazon-ebssurrogate 构建器。但我没有看到任何指定卷 ID 的选项。我已经看过很多关于如何创建新卷并附加它的示例。但没有任何使用现有卷执行此操作的示例。这是我目前的打包文件:

{
    "variables": {
        "modified_by": "{{env `USER`}}",
        "aws_access_key": "{{user `aws_access_key`}}",
        "aws_secret_key": "{{user `aws_secret_key`}}",
        "aws_bamboo_ami": "{{user `aws_ubuntu_ami`}}"
    },

    "builders": [{
        "type": "amazon-ebs",
        "vpc_id": "vpc-12345",
        "subnet_id": "subnet-12345",
        "access_key": "{{user `aws_access_key`}}",
        "secret_key": "{{user `aws_secret_key`}}",
        "region": "us-east-1",
        "availability_zone": "us-east-1b",
        "source_ami": "{{user `aws_ubuntu_ami`}}",
        "instance_type": "m5.xlarge",
        "ssh_username": "ubuntu",
        "ami_name": "{{user `modified_by`}} bamboo-server-stock-ami {{timestamp}}",
        "tags": {
            "Name": "Stock-Bamboo-Ubuntu-Server-Image",
            "business_unit": "Commercial:Release",
            "service": "opensource.atlassian.com",
            "resource_owner": "{{user `modified_by`}}",
            "service_tier": "app",
            "environment": "dev"
        }
    }],

    "provisioners": [
        {
            "type": "shell", 
            "scripts": [
                "../scripts/ansible-ubuntu.sh"
            ]
        },
        {
            "type": "ansible-local",
            "playbook_dir": "../playbooks",
            "playbook_file": "../playbooks/bamboo-server.yml",
            "extra_arguments": "-vvvvv"
        }
    ]
}

任何关于如何实现这一目标的反馈或指示将不胜感激。

标签: amazon-web-servicesamazon-ec2devopspacker

解决方案


拍摄卷的快照并在ami_block_device_mappingslaunch_block_device_mappings中引用该快照。


推荐阅读