【问题标题】:Startup script failed execution on a google instance启动脚本在谷歌实例上执行失败
【发布时间】:2018-09-11 22:34:16
【问题描述】:

我有一个启动脚本,用于安装 python 并将文件从谷歌存储桶导入虚拟机。当我保持我的启动脚本如下:

‘#! /bin/bash
gsutil cp gs://bucket/file /homedirectory'

成功执行。但是当我添加

'curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py --user
pip install pandas --user
pip install scipy --user
pip install scikit-learn --user
pip install sklearn —user
pip install matplotlib --user'

到脚本,它不执行脚本。我的完整命令如下

gcloud compute instances create instance2  \
--metadata startup-script='#! /bin/bash
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py --user
pip install pandas --user
pip install scipy --user
pip install scikit-learn --user
pip install sklearn —user
pip install matplotlib --user
gsutil cp gs://bucket/file /homedirectory'

抱歉,我最近开始使用启动脚本,但对它们仍然不熟悉。

【问题讨论】:

    标签: python pip google-cloud-platform google-compute-engine gcloud


    【解决方案1】:

    您在这一行有一个em dash

    pip install sklearn —user
    

    应该是:

    pip install sklearn --user
    

    否则,在尝试像这样运行启动脚本时,这将导致异常:

    Traceback (most recent call last):
      File "/usr/bin/google_metadata_script_runner", line 11, in <module>
        load_entry_point('google-compute-engine==2.8.3', 'console_scripts', 'google_metadata_script_runner')()
      File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_manager.py", line 109, in main
        debug=bool(options.debug))
      File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_manager.py", line 69, in __init__
        self._RunScripts(run_dir=run_dir)
      File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_manager.py", line 80, in _RunScripts
        script_dict = self.retriever.GetScripts(dest_dir)
      File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_retriever.py", line 213, in GetScripts
        return (self._GetAttributeScripts(instance_data, dest_dir) or
      File "/usr/lib/python2.7/dist-packages/google_compute_engine/metadata_scripts/script_retriever.py", line 179, in _GetAttributeScripts
        dest.write(metadata_value.lstrip())
    UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 201: ordinal not in range(128)
    

    您可以通过导航到以下位置查看启动脚本的日志:

    Compute Engine >(您的实例名称)> 日志 > 串行端口 1(控制台)

    【讨论】:

    • 为了调试启动脚本,在实例上重新运行它通常很方便:cloud.google.com/compute/docs/startupscript#rerunthescript
    • 大家好,谢谢大家。当我在云 shell 上复制命令时,我实际上删除了 em dash。当我重新运行脚本时,它可以工作。但除此之外,它只适用于我尝试运行上述命令的前 3-4 次。
    猜你喜欢
    • 2018-04-29
    • 1970-01-01
    • 2021-03-18
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2021-09-15
    相关资源
    最近更新 更多