2016-02-11 2 views
7

Ich möchte ec2-Instanz mit Ansible hochfahren und dann alle verfügbaren ephemeren Laufwerke an den Mount-Punkt montieren.So mounten Sie alle ephemeren Laufwerke mit Hilfe von

Ich überprüft ec2 module, aber es gibt keine Möglichkeit, alle verfügbaren ephemeren Laufwerk zu aktivieren und dann diese Laufwerke zu mounten.

Wenn ich dies tun möchte, dann muss ich aufgabenspezifische auf Instanztyp wie folgt schreiben.

- 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 

Gibt es eine Möglichkeit folgende Teil zu parametrieren

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 

Jeder weiß, wie dies zu tun?

Dank

+0

Haben Sie über das Sammeln von Volumenfakten nachgedacht? etwas wie: '- ec2_vol_facts: Filter: attachment.delete-on-termination: true' – fernandezcuesta

Antwort

4

Meine Lösung dafür war eine vordefinierte Liste der Volume-Typen pro Instanz, in der Regel in group_vars/all konnte aber anderswo so lang sein, wie es um Ihre Rolle sichtbar ist. Etwas wie:

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

dann beim Aufruf von EC2 oder ec2_lc Module I verketten, dass auf die Liste der Volumes - so etwas wie:

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

Hier ist, wie es in dem Modul Anruf paßt:

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

Willkommen bei Stack Overflow! Ich empfehle Ihnen [die Tour] (http://stackoverflow.com/tour). Wenn Sie eine Antwort geben, ist es besser, [eine Erklärung dafür zu geben, WARUM Ihre Antwort] (http://stackoverflow.com/help/how-to-answer) diejenige ist. –

Verwandte Themen