是否可以使用ec2_ami模块创建实例存储AMI?

时间:2016-12-30 10:21:33

标签: ansible ec2-ami

我目前正在使用Ansible 2.1.3.0,我正在尝试弄清楚如何使用ec2_ami模块创建实例存储AMI。

如果实例具有实例存储根,看起来不可能这样做 - 无论我做什么,我都会得到Instance does not have a volume attached at root (null)"

所以我想知道如何从EBS支持的实例中创建一个intance-store AMI(使用ec2_ami模块)?该文档不允许我将第一个卷映射为ami,第二个卷必须为ephemeral0。我正在浏览ec2_ami模块的源代码,似乎它对此没有支持,但我可能忽略了一些东西......

当我在源EC2实例上执行curl http://169.254.169.254/latest/meta-data/block-device-mapping/时,我得到以下内容:

ami
ephemeral0

1 个答案:

答案 0 :(得分:0)

我在2.2并使用ec2而不是ec2_ami,但这可以实现您正在寻找的......

- name: Launch instance
  ec2:
    aws_access_key: "{{ aws.access_key }}"
    aws_secret_key: "{{ aws.secret_key }}"
    instance_tags: "{{ instance.tags }}"
    count: 1
    state: started
    key_name: "{{ instance.key_name }}"
    group: "{{ instance.security_group }}"
    instance_type: "{{ instance.type }}"
    image: "{{ instance.image }}"
    wait: true
    region: "{{ aws.region }}"
    vpc_subnet_id: "{{ subnets_id }}"
    assign_public_ip: "{{ instance.public_ip }}"
    instance_profile_name: "{{ aws.iam_role }}"
    instance_initiated_shutdown_behavior: terminate
    volumes: 
      - device_name: /dev/sdb
        volume_type: ephemeral
        ephemeral: ephemeral0
  register: ec2

要特别注意instance_initiated_shutdown_behavior param,因为默认值为stop,这与基于实例店的系统不兼容,您需要将其设置为{ {1}}工作。