2016-02-11 16 views
7

我希望使用安全方式啓動ec2實例,然後將所有可用的臨時驅動器安裝到安裝點。如何使用安裝方式安裝所有短暫驅動器

我檢查了ec2 module,但沒有辦法激活所有可用的臨時驅動器,然後安裝這些驅動器。

如果我想這樣做,那麼我需要寫下特定於實例類型的任務。

- 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 

任何一個知道如何做到這一點?

感謝

+0

你有沒有想過收集量的事實?類似於: ' - ec2_vol_facts:filters:attachment.delete-on-termination:true' – fernandezcuesta

回答

4

我該解決方案是讓每個實例的卷類型的預先定義的列表,通常在group_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 }}" 

然後,當調用EC2或ec2_lc模塊I串聯,要卷的列表 - 是這樣的:

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')) }}" 
0
Here is an updated ec2 instance list 

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 } 
six_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 } 
    - { device_name: /dev/sdf, ephemeral: ephemeral4 } 
    - { device_name: /dev/sdg, ephemeral: ephemeral5 } 
eight_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 } 
    - { device_name: /dev/sdf, ephemeral: ephemeral4 } 
    - { device_name: /dev/sdg, ephemeral: ephemeral5 } 
    - { device_name: /dev/sdh, ephemeral: ephemeral6 } 
    - { device_name: /dev/sdi, ephemeral: ephemeral7 } 
twelve_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 } 
    - { device_name: /dev/sdf, ephemeral: ephemeral4 } 
    - { device_name: /dev/sdg, ephemeral: ephemeral5 } 
    - { device_name: /dev/sdh, ephemeral: ephemeral6 } 
    - { device_name: /dev/sdi, ephemeral: ephemeral7 } 
    - { device_name: /dev/sdj, ephemeral: ephemeral8 } 
    - { device_name: /dev/sdk, ephemeral: ephemeral9 } 
    - { device_name: /dev/sdl, ephemeral: ephemeral10 } 
    - { device_name: /dev/sdm, ephemeral: ephemeral11 } 
twenty_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 } 
    - { device_name: /dev/sdf, ephemeral: ephemeral4 } 
    - { device_name: /dev/sdg, ephemeral: ephemeral5 } 
    - { device_name: /dev/sdh, ephemeral: ephemeral6 } 
    - { device_name: /dev/sdi, ephemeral: ephemeral7 } 
    - { device_name: /dev/sdj, ephemeral: ephemeral8 } 
    - { device_name: /dev/sdk, ephemeral: ephemeral9 } 
    - { device_name: /dev/sdl, ephemeral: ephemeral10 } 
    - { device_name: /dev/sdm, ephemeral: ephemeral11 } 
    - { device_name: /dev/sdn, ephemeral: ephemeral12 } 
    - { device_name: /dev/sdo, ephemeral: ephemeral13 } 
    - { device_name: /dev/sdp, ephemeral: ephemeral14 } 
    - { device_name: /dev/sdq, ephemeral: ephemeral15 } 
    - { device_name: /dev/sdr, ephemeral: ephemeral16 } 
    - { device_name: /dev/sds, ephemeral: ephemeral17 } 
    - { device_name: /dev/sdt, ephemeral: ephemeral18 } 
    - { device_name: /dev/sdu, ephemeral: ephemeral19 } 
    - { device_name: /dev/sdv, ephemeral: ephemeral20 } 
    - { device_name: /dev/sdw, ephemeral: ephemeral21 } 
    - { device_name: /dev/sdx, ephemeral: ephemeral22 } 
    - { device_name: /dev/sdy, ephemeral: ephemeral23 } 


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 }}" 
    cc2.8xlarge: "{{ four_ephemeral }}" 
    cg1.4xlarge: "{{ two_ephemeral }}" 
    cr1.8xlarge: "{{ two_ephemeral }}" 
    d2.xlarge: "{{ three_ephemeral }}" 
    d2.2xlarge: "{{ six_ephemeral }}" 
    d2.4xlarge: "{{ twelve_ephemeral }}" 
    d2.8xlarge: "{{ twenty_four_ephemeral }}" 
    g2.2xlarge: "{{ one_ephemeral }}" 
    hi1.xlarge: "{{ two_ephemeral }}" 
    hs1.xlarge: "{{ twenty_four_ephemeral }}" 
    i2.xlarge: "{{ one_ephemeral }}" 
    i2.2xlarge: "{{ two_ephemeral }}" 
    i2.4xlarge: "{{ four_ephemeral }}" 
    i2.8xlarge: "{{ eight_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 }}" 
    x1.16xlarge: "{{ one_ephemeral }}" 
    x1.32xlarge: "{{ two_ephemeral }}" 
+0

歡迎來到Stack Overflow!我建議你[參觀](http://stackoverflow.com/tour)。 當給出答案時,最好給出[關於爲什麼你的答案的解釋](http://stackoverflow.com/help/how-to-answer)。 –