diff --git a/ansible/roles/common/tasks/config.yml b/ansible/roles/common/tasks/config.yml
index c26166cfa3..61d272cd2c 100644
--- a/ansible/roles/common/tasks/config.yml
+++ b/ansible/roles/common/tasks/config.yml
@@ -27,6 +27,7 @@
     - { name: "global", enabled: "yes" }
     - { name: "haproxy", enabled: "{{ enable_haproxy }}" }
     - { name: "horizon", enabled: "{{ enable_horizon }}" }
+    - { name: "keepalived", enabled: "{{ enable_haproxy }}" }
     - { name: "keystone", enabled: "{{ enable_keystone }}" }
     - { name: "mariadb", enabled: "{{ enable_mariadb }}" }
     - { name: "openstack", enabled: "yes" }
diff --git a/ansible/roles/common/templates/cron-logrotate-keepalived.conf.j2 b/ansible/roles/common/templates/cron-logrotate-keepalived.conf.j2
index 0346c051d8..6808746347 100644
--- a/ansible/roles/common/templates/cron-logrotate-keepalived.conf.j2
+++ b/ansible/roles/common/templates/cron-logrotate-keepalived.conf.j2
@@ -1,3 +1,3 @@
-"/var/log/kolla/haproxy/keepalived.log"
+"/var/log/kolla/keepalived/keepalived.log"
 {
 }
diff --git a/ansible/roles/common/templates/heka-haproxy.toml.j2 b/ansible/roles/common/templates/heka-haproxy.toml.j2
index 1023569063..49338fd0a3 100644
--- a/ansible/roles/common/templates/heka-haproxy.toml.j2
+++ b/ansible/roles/common/templates/heka-haproxy.toml.j2
@@ -1,4 +1,4 @@
-# HAProxy and Keepalived write their logs to Syslog, so the generic
+# HAProxy writes its logs to Syslog, so the generic
 # Syslog input set in heka-global.toml.j2 is used.
 
 [haproxy_file_output]
@@ -7,10 +7,3 @@ message_matcher = "Fields[programname] =~ /(?i:haproxy)/"
 path = "/var/log/kolla/haproxy/haproxy.log"
 encoder = "syslog_encoder"
 folder_perm = "755"
-
-[keepalived_file_output]
-type = "FileOutput"
-message_matcher = "Fields[programname] =~ /(?i:keepalived)/"
-path = "/var/log/kolla/haproxy/keepalived.log"
-encoder = "syslog_encoder"
-folder_perm = "755"
diff --git a/ansible/roles/common/templates/heka-keepalived.toml.j2 b/ansible/roles/common/templates/heka-keepalived.toml.j2
new file mode 100644
index 0000000000..2159982343
--- /dev/null
+++ b/ansible/roles/common/templates/heka-keepalived.toml.j2
@@ -0,0 +1,9 @@
+# Keepalived writes its logs to Syslog, so the generic
+# Syslog input set in heka-global.toml.j2 is used.
+
+[keepalived_file_output]
+type = "FileOutput"
+message_matcher = "Fields[programname] =~ /(?i:keepalived)/"
+path = "/var/log/kolla/keepalived/keepalived.log"
+encoder = "syslog_encoder"
+folder_perm = "755"
diff --git a/ansible/roles/common/templates/heka.json.j2 b/ansible/roles/common/templates/heka.json.j2
index a23162d019..2cb4bcbe54 100644
--- a/ansible/roles/common/templates/heka.json.j2
+++ b/ansible/roles/common/templates/heka.json.j2
@@ -22,6 +22,13 @@
             "perm": "0600",
             "optional": {{ (not enable_haproxy | bool) | string | lower }}
         },
+        {
+            "source": "{{ container_config_directory }}/heka-keepalived.toml",
+            "dest": "/etc/heka/heka-keepalived.toml",
+            "owner": "heka",
+            "perm": "0600",
+            "optional": {{ (not enable_haproxy | bool) | string | lower }}
+        },
         {
             "source": "{{ container_config_directory }}/heka-rabbitmq.toml",
             "dest": "/etc/heka/heka-rabbitmq.toml",