2016-02-11 16 views
7

Tôi muốn quay lên ví dụ ec2 bằng cách sử dụng ansible và sau đó gắn kết tất cả các ổ đĩa tạm thời có sẵn để gắn kết điểm.Làm thế nào để gắn kết tất cả các ổ đĩa tạm thời bằng cách sử dụng ansible

Tôi đã kiểm tra ec2 module nhưng không có cách nào để kích hoạt tất cả ổ đĩa tạm thời có sẵn và sau đó gắn kết các ổ đĩa này.

Nếu tôi muốn làm điều này thì tôi cần phải viết nhiệm vụ cụ thể cho loại dụ như sau.

- 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 

Có cách nào để parameterize sau phần

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 

bất kỳ một trong biết làm thế nào để làm điều này?

Cảm ơn

+0

bạn có nghĩ đến việc thu thập thông tin về khối lượng không? giống như: '- ec2_vol_facts: bộ lọc: tệp đính kèm.delete-on-termination: true' – fernandezcuesta

Trả lời

4

Giải pháp của tôi cho điều đó là để có một danh sách được xác định trước các loại khối lượng mỗi trường hợp, thường là trong group_vars/all nhưng có thể là bất cứ nơi nào khác miễn là nó có thể nhìn thấy vai trò của mình. Một cái gì đó như:

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

Sau đó, khi gọi EC2 hoặc mô-đun ec2_lc tôi concatenate rằng vào danh sách các khối lượng - một cái gì đó như:

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

Sau đây là cách nó phù hợp trong lời kêu gọi của mô-đun:

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

Chào mừng bạn đến với Stack Overflow! Tôi khuyên bạn nên [tham gia] (http://stackoverflow.com/tour). Khi đưa ra câu trả lời, bạn nên đưa ra [một số giải thích là tại sao câu trả lời của bạn] (http://stackoverflow.com/help/how-to-answer) là một câu trả lời. –

Các vấn đề liên quan