From 6163fe166e183da2e1dcca2f09b99f7ea9908213 Mon Sep 17 00:00:00 2001
From: Greg Althaus <galthaus@austin.rr.com>
Date: Sat, 30 Jan 2016 09:01:04 -0600
Subject: [PATCH] Update docker for CentOS issues in AWS and general variables.

1. AWS has issues with ext4 (use xfs instead for CentOS only)
2. Make sure all the centos config files are include in the systemd config
3. Make sure that network options are set in the correct file by os family

This allows downstream items like opencontrail and others change variables
in expected locations.
---
 roles/docker/tasks/main.yml                           | 9 +++++++++
 roles/network_plugin/tasks/main.yml                   | 2 +-
 roles/network_plugin/templates/docker                 | 2 ++
 roles/network_plugin/templates/systemd-docker.service | 6 ++++++
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml
index 3d8e29f73..33947b6cc 100644
--- a/roles/docker/tasks/main.yml
+++ b/roles/docker/tasks/main.yml
@@ -47,6 +47,15 @@
   with_items: docker_package_info.pkgs
   when: docker_package_info.pkgs|length > 0
 
+- name: Centos needs xfs storage type for devicemapper if used
+  lineinfile:
+    dest: /etc/sysconfig/docker-storage
+    line: "DOCKER_STORAGE_OPTIONS='--storage-opt dm.fs=xfs'"
+    regexp: '^DOCKER_STORAGE_OPTIONS=.*$'
+    state: present
+    backup: yes
+  when: ansible_os_family == "RedHat"
+
 - meta: flush_handlers
 
 - name: ensure docker service is started and enabled
diff --git a/roles/network_plugin/tasks/main.yml b/roles/network_plugin/tasks/main.yml
index db184c352..2d098d865 100644
--- a/roles/network_plugin/tasks/main.yml
+++ b/roles/network_plugin/tasks/main.yml
@@ -10,7 +10,7 @@
 - name: Set docker daemon options
   template:
     src: docker
-    dest: "/etc/default/docker"
+    dest: "{{ '/etc/sysconfig/docker-network' if ansible_os_family == 'RedHat' else '/etc/default/docker' }}"
     owner: root
     group: root
     mode: 0644
diff --git a/roles/network_plugin/templates/docker b/roles/network_plugin/templates/docker
index eefd150e1..2f547a6c3 100644
--- a/roles/network_plugin/templates/docker
+++ b/roles/network_plugin/templates/docker
@@ -1,6 +1,8 @@
 # Deployed by Ansible
 {% if init_system == "sysvinit" and kube_network_plugin == "flannel" and ansible_os_family == "Debian" %}
 DOCKER_OPTS="--bip={{ flannel_subnet }} --mtu={{ flannel_mtu }}"
+{% elif kube_network_plugin == "flannel" and ansible_os_family == "RedHat" %}
+DOCKER_NETWORK_OPTIONS="--bip={{ flannel_subnet }} --mtu={{ flannel_mtu }}"
 {% elif kube_network_plugin == "flannel" %}
 OPTIONS="--bip={{ flannel_subnet }} --mtu={{ flannel_mtu }}"
 {% endif %}
diff --git a/roles/network_plugin/templates/systemd-docker.service b/roles/network_plugin/templates/systemd-docker.service
index 3275c6e24..43b49618f 100644
--- a/roles/network_plugin/templates/systemd-docker.service
+++ b/roles/network_plugin/templates/systemd-docker.service
@@ -11,7 +11,13 @@ Requires=docker.socket
 
 [Service]
 Type=notify
+{% if ansible_os_family == "RedHat" %}
+EnvironmentFile=-/etc/sysconfig/docker
+EnvironmentFile=-/etc/sysconfig/docker-network
+EnvironmentFile=-/etc/sysconfig/docker-storage
+{% elif ansible_os_family == "Debian" %}
 EnvironmentFile=-/etc/default/docker
+{% endif %}
 Environment=GOTRACEBACK=crash
 ExecStart=/usr/bin/docker daemon \
           $OPTIONS \
-- 
GitLab