0

我正在尝试从添加到实例元数据的脚本中设置环境变量。我使用以下命令从文件中添加了元数据:

gcloud 计算实例 add-metadata server-1 --metadata-from-file file=~/meta.sh

脚本是

 #!/bin/sh
 export SERVER="ide"

当我重新启动服务器时似乎什么也没做

4

2 回答 2

1

--metadata-from-file 标志从指定文件中读取指定元数据键的值。在您的示例中,您将 ~/meta.sh 的内容分配为元数据数据键“文件”的值。

为了对“文件”做一些事情,您需要从实例(server-1)中读取它的值并对其进行操作。在实例生命周期的特定时间,计算引擎会使用一些特殊的元数据键。例如,“启动脚本”是在启动期间读取和执行的密钥。我想你打算使用这把钥匙。所以,试试这个:

gcloud compute instances add-metadata "server-1" --metadata-from-file startup-script=~/meta.sh

有关元数据使用的更多详细信息,请运行:

gcloud compute instances add-metadata --help

或去这里:

https://cloud.google.com/compute/docs/metadata

于 2014-12-05T17:56:18.487 回答
1

6岁的问题,但供自己和他人将来参考:

在启动脚本中设置环境变量似乎不起作用,但您可以将它们写入您的.bashrc- 在我的示例中,我将它们设置为:

gcloud compute instances add-metadata etl-pipelines --metadata startup-script='#! /bin/bash
echo "
export USER='${USER}'
export PASSWORD='${PASSWORD}'
" >> /home/USERNAME/.bashrc

更好的方法当然是检查该字符串是否已经插入到 VM 中,但这对我来说无关紧要,因为无论如何我都会很快杀死 VM。

或者,在这个 SO answer中,描述了如何让用户curl直接从元数据中获取环境变量,但我还没有进一步研究它。

于 2021-04-21T10:17:36.587 回答