Amazon ec2 如何使用ansible安装所有临时驱动器

Amazon ec2 如何使用ansible安装所有临时驱动器,amazon-ec2,automation,ansible,ansible-playbook,Amazon Ec2,Automation,Ansible,Ansible Playbook,我希望使用ansible启动ec2实例,然后将所有可用的临时驱动器装载到装载点 我检查了,但没有办法激活所有可用的临时驱动器,然后挂载这些驱动器 如果我想这样做,那么我需要编写特定于实例类型的任务,如下所示 - ec2: key_name: mykey group: webserver instance_type: c3.xlarge image: ami-123456 wait: yes wait_timeout: 500 volumes: - device_name: /dev/xvda

我希望使用ansible启动ec2实例,然后将所有可用的临时驱动器装载到装载点

我检查了,但没有办法激活所有可用的临时驱动器,然后挂载这些驱动器

如果我想这样做,那么我需要编写特定于实例类型的任务,如下所示

- ec2:
key_name: mykey
group: webserver
instance_type: c3.xlarge
image: ami-123456
wait: yes
wait_timeout: 500
volumes:
  - device_name: /dev/xvda
    volume_type: standard
    volume_size: 100
  - device_name: /dev/xvdb
    volume_type: ephemeral
    volume_size: 40
  - device_name: /dev/xvd
    volume_type: ephemeral
    volume_size: 40
vpc_subnet_id: subnet-29e63245
assign_public_ip: yes
exact_count: 1
有没有办法参数化下面的部分

volumes:
  - device_name: /dev/xvda
    volume_type: standard
    volume_size: 100
  - device_name: /dev/xvdb
    volume_type: ephemeral
    volume_size: 40
  - device_name: /dev/xvd
    volume_type: ephemeral
    volume_size: 40
有人知道怎么做吗


感谢

我的解决方案是为每个实例提供一个预定义的卷类型列表,通常在
group\u vars/all
中,但可以在任何其他地方,只要您的角色可以看到它。比如:

one_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
two_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
  - { device_name: /dev/sdc, ephemeral: ephemeral1 }
three_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
  - { device_name: /dev/sdc, ephemeral: ephemeral1 }
  - { device_name: /dev/sdd, ephemeral: ephemeral2 }
four_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
  - { device_name: /dev/sdc, ephemeral: ephemeral1 }
  - { device_name: /dev/sdd, ephemeral: ephemeral2 }
  - { device_name: /dev/sde, ephemeral: ephemeral3 }


ephemeral_volumes:
  c1.medium: "{{ one_ephemeral }}"
  c1.xlarge: "{{ four_ephemeral }}"
  c3.large: "{{ two_ephemeral }}"
  c3.xlarge: "{{ two_ephemeral }}"
  c3.2xlarge: "{{ two_ephemeral }}"
  c3.4xlarge: "{{ two_ephemeral }}"
  c3.8xlarge: "{{ two_ephemeral }}"
  i2.xlarge: "{{ one_ephemeral }}"
  i2.2xlarge: "{{ two_ephemeral }}"
  i2.4xlarge: "{{ four_ephemeral }}"
  m1.small: "{{ one_ephemeral }}"
  m1.medium: "{{ one_ephemeral }}"
  m1.large: "{{ two_ephemeral }}"
  m1.xlarge: "{{ four_ephemeral }}"
  m2.xlarge: "{{ one_ephemeral }}"
  m2.2xlarge: "{{ one_ephemeral }}"
  m2.4xlarge: "{{ two_ephemeral }}"
  m3.medium: "{{ one_ephemeral }}"
  m3.large: "{{ one_ephemeral }}"
  m3.xlarge: "{{ two_ephemeral }}"
  m3.2xlarge: "{{ two_ephemeral }}"
  r3.large: "{{ one_ephemeral }}"
  r3.xlarge: "{{ one_ephemeral }}"
  r3.2xlarge: "{{ one_ephemeral }}"
  r3.4xlarge: "{{ one_ephemeral }}"
  r3.8xlarge: "{{ two_ephemeral }}"
    volumes: "{{ instance_conf.volumes + (ephemeral_volumes[instance_conf.instance_type]|default([])) }}"
然后,在调用ec2或ec2_lc模块时,我将其连接到卷列表中-类似于:

one_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
two_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
  - { device_name: /dev/sdc, ephemeral: ephemeral1 }
three_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
  - { device_name: /dev/sdc, ephemeral: ephemeral1 }
  - { device_name: /dev/sdd, ephemeral: ephemeral2 }
four_ephemeral:
  - { device_name: /dev/sdb, ephemeral: ephemeral0 }
  - { device_name: /dev/sdc, ephemeral: ephemeral1 }
  - { device_name: /dev/sdd, ephemeral: ephemeral2 }
  - { device_name: /dev/sde, ephemeral: ephemeral3 }


ephemeral_volumes:
  c1.medium: "{{ one_ephemeral }}"
  c1.xlarge: "{{ four_ephemeral }}"
  c3.large: "{{ two_ephemeral }}"
  c3.xlarge: "{{ two_ephemeral }}"
  c3.2xlarge: "{{ two_ephemeral }}"
  c3.4xlarge: "{{ two_ephemeral }}"
  c3.8xlarge: "{{ two_ephemeral }}"
  i2.xlarge: "{{ one_ephemeral }}"
  i2.2xlarge: "{{ two_ephemeral }}"
  i2.4xlarge: "{{ four_ephemeral }}"
  m1.small: "{{ one_ephemeral }}"
  m1.medium: "{{ one_ephemeral }}"
  m1.large: "{{ two_ephemeral }}"
  m1.xlarge: "{{ four_ephemeral }}"
  m2.xlarge: "{{ one_ephemeral }}"
  m2.2xlarge: "{{ one_ephemeral }}"
  m2.4xlarge: "{{ two_ephemeral }}"
  m3.medium: "{{ one_ephemeral }}"
  m3.large: "{{ one_ephemeral }}"
  m3.xlarge: "{{ two_ephemeral }}"
  m3.2xlarge: "{{ two_ephemeral }}"
  r3.large: "{{ one_ephemeral }}"
  r3.xlarge: "{{ one_ephemeral }}"
  r3.2xlarge: "{{ one_ephemeral }}"
  r3.4xlarge: "{{ one_ephemeral }}"
  r3.8xlarge: "{{ two_ephemeral }}"
    volumes: "{{ instance_conf.volumes + (ephemeral_volumes[instance_conf.instance_type]|default([])) }}"
以下是它如何适应模块的调用:

 local_action:
    module: ec2_lc
    image_id: "{{ instance_conf.ami }}"
    instance_type: "{{ instance_conf.instance_type }}"
    instance_profile_name: "{{ instance_conf.instance_profile }}"
    key_name: "{{ instance_conf.key_name | default(omit) }}"
    name: "{{ instance_conf.name }}-lc"
    region: "{{ instance_conf.region }}"
    assign_public_ip: "{{ instance_conf.assign_public_ip | default(omit) }}"
    security_groups: "{{ instance_conf.security_groups }}"
    volumes: "{{ instance_conf.volumes + (ephemeral_volumes[instance_conf.instance_type]|default([])) }}"
    state: present
    user_data: "{{ lookup('template', instance_conf.userdata_template | default('userdata.sh.j2')) }}"

你有没有想过收集大量的事实?类似于:
-ec2\u vol\u事实:过滤器:附件。终止时删除:true
欢迎使用堆栈溢出!我推荐你。当给出答案时,最好给出正确答案。