【问题标题】:Google cloud SDK code to execute via cron谷歌云 SDK 代码通过 cron 执行
【发布时间】:2015-06-13 21:15:08
【问题描述】:

我正在尝试实现一个自动化代码,以通过 Crontab 在我的 Google Cloud 帐户中关闭和启动 VM 实例。操作系统是 Ubuntu 12 lts,并安装了 Google 服务帐户,因此它可以处理我的 Google 云帐户上的读/写。

我的实际代码在这个文件/home/ubu12lts/cronfiles/resetvm.sh中

#!/bin/bash
echo Y | gcloud compute instances stop my-vm-name --zone us-central1-a
sleep 120s
gcloud compute instances start my-vm-name --zone us-central1-a
echo "completed"

当我这样调用上述文件时,

$ bash /home/ubu12lts/cronfiles/resetvm.sh

它完美地工作并且完成了工作。

现在我想在 cron 中设置它,让它每小时自动执行一次。所以我做到了

$ sudo crontab -e

并在 cron 中添加了这段代码

0 * * * *  /bin/sh /home/ubu12lts/cronfiles/resetvm.sh >>/home/ubu12lts/cron.log

并使脚本可执行

chmod +x /home/ubu12lts/cronfiles/resetvm.sh

我还通过添加带有示例消息的创建 .txt 文件的示例命令来测试 crontab,它运行良好。

但是上面的 gcloud SDK 代码不能通过 cron 运行。在我的 GC 计算引擎中,VM 既不会停止也不会启动。

有人可以帮忙吗?

非常感谢。

【问题讨论】:

    标签: cron google-cloud-platform gcloud


    【解决方案1】:

    您已将条目添加到 root 的 crontab,而您的 Cloud SDK 安装是为其他用户设置的(我猜是 ubu121lts)。

    您应该使用以下命令在 ubu121lts 的 crontab 中添加条目:

    crontab -u ubu121lts -e
    

    此外,您的条目目前计划在每小时的第 0 分钟运行。这是你的本意吗?

    【讨论】:

    • 顺便说一下,Gclcoud 会在 $HOME/.config/gcloud 下的文件中查找您缓存的凭据以及存储的属性(例如项目),并且 gcloud 有时会在未设置 $HOME 的情况下运行。您可能需要在脚本中设置 $HOME 以进行补偿,或者使用 $GCLOUD_CONFIG 来选择完全不同的配置目录以供脚本使用。)
    • 感谢您的尝试。是的,我也没有运气在 ubu12ots 用户中添加了相同的 cron。是的,我希望它每小时运行第 0 分钟。
    • 能否请您查看 cron 日志,看看是否有任何错误?
    【解决方案2】:

    我之前也遇到过类似的问题。我通过在我的 script.sh 中强制配置文件来修复它,并用它加载 gcloud 环境变量。下面的例子:

    #!/bin/bash

    来源 /etc/profile

    回声 Y | gcloud 计算实例停止 my-vm-name --zone us-central1-a sleep 120s gcloud 计算实例启动 my-vm-name --zone us-central1-a echo "完成"

    这也帮助我调整了 GKE 中的节点数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-24
      • 2021-10-12
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 2017-01-27
      • 2020-06-23
      • 1970-01-01
      相关资源
      最近更新 更多