2016-02-11 13 views
7

Chcę zainstalować instancję ec2 za pomocą ansible, a następnie zamontować cały dostępny napęd efemeryczny do punktu montowania.Jak zamontować cały dysk efemeryczny za pomocą ansible

Sprawdziłem ec2 module, ale nie ma sposobu na aktywację wszystkich dostępnych efemerycznych napędów, a następnie zamontowanie tych napędów.

Jeśli chcę to zrobić, to muszę napisać zadanie specyficzne dla typu instancji, jak na przykład.

- 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 

Czy istnieje sposób parametryzacji następujące części

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 

ktoś wie jak to zrobić?

Dzięki

+0

Czy myślisz o zbieraniu informacji o objętości? coś w stylu: '- ec2_vol_facts: filters: attachment.delete-on-termination: true' – fernandezcuesta

Odpowiedz

4

moje rozwiązanie dla że było mieć predefiniowanego listę typów objętość na przykład zwykle w group_vars/all ale może być gdziekolwiek indziej, tak długo jak jest to widoczne na swojej roli. Coś jak:

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 }}" 

potem, kiedy dzwoni EC2 lub moduły ec2_lc ja złączyć że do listy woluminów - coś takiego:

volumes: "{{ instance_conf.volumes + (ephemeral_volumes[instance_conf.instance_type]|default([])) }}" 

Oto jak to pasuje do modułu połączenia:

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

Witamy w Stack Overflow! Polecam [wyprawę] (http://stackoverflow.com/tour). Podczas udzielania odpowiedzi lepiej jest podać [wyjaśnienie, DLACZEGO twoja odpowiedź] (http://stackoverflow.com/help/how-to-answer) jest tą. –