- block:
  - name: docker | install docker | get convenience script
    get_url:
      url: "https://get.docker.com"
      dest: "/tmp/get-docker.sh"
      mode: "0777"  # not required. The permissions the resulting file or directory should have. For those used to I(/usr/bin/chmod) remember that modes are actually octal numbers. You must either add a leading zero so that Ansible's YAML parser knows it is an octal number (like C(0644) or C(01777)) or quote it (like C('644') or C('1777')) so Ansible receives a string and can do its own conversion from string into number. Giving Ansible a number without following one of these rules will end up with a decimal number which will have unexpected results. As of Ansible 1.8, the mode may be specified as a symbolic mode (for example, C(u+rwx) or C(u=rw,g=r,o=r)). As of Ansible 2.6, the mode may also be the special string C(preserve). When set to C(preserve) the file will be given the same permissions as the source file.

  - name: docker | install docker | execute convenience script
    shell:
      cmd: "/tmp/get-docker.sh"
      creates: /usr/bin/docker

  - name: docker | install docker | cleanup
    file:
      path: "/tmp/get-docker.sh" # required. Path to the file being managed.
      state: absent
  when: ansible_distribution in ["Debian", "Ubuntu"]

- name: docker | install docker | docker-compose
  package:
    name: "{{ item }}"
    state: latest
  loop:
    - docker
    - docker-compose

- name: docker | install docker | enable service
  service:
    name: docker 
    state: started
    enabled: true