简体   繁体   English

Ansible run systemd并行启动

[英]Ansible run systemd start in parallel batch

I want to change: 我想改变:

---
- name: Start systemd.
  systemd: 
   name: "{{item.jar}}"
   state: restarted
   daemon_reload: yes
  become: yes
  loop: "{{Items}}"

To take for example 4 first elements from Items and try to start it via systemd. Items 4个头元素为例,尝试通过systemd启动它。 Then it should take next 4 elements and so on until all Items are processed. 然后应该处理下4个元素,依此类推,直到处理完所有Items How can i achieve it? 我该如何实现?

My solution example: 我的解决方案示例:

---
- hosts: localhost
  vars:
    appsItems:
      - { jar: a, opts: -Xms256M -Xmx1024M}
      - { jar: b, opts: -Xms64M -Xmx128M}
      - { jar: c, opts: -Xms128M -Xmx400M}
      - { jar: d, opts: -Xms128M -Xmx512M}
      - { jar: e, opts: -Xms256M -Xmx512M} # 5
      - { jar: f, opts: -Xms256M -Xmx512M}
      - { jar: g, opts: -Xms128M -Xmx256M}
      - { jar: h, opts: -Xms128M -Xmx175M}
      - { jar: i, opts: -Xms128M -Xmx256M}
      - { jar: j, opts: -Xms128M -Xmx256M} # 10
      - { jar: k, opts: -Xms128M -Xmx256M}
      - { jar: l, opts: -Xms128M -Xmx256M}
      - { jar: m, opts: -Xms1024M -Xmx1536M}
      - { jar: n, opts: -Xms256M -Xmx512M}
      - { jar: o, opts: -Xms256M -Xmx1024M} # 15
      - { jar: p, opts: -Xms64M -Xmx128M}
      - { jar: q, opts: -Xms256M -Xmx512M}
      - { jar: r, opts: -Xms128M -Xmx256M}
      - { jar: s, opts: -Xms512M -Xmx1024M}
      - { jar: t, opts: -Xms128M -Xmx256M} # 20
      - { jar: u, opts: -Xms128M -Xmx256M}
      - { jar: v, opts: -Xms512M -Xmx768M}
      - { jar: x, opts: -Xms128M -Xmx256M}
      - { jar: y, opts: -Xms64M -Xmx128M}
      - { jar: z, opts: -Xms256M -Xmx512M} # 25
      - { jar: aa, opts: -Xms128M -Xmx256M}

  tasks:
    - name: modulo 9 equals 0
      debug:
       msg: "{{ loop.index }}"
      debug:
        msg: "{{ item }} with index {{ my_idx }} and {{appsItems|length}}"
      loop:
        "{{appsItems}}"        
      when: "{{my_idx %9 == 0}}"
      loop_control:
        index_var: my_idx

    # modulo 9 equals 1,2,3,4,5,6,7  

    - name: modulo 9 equals 8
      debug:
       msg: "{{ loop.index }}"
      debug:
        msg: "{{ item }} with index {{ my_idx }} and {{appsItems|length}}"
      loop:
        "{{appsItems}}"
      when: "{{my_idx %9 == 8}}"
      loop_control:
        index_var: my_idx

Finally: 最后:

- name: Start systemd -> modulo 9 equals 0.
  systemd: 
   name: "{{item.jar}}"
   state: restarted
   daemon_reload: yes
   no_block: yes
  become: yes
  loop: "{{appsItems}}"
  when: "{{my_idx %9 == 0}}"
  loop_control:
      index_var: my_idx

And so on. 等等。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM