备份我的GCE实例

时间:2015-01-06 10:47:31

标签: cron backup google-compute-engine

我发现我要做的事情很难,我只是一定要把它弄错了。

我的Compute实例只有root持久性磁盘。我刚刚运行了一个小的Wordpress服务器(nginx + php +本地mysql),所以我还没有添加任何外部组件。现在,这一切都是自成一体的。

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

我有一个shell脚本,它使用gcutil拍摄快照并旋转备份。当我SSH到我的实例时,这个脚本工作正常。现在我只想让它作为CRON工作运行。当我为登录的SSH用户创建crontab时,作业将运行。但是我想让这个工作用完/etc/cron.daily - 它以root身份运行。当cron开始时,它最终失败了:

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

当我sudo into root并尝试gcloud auth登录时,它警告我应该使用服务帐户。我已经尝试将gcloud配置帐户设置为自动创建的服务帐户,并且我也尝试过创建新的服务帐户。这些都不起作用 - 我不断收到验证错误。有很多文档说这个点点滴滴 - 足以让它看起来像拼图可以放在一起但我发现的一切都太模糊了,不能简单地告诉我如何创建和/或使用服务帐户来调用来自CRON工作的GCE。

我简直无法相信这一点 - 我是一个非常精明的技术人员。我只是试图以错误的方式使用GCE吗?

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

显然,我有一个很大的学习曲线要​​经过这里。

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

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

2-我不是以谷歌的方式做这件事还是错过了什么?

2 个答案:

答案 0 :(得分:1)

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

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

gcloud compute instances create - create --scopes compute-rw

答案 1 :(得分:0)

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