various fixes for ansible 2.3 compat
update docker role
set default for docker apt repo
fix quote
revert explicit dependencies, use ansible_user_id rather than ansible_user
don't depend on ansible role
force docker version

Change-Id: I0ba24d829db73559d7d4f16ae89a4661215f3842
diff --git a/roles/compute-node/tasks/i40e_driver.yml b/roles/compute-node/tasks/i40e_driver.yml
index 69c1e96..a178ee1 100644
--- a/roles/compute-node/tasks/i40e_driver.yml
+++ b/roles/compute-node/tasks/i40e_driver.yml
@@ -2,13 +2,13 @@
 - name: Copy i40e Interface Driver
   unarchive:
     src=files/i40e-1.4.25.tar.gz
-    dest=/home/{{ ansible_user }}
+    dest=/home/{{ ansible_user_id }}
 
 - name: Build i40e Driver
   command: make
   args:
     chdir: i40e-1.4.25/src
-    creates: /home/{{ ansible_user }}/i40e-1.4.25/src/i40e/i40e.ko
+    creates: /home/{{ ansible_user_id }}/i40e-1.4.25/src/i40e/i40e.ko
 
 - name: Unload i40e Driver
   become: yes
@@ -35,5 +35,5 @@
 
 - name: Remove Build Files
   file:
-    path=/home/{{ ansible_user }}/i40e-1.4.25
+    path=/home/{{ ansible_user_id }}/i40e-1.4.25
     state=absent
diff --git a/roles/compute-node/tasks/main.yml b/roles/compute-node/tasks/main.yml
index bfafc40..d17945f 100644
--- a/roles/compute-node/tasks/main.yml
+++ b/roles/compute-node/tasks/main.yml
@@ -87,9 +87,9 @@
 - name: Set Default Password
   become: yes
   user:
-    name: "{{ansible_user}}"
+    name: "{{ ansible_user_id }}"
     password: "{{compute_node.password.split(':',1)[1]}}"
-  when: '"{{ ansible_user }}" == "ubuntu"'
+  when: '"{{ ansible_user_id }}" == "ubuntu"'
   tags:
     - set_compute_node_password
 
@@ -97,13 +97,13 @@
   become: yes
   authorized_key:
     key: "{{ pub_ssh_key }}"
-    user: "{{ ansible_user }}"
+    user: "{{ ansible_user_id }}"
     state: present
 
 - name: Verify Private SSH Key
   become: yes
   stat:
-    path=/home/{{ ansible_user }}/.ssh/id_rsa
+    path=/home/{{ ansible_user_id }}/.ssh/id_rsa
   register: private_key
 
 - name: Ensure SSH Key Pair
@@ -111,7 +111,7 @@
   copy:
     src: "/etc/maas/.ssh/{{item.src}}"
     dest: "{{ansible_env['PWD']}}/.ssh/{{item.dest}}"
-    owner: "{{ansible_user}}"
+    owner: "{{ ansible_user_id }}"
     group: "docker"
     mode: "0600"
   with_items:
@@ -123,7 +123,7 @@
   copy:
     src: "files/{{item}}"
     dest: "{{ansible_env['PWD']}}/.ssh/{{item}}"
-    owner: "{{ansible_user}}"
+    owner: "{{ ansible_user_id }}"
     mode: "0600"
   with_items:
     - config
diff --git a/roles/docker/defaults/main.yml b/roles/docker/defaults/main.yml
new file mode 100644
index 0000000..dce0498
--- /dev/null
+++ b/roles/docker/defaults/main.yml
@@ -0,0 +1,4 @@
+---
+
+docker_apt_repo: "deb https://apt.dockerproject.org/repo ubuntu-trusty main"
+
diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml
index 7b6f2e6..ce0e90b 100644
--- a/roles/docker/tasks/main.yml
+++ b/roles/docker/tasks/main.yml
@@ -1,28 +1,33 @@
-- name: Apt Information
+---
+
+- name: Prereqs and SSL support for apt for SSL
   become: yes
-  apt: name={{ item }} state=present force=yes
+  apt:
+    name: "{{ item }}"
+    update_cache: yes
+    cache_valid_time: 3600
   with_items:
-    - apt-transport-https=1.0*
-    - ca-certificates=20160104*
+    - apt-transport-https
+    - ca-certificates
+    - python-pip
 
 - name: Docker Apt Key
   become: yes
   apt_key:
-    data="{{ lookup('file', 'docker_apt_key.gpg') }}"
+    data: "{{ lookup('file', 'docker_apt_key.gpg') }}"
 
 - name: Docker repository
   become: yes
   apt_repository:
-    repo: "{{ docker_apt_repo | default('deb https://apt.dockerproject.org/repo ubuntu-trusty main') }}"
-    update_cache: yes
-    state: present
+    repo: "{{ docker_apt_repo }}"
 
-- name: Docker Engine
+- name: Install docker engine
   become: yes
   apt:
     name: docker-engine=1.12*
-    state: present
     force: yes
+    update_cache: yes
+    cache_valid_time: 3600
 
 - name: Docker Exposed via TCP
   become: yes
@@ -40,19 +45,19 @@
     state=restarted
   when: docker_config.changed
 
-- name: Enable Docker for User
+# docker fails without docker-py, docker-compose >1.9 fails with docker-py installed
+- name: Install docker-compose and docker-py
+  become: yes
+  pip:
+    name: "{{ item }}"
+  with_items:
+    - docker-py
+    - docker-compose==1.9
+
+- name: Make current user part of the Docker group
   become: yes
   user:
-    name={{ ansible_user }}
-    group=docker
-    append=yes
+    name: "{{ ansible_user_id }}"
+    groups: "docker"
+    append: yes
 
-- name: Docker Compose
-  become: yes
-  get_url:
-    url: https://github.com/docker/compose/releases/download/1.7.1/docker-compose-Linux-x86_64
-    checksum: "sha256:3166bb74bc648e68c3154bc704fddf6bccf59f03a0c90fc48aefac034535e4ae"
-    dest: /usr/local/bin/docker-compose
-    owner: root
-    group: root
-    mode: "0755"
diff --git a/roles/head-node/meta/main.yml b/roles/head-node/meta/main.yml
index 97b4caa..7d1c04d 100644
--- a/roles/head-node/meta/main.yml
+++ b/roles/head-node/meta/main.yml
@@ -13,4 +13,3 @@
     - cord
 dependencies:
   - { role : maas }
-  - { role : ansible }
diff --git a/roles/head-node/tasks/main.yml b/roles/head-node/tasks/main.yml
index 7d59204..2ace0af 100644
--- a/roles/head-node/tasks/main.yml
+++ b/roles/head-node/tasks/main.yml
@@ -1,7 +1,7 @@
 # SSH Key access from the current machine to the target node is required for the
 # synchronize action to work.
 - name: Ensure User SSH Keys
-  local_action: user name='{{ansible_user}}' generate_ssh_key=yes ssh_key_bits=2048
+  local_action: user name='{{ ansible_user_id }}' generate_ssh_key=yes ssh_key_bits=2048
   tags:
     - establish_ssh_keys