Fix keepalived logging on disk

There are no logs under /var/log/containers/keepalived even though we
explicitly try to capture logs on file for the keepalived container:

 [root@undercloud-0 ~]# podman exec -it keepalived sh -c 'ps -ax'
    PID TTY STAT TIME COMMAND
      1 ? Ss 0:00 dumb-init --single-child -- /usr/local/bin/kolla_start
      8 ? S 0:00 /usr/sbin/keepalived -nldD | tee -a /var/log/keepalived.log
     12 ? S 2:18 /usr/sbin/keepalived -nldD | tee -a /var/log/keepalived.log

The reason this is broken is that 'tee' is not passed to a shell but
ends up being an ignored argument of keepalived. Notice how there is no
shell process and also no tee process in the container above.

To fix that we need to pass the proper commands to a shell. This is done
in a special way like we did for the haproxy container so that kolla
does not mangle quotes and spaces.

After this fix we correctly see that the container logs on disk:
[root@undercloud-0 container-puppet]# ls -l /var/log/containers/keepalived/
-rw-r--r--. 1 root root 17483 Jan 28 15:55 keepalived.log

While we're at it we remove the usage of tee. It makes no sense to
log both on file and on stdout/stderr.

Co-Authored-By: Damien Ciabrini <dciabrin@redhat.com>

Change-Id: Id309e812f7dc8d66bd4912fce282ce72350fcbf8
Closes-Bug: #1861169
(cherry picked from commit 547a510f63)
This commit is contained in:
Michele Baldessari 2020-01-28 17:03:28 +01:00 committed by Emilien Macchi
parent a49fd99690
commit 53364fd7a1
1 changed files with 1 additions and 1 deletions

View File

@ -100,7 +100,7 @@ outputs:
config_image: {get_param: DockerKeepalivedConfigImage}
kolla_config:
/var/lib/kolla/config_files/keepalived.json:
command: /usr/sbin/keepalived -nldD | tee -a /var/log/keepalived.log
command: "/bin/bash -c $* -- eval exec /usr/sbin/keepalived -nldD &>>/var/log/keepalived.log"
config_files:
- source: "/var/lib/kolla/config_files/src/*"
dest: "/"