keepalived通知脚本可以使用docker环境变量

问题描述

我在 docker 容器中运行 keepalived,作为其中的一部分,我需要在它更改状态时运行一些通知脚本。如果我可以通过启动时传入的环境变量动态更改其中一些脚本的行为,那将会很有用。关于keepalived调用的notify shell脚本是否可以使用docker中设置的环境变量,我还没有得到明确的答案。

例如,假设我们像这样启动一个 docker 实例,其中包含环境变量 FOO:

keepalive-1:
    tty: true
    privileged: true
    environment:
      CLUSTER_NETWORK: 172.28.5.10/24
      CLUSTER_MANAGEMENT_IP: 172.28.5.20
      FOO: BAR
    build:
      dockerfile: Dockerfile.keepalive
    networks:
      my-network:
        ipv4_address: 172.28.5.10

如果我有这样的通知脚本:

#!/bin/bash
TYPE=$1
NAME=$2
STATE=$3
case $STATE in
    "MASTER") 
        echo "${FOO} is MASTER"
        exit 0
        ;;
    "BACKUP"|"FAULT") 
        echo "${FOO} is BACKUP"
        exit 0
        ;;
    *)        
        echo "unkNown state $3"
        exit 1
        ;;
esac

当我切换到 MASTER 时会返回什么?

  1. “酒吧是大师”
  2. “${FOO} 是大师”
  3. "是大师"

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...