snaptastic是一个python工具,用于在aws/ec2 ebs卷上轻松地快照和装载快照。
snaptastic的Python项目详细描述
Snaptastic作者:Mike Ryan&Thierry Schellenbach([mellowmorning.com](http://www.mellowmorning.com/))
——卷
在EC2实例上。
它使用快照标记来确定启动时应使用哪个快照填充卷。
Fashiolista的Syadmin
-Peter van Kampen,Fashiolista的开发人员
![特拉维斯国际](https://secure.travis-ci.org/tschellenbach/snaptastic.png?branch=master"travis ci")
install
----
**pip**
`` python
pip install snaptastic
````
**设置文件**
创建设置文件
**/etc/snaptastic/snaptastic/snaptastic='key'
aws_secret_access_key='secret'
region='eu-west-1'
snaptastic import snapshotter,ebsvolume
class solrsnapshotter(snapshotter):
name='solr'
def get_volumes(self):
volume=ebsvolume('/dev/sdf','/mnt/solr',size=20)
volume s=[volume]
返回volumes
```
**验证**
```python
sudo snaptastic test
sudo snaptastic list volumes solr
```
就是这样,现在可以使用snaptastic了。
tutorial
--
**mount**
``python
snaptastic mount snapshots solr
````
/mnt/solr/helloworld
```
**制作快照**
制作此重要更改的快照的时间
``python
snaptastic make snapshots solr
````
**销毁我们的工作**
``python
`snaptastic unmount snapshots solr
```
检查/mnt/solr/is实际消失了
**从备份还原**
``python
snaptastic mount snapshots solr
````
**更改cronjob的日志级别**
``python
``snaptastic mount snapshots solr--loglevel=warning
``
在装入卷时标记Snaptastic将搜索具有正确标记的快照。
默认情况下,它将查找:
*角色
*群集
*环境
*装入点(建议您不要更改此点)
以将快照唯一标识为应用程序逻辑。
更改使用的标记要适应您的应用程序设置很简单。
只需对snapshotter类进行子类划分并更改get-filter-tags函数。
请看下面的示例:
``python
class customfiltersnapshotter(snapshotter):
name='filter-example'
def获取过滤器标记(self):
'
用于查找要从中加载的正确快照的标记。
除了这些标记外,还始终添加装入点。
使用这些标记来唯一标识基础结构的不同部分
''
标记{
"组":self.userdata['group'],
}
返回标记
````
settings file
----
>有关更多示例,请参见examples.py
snaptastic在sys.path
*/etc/snaptastic settings.py
*/etc/snaptastic/snaptastic_settings.py
hooks
----
snaptastic定义了几个钩子,允许自定义快照行为。
提供以下钩子:
*预安装(自安装,卷):
*后安装(自安装,卷):
*预安装(自安装,卷):
*后装载(self,vol):
*前卸载(self,volumes):
*后_卸载(self,卷):
*卸载前(self,vol):
*卸载后(self,vol):
*快照前(self,卷):
*快照后(self,卷):
*快照前(self,vol):
*快照后(self,vol):
示例
--
>基本卷自定义
`` python
类mysnapshotter(snapshotter):
名称='简单示例'
def get_volumes(self):
卷=[ebsvolume('/dev/sdf1','/mnt/index',size=200)
返回卷
````
自定义筛选标记
``python
类customfiltersnapshotter(snapshotter):
name='filter\u example'
'
用于查找正确标记的标记要从中加载的快照。
除了这些标记之外,还始终添加装入点。
使用这些标记来唯一标识基础结构的不同部分返回标记
```
"mount_point":"/var/lib/postgresql/9.1/main",
"size":200
}
'
"name="userdata"example"
"def get"volumes(self):
volume"dicts=self.userdata["volumes"]
volumes=[]
volume"dicts"中的volume"dict:
volume=ebsvolume(**volume"dict"
volumes.append(volume)
return volumes
```
预装载(self):
导入子流程
子流程。检查输出(['/etc/init.d/postgresql','stop'])
def post装载(self):
导入子流程
修复postgresql目录的权限
子流程。检查输出(['chmod','-r','0700','/var/lib/postgresql'])
子流程。检查输出(
['chown','-r','postgres:postgres','/var/lib/postgresql'])
```
系统
----
在移植旧系统时,通常需要伪造用户数据。
这样做非常简单:
sudo snaptastic make snapshots solr--userdata='{"role":"solr","cluster":"solr","environment":"aws"}'
cronjobs和日志记录
----
更改日志级别非常容易。只需使用--loglevel选项调用任何命令即可。
在内部使用python日志模块。因此,有效的选项是:
调试、信息、警告、错误、关键
对于cronjobs,我建议将其设置为warning
**更改日志级别**
``python
snaptastic mount snapshots solr--loglevel=warning
```
如果需要对日志进行更详细的控制,可以更改python日志模块使用的snaptastic_settings.py中的logging_config
volume对象
----
**基本200GB卷**
``python
ebsvolume('/dev/sdf1','/var/lib/postgresql/9.1/main',200),
```
**现在有IOPS**
``python
ebsvolume('/dev/sdf1','/var/lib/postgresql/9.1/main',200,IOPS=1600),
`````
**现在是ext4**
``python
``ebsvolume('/dev/sdf1','/var/lib/postgresql/9.1/main',200,file-system=filesystems.ext4),
```
todo
---
*集成cleanup scripts
*实例终止后自动终止卷
*跨区域使用的自动检测区域
贡献和项目工作流
看看待办事项,了解还缺少什么。请始终为您的功能/错误添加unittests(如果可能)。
*fab validate(检查pep8和unittests)
*fab publish(如果测试正常,则发布新版本,标记,pypi)
*fab clean(尝试自动清除pep8错误)
运行测试
-
django jobs
-
您是否也看到了clean代码中的美丽之处?你对高扩展性的网络应用有经验吗?
目前,我们正在阿姆斯特丹办事处寻找更多的人才。
如需了解更多信息,请在我的个人电子邮件中留言:thierryschellenbach[at]gmail.com
——卷
在EC2实例上。
它使用快照标记来确定启动时应使用哪个快照填充卷。
Fashiolista的Syadmin
-Peter van Kampen,Fashiolista的开发人员
![特拉维斯国际](https://secure.travis-ci.org/tschellenbach/snaptastic.png?branch=master"travis ci")
install
----
**pip**
`` python
pip install snaptastic
````
**设置文件**
创建设置文件
**/etc/snaptastic/snaptastic/snaptastic='key'
aws_secret_access_key='secret'
region='eu-west-1'
snaptastic import snapshotter,ebsvolume
class solrsnapshotter(snapshotter):
name='solr'
def get_volumes(self):
volume=ebsvolume('/dev/sdf','/mnt/solr',size=20)
volume s=[volume]
返回volumes
```
**验证**
```python
sudo snaptastic test
sudo snaptastic list volumes solr
```
就是这样,现在可以使用snaptastic了。
tutorial
--
**mount**
``python
snaptastic mount snapshots solr
````
/mnt/solr/helloworld
```
**制作快照**
制作此重要更改的快照的时间
``python
snaptastic make snapshots solr
````
**销毁我们的工作**
``python
`snaptastic unmount snapshots solr
```
检查/mnt/solr/is实际消失了
**从备份还原**
``python
snaptastic mount snapshots solr
````
**更改cronjob的日志级别**
``python
``snaptastic mount snapshots solr--loglevel=warning
``
在装入卷时标记Snaptastic将搜索具有正确标记的快照。
默认情况下,它将查找:
*角色
*群集
*环境
*装入点(建议您不要更改此点)
以将快照唯一标识为应用程序逻辑。
更改使用的标记要适应您的应用程序设置很简单。
只需对snapshotter类进行子类划分并更改get-filter-tags函数。
请看下面的示例:
``python
class customfiltersnapshotter(snapshotter):
name='filter-example'
def获取过滤器标记(self):
'
用于查找要从中加载的正确快照的标记。
除了这些标记外,还始终添加装入点。
使用这些标记来唯一标识基础结构的不同部分
''
标记{
"组":self.userdata['group'],
}
返回标记
````
settings file
----
>有关更多示例,请参见examples.py
snaptastic在sys.path
*/etc/snaptastic settings.py
*/etc/snaptastic/snaptastic_settings.py
hooks
----
snaptastic定义了几个钩子,允许自定义快照行为。
提供以下钩子:
*预安装(自安装,卷):
*后安装(自安装,卷):
*预安装(自安装,卷):
*后装载(self,vol):
*前卸载(self,volumes):
*后_卸载(self,卷):
*卸载前(self,vol):
*卸载后(self,vol):
*快照前(self,卷):
*快照后(self,卷):
*快照前(self,vol):
*快照后(self,vol):
示例
--
>基本卷自定义
`` python
类mysnapshotter(snapshotter):
名称='简单示例'
def get_volumes(self):
卷=[ebsvolume('/dev/sdf1','/mnt/index',size=200)
返回卷
````
自定义筛选标记
``python
类customfiltersnapshotter(snapshotter):
name='filter\u example'
用于查找正确标记的标记要从中加载的快照。
除了这些标记之外,还始终添加装入点。
使用这些标记来唯一标识基础结构的不同部分返回标记
```
"mount_point":"/var/lib/postgresql/9.1/main",
"size":200
}
'
"name="userdata"example"
"def get"volumes(self):
volume"dicts=self.userdata["volumes"]
volumes=[]
volume"dicts"中的volume"dict:
volume=ebsvolume(**volume"dict"
volumes.append(volume)
return volumes
```
预装载(self):
导入子流程
子流程。检查输出(['/etc/init.d/postgresql','stop'])
def post装载(self):
导入子流程
修复postgresql目录的权限
子流程。检查输出(['chmod','-r','0700','/var/lib/postgresql'])
子流程。检查输出(
['chown','-r','postgres:postgres','/var/lib/postgresql'])
```
系统
----
在移植旧系统时,通常需要伪造用户数据。
这样做非常简单:
sudo snaptastic make snapshots solr--userdata='{"role":"solr","cluster":"solr","environment":"aws"}'
cronjobs和日志记录
----
更改日志级别非常容易。只需使用--loglevel选项调用任何命令即可。
在内部使用python日志模块。因此,有效的选项是:
调试、信息、警告、错误、关键
对于cronjobs,我建议将其设置为warning
**更改日志级别**
``python
snaptastic mount snapshots solr--loglevel=warning
```
如果需要对日志进行更详细的控制,可以更改python日志模块使用的snaptastic_settings.py中的logging_config
volume对象
----
**基本200GB卷**
``python
ebsvolume('/dev/sdf1','/var/lib/postgresql/9.1/main',200),
```
**现在有IOPS**
``python
ebsvolume('/dev/sdf1','/var/lib/postgresql/9.1/main',200,IOPS=1600),
`````
**现在是ext4**
``python
``ebsvolume('/dev/sdf1','/var/lib/postgresql/9.1/main',200,file-system=filesystems.ext4),
```
todo
---
*集成cleanup scripts
*实例终止后自动终止卷
*跨区域使用的自动检测区域
贡献和项目工作流
看看待办事项,了解还缺少什么。请始终为您的功能/错误添加unittests(如果可能)。
*fab validate(检查pep8和unittests)
*fab publish(如果测试正常,则发布新版本,标记,pypi)
*fab clean(尝试自动清除pep8错误)
运行测试
-
django jobs
-
您是否也看到了clean代码中的美丽之处?你对高扩展性的网络应用有经验吗?
目前,我们正在阿姆斯特丹办事处寻找更多的人才。
如需了解更多信息,请在我的个人电子邮件中留言:thierryschellenbach[at]gmail.com