数码自动化服务
goutte的Python项目详细描述
圆凿
DigitalOcean没有提出任何自动化快照的方法。 有some SaaS可以处理它,但是花钱执行一些api请求似乎有点麻烦。
这就是为什么我们开发了一个简单的脚本,可以与cron作业一起运行,也可以免费在travis这样的ci服务中运行。 我们每天都用它来管理our backups。
它包括:
- 捕捉水滴
- 快照卷
- 保留政策
- 修剪快照
要求
- Python^3.6
- 数字海洋账户
安装
直接从pip安装:
pip3 install --user goutte
配置文件
goutte从一个非常简单的toml文件中获取它的配置。
我们在goutte.example.toml
中提供并举例说明。
retention=10# Number of backups to keep per droplet/volume[droplets]names=[# Array of droplets you want to snapshot'server01','server02','server03',][volumes]names=[# Array of volumes you want to snapshot'db01','redis01','redis02',]
用法
goutte有两个参数,也可以通过环境变量设置:
# | Help | Description | Environment variable |
---|---|---|---|
1 | CONFIG | Path to the toml configuration file | ^{ |
2 | DO_TOKEN | Your DigitalOcean API token | ^{ |
Usage: goutte [OPTIONS] CONFIG DO_TOKEN DigitalOcean snapshots automation. Options: --only [snapshot|prune] Only snapshot or only prune --debug Enable debug logging --version Show the version and exit. --help Show this message and exit.
为包含一个液滴和一个卷的配置文件运行“仅快照”:
$ goutte goutte.toml $do_token --only snapshot 13:32:48 - INFO - Starting goutte v1.0.1 13:32:52 - INFO - sgp1-website-01 - Snapshot (goutte-sgp1-website-01-20181220-56bde)13:32:59 - INFO - sgp1-mariadb-01 - Snapshot (goutte-sgp1-mariadb-01-20181220-3673d)
与Docker一起运行
我们有一个Docker图像可以在Docker Hub上使用。
默认情况下,它将读取/goutte/goutte.toml
docker run \ -e GOUTTE_DO_TOKEN=${do_token}\ -v $(pwd)/goutte.toml:/goutte/goutte.toml \ tomochain:goutte
使用Travis实现自动化
您可以通过cron作业轻松实现自动化,但最简单的方法是利用travis这样的免费ci工具。
- 您可以创建一个包含您的
goutte.toml
配置和以下travis文件.travis.yml
:
language: python python: 3.6 install: - pip install goutte script: - goutte goutte.toml # Don't forget to set GOUTTE_DO_TOKEN in Travis config
- 在Travis中启用回购,然后转到配置
- 使用digitalocean api key的值添加环境变量goutte_do_token
- 启用每日cron作业
- 你可以走了,古特每天都会跑,负责拍照。
注意:通过使用多个配置,可以对不同的卷使用不同的保留。
# ... script: - goutte 10days.toml - goutte 1day.toml
你可以看到我们是如何为自己设置的。