Fabric浅析----管理多台服务器脚本的实现
2016-03-10 16:25
495 查看
安装 pip install fabric
Fabric的入口是api模块,里面包含了所有供外部调用的模块
命令行可选参数
-f 指定fabfile文件,默认当前目录下的fabfile.py-w warn_only=ture 遇到异常,仅提示不退出,默认fail-fast模式
-H host_string[, ...]
-l 显示当前fabfile的可用方法,即顶级方法; -d 显示指定顶级方法到帮助文档
ENV
dict子类(有一个考虑是方便dict-style interpolation: 比如 '%(name)s %(age)s' % {'name': 'Pual', 'age': 23} )可以指定全局变量
settings 内容管理器,定制局部生效的环境变量:
with settings(**kwarg):
code_block
Execution
指定执行主机,各种方法优先级递减排序
Per-task, command-line host lists (fab mytask:host=host1) override(推翻)absolutely(绝对地) everything else.Per-task, decorator-specified host lists (@hosts('host1')) override the env variables.
Globally specified(规定的) host lists set in the fabfile (env.hosts = ['host1']) canoverride such lists set on the command-line, but only if you’re not careful (or want them to.)
Globally specified host lists set on the command-line (--hosts=host1) willinitialize(初始化) the env variables(变量), but that’s it.
翻译过来就是(优先级递增排序):
命令行 -H host_str, host_str... 效果命令行和env.hosts=[host_str, host_str...]等价,但命令行赋值先解析,意味着后续对env的修改会覆盖它
命令行指定pre_tast hosts; fab task_name:hosts=" host_string[; host_string...]" 会覆盖所有其他目标主机的指定
@hosts([host_str, host_str...]) 装饰器包裹函数,只有命令行的pre_tast hosts能覆盖
多个Task运行顺序:
fab -H host1,host2 task1 task2 顺序是task1@host1,
task1@host2,
task2@host1,
task2@host2
配置分组:
指定服务集群分组上运行不同的任务env.roledefs = { 'testserver': ['host1', 'host2'], 'realserver': ['host3', ] } # env.password 全局密码,一般不适用于集群任务 # env.passwords = { 'host1': "pwdofhost1", 'host2': "pwdofhost2", 'host3': "pwdofhost3", } 我测试时还是让输入密码, anyway,显示写密码也不科学~强烈建议用密钥免密码登录 @roles('testserver') def task1(): run('ls -l | wc -l') @roles('realserver') def task2(): run('ls ~/temp/ | wc -l') def dotask(): execute(task1) execute(task2)
错误处理:
当程序返回非0或python异常时触发默认fail-fast,直接halt
可以设置仅提示错误信息: env.warn_only
颜色
from fabric.colors import blue, redprint blue('this blue msg~')
命令解析:
# 用deploy.py作为fabfile,执行update顶级函数,传入参数a1,a2,指定优先级最高的pre-task,让hosts设置为'web@198.0.1.112;web@198.0.1.113'fab -f deploy.py update:a1,a2,hosts='web@198.0.1.112;web@198.0.1.113' -w
相关文章推荐
- 基于 ANSIBLE 自动化运维实践
- python fabric实现远程操作和部署示例
- Python的自动化部署模块Fabric的安装及使用指南
- Python下Fabric的简单部署方法
- python fabric使用笔记
- 项目部署,环境搭建(pip/ makefile)
- 在Puppet中用ERB模板来自动配置Nginx虚拟主机
- #研发解决方案#iDB-数据库自动化运维平台
- 自动化运维学习--python
- MySQL Fabric
- MySQL Fabric 套件,提供自动故障检测和故障转移
- CheungSSH国产自动化运维工具开源Web界面
- 浅谈开源工具自动化运维阶段
- puppet安装配置及测试
- fabric
- 多服务器管理工具fablinker
- 添加用户的脚本
- [Fabric]Fabric With Nohup 执行方式
- fabric run(sudo)运行不起作用
- 循环渐进Nagios---原理篇(一)Nagios简介