我正在尝试从添加到实例元数据的脚本中设置环境变量。我使用以下命令从文件中添加了元数据:
gcloud compute instances add-metadata server-1 --metadata-from-file file =〜/ meta.sh
,脚本是
#!/bin/sh
export SERVER="ide"
当我重新启动服务器时似乎什么都不做
答案 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
或者去这里:
答案 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,但我还没有深入研究。