gcloud compute instances add-metadata设置环境变量

时间:2014-12-05 17:03:10

标签: metadata startup gcloud

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

gcloud compute instances add-metadata server-1 --metadata-from-file file =〜/ meta.sh

,脚本是

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

当我重新启动服务器时似乎什么都不做

2 个答案:

答案 0 :(得分:1)

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

为了对'file'执行某些操作,您需要从实例(server-1)读取其值并对其执行操作。在实例生命周期的某些时间,计算引擎使用一些特殊的元数据键。例如,'startup-script'是在启动期间读取和执行的密钥。我想你打算用这个键。所以,试试这个:

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

答案 1 :(得分:0)

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。

或者,在 this SO answer 中,描述了如何让用户 curl 直接从元数据中获取 env-var,但我还没有深入研究。