Fix keepalived VIP monitoring script

Currently keepalived monitors VIPs by running some shell commands
that target HAProxy. The generated shell command is invalid, which
makes keepalived log errors.

Tue Apr 16 11:55:57 2019:    Command = '/usr/bin/test' '-S' '/var/lib/haproxy/stats' '&&' 'echo' 'show'
Tue Apr 16 11:55:57 2019: Script `haproxy` now returning 2
Tue Apr 16 11:55:57 2019: VRRP_Script(haproxy) failed (exited with status 2)

Fix quoting and invoke /bin/sh explicitely to fix the error:

Thu Apr 18 13:16:35 2019:    Command = '/usr/bin/sh' '-c' 'test -S /var/lib/haproxy/stats && echo show info | socat /var/lib/haproxy/stats stdio'
Thu Apr 18 13:16:35 2019: VRRP_Script(haproxy) succeeded

Change-Id: I5a757f88963270e77c8ec411cd292a30f89c6bc0
Closes-Bug: #1825366
(cherry picked from commit f5d6110a79)
This commit is contained in:
Damien Ciabrini 2019-04-18 15:29:33 +02:00 committed by Emilien Macchi
parent 9d0afafaea
commit 638ba0b92d
2 changed files with 2 additions and 2 deletions

View File

@ -99,7 +99,7 @@ class tripleo::keepalived (
case $::osfamily {
'RedHat': {
$keepalived_name_is_process = false
$keepalived_vrrp_script = 'test -S /var/lib/haproxy/stats && echo "show info" | socat /var/lib/haproxy/stats stdio'
$keepalived_vrrp_script = '/bin/sh -c \'test -S /var/lib/haproxy/stats && echo show info | socat /var/lib/haproxy/stats stdio\''
} # RedHat
'Debian': {
$keepalived_name_is_process = true

View File

@ -196,7 +196,7 @@ describe 'tripleo::keepalived' do
case facts[:osfamily]
when 'RedHat'
{ :name_is_process => 'false',
:vrrp_script => 'test -S /var/lib/haproxy/stats && echo "show info" | socat /var/lib/haproxy/stats stdio' }
:vrrp_script => "/bin/sh -c 'test -S /var/lib/haproxy/stats && echo show info | socat /var/lib/haproxy/stats stdio'" }
when 'Debian'
{ :name_is_process => 'true',
:vrrp_script => nil }