/etc/ansible/roles/sshd/handlers/main.yml
---

- name: Reload the SSH service
  service:
    name: "{{ sshd_service }}"
    state: reloaded
  when:
    - sshd_allow_reload|bool
    - ansible_virtualization_type|default(None) != 'docker'
    - ansible_connection != 'chroot'
    - ansible_os_family != 'AIX'
  listen: reload_sshd

# sshd on AIX cannot be 'reloaded', it must be Stopped+Started.  
# It's dangerous to do this in two tasks.. you're stopping SSH and then trying to SSH back in to start it.
# Instead, use a dirty shell script:
#  https://www.ibm.com/developerworks/community/blogs/brian/entry/scripting_the_stop_and_restart_of_src_controlled_processes_on_aix6
- name: Reload sshd Service (AIX)
  shell: |
    stopsrc -s sshd
    until $(lssrc -s sshd | grep -q inoperative); do sleep 1; done
    startsrc -s sshd
  listen: reload_sshd
  when:
    - sshd_allow_reload|bool
    - ansible_os_family == 'AIX'