- name: just plain order
  hosts: all
  gather_facts: false
  order: '{{ myorder | default("inventory") }}'
  tasks:
    - shell: "echo '{{ inventory_hostname }}' >> hostlist.txt"

- name: with serial
  hosts: all
  gather_facts: false
  serial: 1
  order: '{{ myorder | default("inventory")}}'
  tasks:
    - shell: "echo '{{ inventory_hostname }}' >> shostlist.txt"

- name: ensure everything works
  hosts: localhost
  gather_facts:  false
  tasks:
    - assert:
        that:
          - item.1 == hostlist[item.0]
          - item.1 == shostlist[item.0]
      loop: '{{ lookup("indexed_items", inputlist) }}'
      vars:
        hostlist: '{{ lookup("file", "hostlist.txt").splitlines() }}'
        shostlist: '{{ lookup("file", "shostlist.txt").splitlines() }}'
      when: myorder | default('inventory') != 'shuffle'

    - name: Assert that shuffle worked
      assert:
        that:
          - item.1 != hostlist[item.0] or item.1 in hostlist
          - item.1 != hostlist[item.0] or item.1 in hostlist
      loop: '{{ lookup("indexed_items", inputlist) }}'
      vars:
        hostlist: '{{ lookup("file", "hostlist.txt").splitlines() }}'
        shostlist: '{{ lookup("file", "shostlist.txt").splitlines() }}'
      when: myorder | default('inventory') == 'shuffle'
