动态将环境变量传递给Azure容器实例

时间:2020-07-13 21:45:21

标签: azure environment-variables azure-container-instances

我有一个简单的bash脚本,它创建一个容器并在其中运行任务:

api=${1}

az container create \
--resource-group "my_resource_group" \
--file container.yaml \
--environment-variables "APIKEY"="${api}"

但是变量APIKEY永远不会从此调用中获取值,而是始终从container.yaml中的“默认”值获取。

如何在.yaml中创建具有整个定义的容器实例,并在命令az container create中传递环境变量?

1 个答案:

答案 0 :(得分:1)

以文件形式输入时,不考虑环境变量。

查看cli来源,使用File时,它将仅返回基于文件的创建容器。 https://github.com/Azure/azure-cli/blob/713061e3e4a0fc969b0797ec06bd0e3db49ad4a8/src/azure-cli/azure/cli/command_modules/container/custom.py#L112

您可以做的是,在bash脚本中使用sed来更改container.yaml文件中的APIKey值,然后按原样部署它。

my_str = "abra cadabra"
my_set = set(my_str)
my_set.discard(" ")
my_dict = {}
for key in my_set:
    my_dict[key] = my_str.count(key)
print(my_dict)

PLACEHOLDER_FOR_APIKEY_HERE将替换为命令行参数,并将更新container.yaml文件。

因此该脚本看起来类似于下面的脚本。

sed -i 's/PLACEHOLDER_FOR_APIKEY_HERE/$api/g' container.yaml