如何在托管实例组级别的VM上设置环境变量

问题描述 投票:3回答:1

我们正在使用queue based managed instance scaling。我们需要通过实例组在VM上设置环境变量(以便可以使用相同的VM映像来订阅不同实例组中的不同队列)。我在创建实例组时没有看到定义环境变量的选项。

有没有办法在多个实例组中使用相同的映像,并且仍然可以根据实例组级别的不同环境变量或其他方式实现不同的VM行为?

示例:使用相同的VM映像创建2个托管实例组。一个将环境变量'queue-name'设置为'queue-1',另一个将'queue-name'设置为'queue-2'。部署到第一个实例组中的VM的应用程序从pub / sub队列'queue-1'中提取任务,而在其他组中从'queue-1'中提取任务。

google-cloud-platform google-compute-engine google-kubernetes-engine
1个回答
2
投票

使用两个模板相同的VM映像

为了创建具有相同VM行为的两个实例组,您可以使用两个不同的instance templates

通过这种方式,您将能够更改网络配置,启动和关闭脚本或元数据。

例如,您可以使用startup script来设置不同的环境变量,并以这种方式连接到一个。堡垒的例子像here

使用相同的模板相同的VM映像

另一方面,如果你不能使用两个不同的模板,我会建议一个小的黑客,但我想有几种方法可以做到这一点。

正如您所注意到的那样,没有直接的方法(因为有可能在模板创建中进行自定义)。

我将在启动脚本中添加一小部分代码,这些代码利用gcloud命令了解哪个是它所属的实例组的名称,并以此信息为基础以不同的方式设置环境变量。

通过这种方式,您只需要遵循命名实例的某种模式,但我相信您可以找到更优雅的解决方案。

或者您甚至可以根据机器的主机名做出决定(但我更喜欢这种解决方案)。

© www.soinside.com 2019 - 2024. All rights reserved.