日期: 2021年3月26日

  • 在 Rancher 环境变量中,在一个环境变量的值中引用另一个环境变量的实现

    在 Rancher 环境变量中,在一个环境变量的值中引用另一个环境变量的实现

    1、现阶段,有 4 个 Rancher 环境变量(未设置默认值,必须设置),其值包含公共部分:dev.xxx.cn
    
    
    PCS_API_CFG_SCMS_EDITOR_HOST_INFO=https://editor.dev.xxx.cn # 内容管理系统编辑器的 HOME URL
    PCS_API_CFG_PCS_API_ASSET_HOST_INFO=https://web.dev.xxx.cn # 策划指挥系统接口的资源的 HOME URL
    PCS_API_CFG_CPU_HOST_INFO=https://fcpu.dev.xxx.cn # CP上传的 HOME URL
    PCS_API_CFG_SCMS_FRONT_HOST_INFO=https://web.dev.xxx.cn # 内容管理系统的 HTTP 客户端的前端的 HOME URL
    
    
    
    2、新阶段,更新 4 个 Rancher 环境变量(已设置默认值,可无需设置)。添加新的值为公共部分的环境变量:RMT_MAIN_DOMAIN
    
    
    RMT_MAIN_DOMAIN=dev.xxx.cn # 融媒体环境的主域名
    PCS_API_CFG_SCMS_EDITOR_HOST_INFO=https://editor.${RMT_MAIN_DOMAIN} # 内容管理系统编辑器的 HOME URL
    PCS_API_CFG_PCS_API_ASSET_HOST_INFO=https://web.${RMT_MAIN_DOMAIN} # 策划指挥系统接口的资源的 HOME URL
    PCS_API_CFG_CPU_HOST_INFO=https://fcpu.${RMT_MAIN_DOMAIN} # CP上传的 HOME URL
    PCS_API_CFG_SCMS_FRONT_HOST_INFO=https://web.${RMT_MAIN_DOMAIN} # 内容管理系统的 HTTP 客户端的前端的 HOME URL
    
    
    
    3、Shell 脚本如下所示。如图1
    Shell 脚本如下所示。
    图1
    
    
    # Rancher 环境变量(未设置默认值,必须设置)
    if [[ `echo $RMT_MAIN_DOMAIN` == '' ]]
    then
        echo "需要设置 RMT_MAIN_DOMAIN"
        exit 1
    else
        echo "设置的 RMT_MAIN_DOMAIN 为:$RMT_MAIN_DOMAIN"
    fi
    
    # Rancher 环境变量(已设置默认值,可无需设置)
    env | grep "PCS_API_CFG_SCMS_EDITOR_HOST_INFO" || export PCS_API_CFG_SCMS_EDITOR_HOST_INFO="https://editor.${RMT_MAIN_DOMAIN}"
    
    sed -i "s#PCS_API_CFG_SCMS_EDITOR_HOST_INFO#$PCS_API_CFG_SCMS_EDITOR_HOST_INFO#g" $DEV_COMMON_CONFIG_PARAMS_LOCAL_PATH
    echo "PCS_API_CFG_SCMS_EDITOR_HOST_INFO replace $PCS_API_CFG_SCMS_EDITOR_HOST_INFO -> $DEV_COMMON_CONFIG_PARAMS_LOCAL_PATH"
    echo "PCS_API_CFG_SCMS_EDITOR_HOST_INFO replace $PCS_API_CFG_SCMS_EDITOR_HOST_INFO -> $DEV_COMMON_CONFIG_PARAMS_LOCAL_PATH" >> $DIR/change.log
    
    
    
    
    4、当在 Rancher 中未添加环境变量:RMT_MAIN_DOMAIN 时,升级容器时,报错,如图2
    当在 Rancher 中未添加环境变量:RMT_MAIN_DOMAIN 时,升级容器时,报错
    图2
    
    
    /config/init/config0.sh: line 18: RMT_MAIN_DOMAIN: unbound variable
    
    需要设置 RMT_MAIN_DOMAIN
    
    
    
    5、当在 Rancher 中添加环境变量:RMT_MAIN_DOMAIN= ,其值为空字符串时,升级容器时,报错,如图3
    当在 Rancher 中添加环境变量:RMT_MAIN_DOMAIN= ,其值为空字符串时,升级容器时,报错
    图3
    
    
    需要设置 RMT_MAIN_DOMAIN
    
    
    
    6、当在 Rancher 中添加环境变量:RMT_MAIN_DOMAIN=dev.xxx.cn ,其值为 dev.xxx.cn 时,升级容器时,升级成功,环境变量已经生效。如图4
    当在 Rancher 中添加环境变量:RMT_MAIN_DOMAIN=dev.xxx.cn ,其值为 dev.xxx.cn 时,升级容器时,升级成功,环境变量已经生效。
    图4
    
    
    // 内容管理系统编辑器
    'scmsEditor' => [
        'hostInfo' => 'https://editor.dev.xxx.cn', // HOME URL
        'baseUrl' => '', // BASE URL
    ],