【问题标题】:Backing up my GCE instance备份我的 GCE 实例
【发布时间】:2015-01-08 00:36:41
【问题描述】:

我发现我想做的事情太难了,我肯定做错了。

我有一个只有根永久磁盘的 Compute 实例。我只是在上面运行了一个小的 Wordpress 服务器(nginx+php+local mysql),所以我没有添加任何外部组件。目前这一切都是自给自足的。

现在我只想运行此实例的定期备份。我了解到这是通过快照完成的,我什至对此进行了测试并使用快照启动了一个新实例。有道理——现在我只需要自动化它。

我有一个使用 gcutil 拍摄快照和轮换备份的 shell 脚本。当我通过 SSH 连接到我的实例时,该脚本运行良好。现在我只想让它作为 CRON 作业运行。当我为登录的 SSH 用户创建一个 crontab 时,该作业将运行。但我想让工作用完 /etc/cron.daily - 它以 root 身份运行。当 cron 启动时,它最终会失败:

You are not currently logged in. To authenticate, run
$ gcloud auth login

当我 sudo 进入 root 并尝试 gcloud auth 登录时,它警告我应该使用服务帐户。我已经尝试将 gcloud config set account 设置为自动创建的服务帐户,并且我也尝试创建新的服务帐户。这些都不起作用-我不断收到身份验证错误。有很多文档对此进行了说明-足以使它看起来像拼图一样可以拼凑在一起,但是我发现的所有内容都太模糊了,无法简单地告诉我如何创建和/或使用服务帐户来调用 GCE一个 CRON 作业。

我简直不敢相信它这么难 - 我是一个非常精明的技术人员。我只是想以错误的方式使用 GCE 吗?

最后我所做的只是忽略了警告并验证到我从 root 登录的帐户中。 CRON 作业现在将运行,但我不确定此登录的持久性如何。是永久的吗?或者它会超时并且备份开始失败?我确实让它发送电子邮件警报,所以至少我会知道它是否失败。

很明显,我有一个很大的学习曲线要​​经历。

这就是积累-基本上我有两个问题:

1- 任何指向在 shell 脚本/CRON 作业中通过命令行工具创建和/或使用服务帐户的显式步骤的指针?

2- 我是不是按照 Google 的方式来做,还是在这里遗漏了什么?

【问题讨论】:

    标签: cron backup google-compute-engine


    【解决方案1】:

    要使用 gcloud 命令,您需要授权访问。您可以通过使用服务帐户来执行此操作,或者您需要运行 gcloud auth login 命令来授权当前用户帐户运行 gcloud 命令。当您通过运行 gcloud auth login 在您的 linux 机器上授权用户时,它会在主目录 .config/gcloud/credentials 中创建一个授权文件,该文件具有该用户的 OAuth 凭据。这些凭据会自动刷新,除非凭据被删除或由于某种原因自动刷新失败。因此,以 root 身份运行此命令已授权您的 root 帐户运行 gcloud 命令并且您的脚本正在运行。

    您可以通过创建一个服务帐户范围设置为计算引擎读/写的实例来实现您的设置。有关服务帐户范围的更多信息,您可以visit。一旦你这样做了,该实例上的所有用户将能够运行 gcloud compute 命令而无需授权。以下命令将帮助您创建一个实例,其中计算引擎的服务帐户范围设置为读写,您可以在此link 上找到更多信息:

    gcloud 计算实例创建 - 创建 --scopes compute-rw

    【讨论】:

      【解决方案2】:

      服务帐户是要走的路。我对 cron 有同样的问题。从服务帐户下载 pk12 文件并使用 gcloud 命令以 root 身份安装,这应该会有所帮助。 Activate Service Account from GCloud

      【讨论】:

        猜你喜欢
        • 2021-04-09
        • 1970-01-01
        • 1970-01-01
        • 2017-11-20
        • 2014-09-14
        • 1970-01-01
        • 1970-01-01
        • 2012-07-04
        • 1970-01-01
        相关资源
        最近更新 更多