From 3886918c1fac35fac976c2f0c10d365edb20d835 Mon Sep 17 00:00:00 2001
From: "Tone.Zhang" <tone.zhang@arm.com>
Date: Fri, 24 Nov 2017 13:43:34 +0800
Subject: [PATCH] Change the docker daemon name in Debian 9 on Arm

Enable docker-ce on AArch64 platform in Debian.
Set the docker daemon name according to the existing of "dockerd" binary.

Closes-Bug: #1734255

Co-authored-by: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>

Change-Id: Ie0b3bac72b408dccf3fb99912b4fe2d4788705e5
Signed-off-by: Tone.Zhang <tone.zhang@arm.com>
---
 ansible/roles/baremetal/defaults/main.yml              |  7 ++++---
 ansible/roles/baremetal/tasks/post-install.yml         | 10 ++++++++++
 ansible/roles/baremetal/tasks/pre-install.yml          |  8 +++-----
 ansible/roles/baremetal/templates/docker_apt_repo.j2   |  4 ++++
 .../baremetal/templates/docker_systemd_service.j2      |  2 +-
 5 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/ansible/roles/baremetal/defaults/main.yml b/ansible/roles/baremetal/defaults/main.yml
index 31302814ec..62584c8b20 100644
--- a/ansible/roles/baremetal/defaults/main.yml
+++ b/ansible/roles/baremetal/defaults/main.yml
@@ -1,6 +1,7 @@
 ---
-docker_apt_url: "https://apt.dockerproject.org"
-docker_apt_key_id: F76221572C52609D
+docker_apt_url: "{{ 'http://obs.linaro.org/ERP:/17.12/Debian_9' if ansible_architecture == 'aarch64' else 'https://apt.dockerproject.org' }}"
+docker_apt_key_file: "{{ 'Release.key' if ansible_architecture == 'aarch64' else 'gpg' }}"
+docker_apt_key_id: "{{ 'C32DA102AD89C2BE' if ansible_architecture == 'aarch64' else 'F76221572C52609D' }}"
 
 docker_yum_url: "https://yum.dockerproject.org"
 docker_gpg_fingerprint: "58118E89F3A912897C070ADBF76221572C52609D"
@@ -16,7 +17,7 @@ disable_selinux: True
 docker_storage_driver: ""
 
 debian_pkg_install:
- - docker-engine=1.12.*
+ - "{{ 'docker-ce' if ansible_architecture == 'aarch64' else 'docker-engine=1.12.*' }}"
  - git
  - python-setuptools
  - ntp
diff --git a/ansible/roles/baremetal/tasks/post-install.yml b/ansible/roles/baremetal/tasks/post-install.yml
index 9e11d782d7..63b8a3a8fa 100644
--- a/ansible/roles/baremetal/tasks/post-install.yml
+++ b/ansible/roles/baremetal/tasks/post-install.yml
@@ -6,6 +6,16 @@
     recurse: yes
   become: True
 
+- name: Check dockerd exists
+  stat: path=/usr/bin/dockerd
+  register: dockerd_exists
+
+- name: Setting docker daemon name
+  set_fact:
+    docker_binary_name: "dockerd"
+  when:
+    dockerd_exists.stat.exists == True
+
 - name: Configure docker service
   become: True
   template:
diff --git a/ansible/roles/baremetal/tasks/pre-install.yml b/ansible/roles/baremetal/tasks/pre-install.yml
index 1465612ce9..87be47ed2d 100644
--- a/ansible/roles/baremetal/tasks/pre-install.yml
+++ b/ansible/roles/baremetal/tasks/pre-install.yml
@@ -77,7 +77,7 @@
   become: True
   when: ansible_os_family == 'Debian'
 
-- name: Install ubuntu ca certs
+- name: Install ca certs
   package:
     name: "{{ item }}"
     state: latest
@@ -105,13 +105,11 @@
 
 - name: Install docker apt gpg key
   apt_key:
-    url: "{{ docker_apt_url }}/gpg"
+    url: "{{ docker_apt_url }}/{{ docker_apt_key_file }}"
     id: "{{ docker_apt_key_id }}"
     state: present
   become: True
-  when:
-    - ansible_os_family == 'Debian'
-    - ansible_distribution == 'Ubuntu'
+  when: ansible_os_family == 'Debian'
 
 - name: Ensure yum repos directory exists
   file:
diff --git a/ansible/roles/baremetal/templates/docker_apt_repo.j2 b/ansible/roles/baremetal/templates/docker_apt_repo.j2
index 16ea8fc1d7..326f1824f8 100644
--- a/ansible/roles/baremetal/templates/docker_apt_repo.j2
+++ b/ansible/roles/baremetal/templates/docker_apt_repo.j2
@@ -1,2 +1,6 @@
+{% if ansible_architecture == 'aarch64' %}
+deb {{ docker_apt_url }} ./
+{% else %}
 # main docker repo
 deb {{ docker_apt_url }}/repo {{ ansible_distribution | lower }}-{{ ansible_distribution_release | lower }} main
+{% endif %}
diff --git a/ansible/roles/baremetal/templates/docker_systemd_service.j2 b/ansible/roles/baremetal/templates/docker_systemd_service.j2
index 1f84a0091b..b3c7644817 100644
--- a/ansible/roles/baremetal/templates/docker_systemd_service.j2
+++ b/ansible/roles/baremetal/templates/docker_systemd_service.j2
@@ -1,4 +1,4 @@
 [Service]
 MountFlags=shared
 ExecStart=
-ExecStart=/usr/bin/docker daemon{% if docker_registry %} --insecure-registry {{ docker_registry }}{% endif %}{% if docker_storage_driver %} --storage-driver {{ docker_storage_driver }}{% endif %}
+ExecStart=/usr/bin/{{ docker_binary_name|default("docker daemon", true) }}{% if docker_registry %} --insecure-registry {{ docker_registry }}{% endif %}{% if docker_storage_driver %} --storage-driver {{ docker_storage_driver }}{% endif %}