Python fabric实践操作
2016-06-15 00:00
441 查看
前面学习了理论,下面该练练手了。
两台机器:10.1.6.186、10.1.6.159。
fabric部署在10.1.6.186上面
。
1 执行一个简单的task任务,显示两台机器的/home/guol/目录下的文件
/home/guol/目录下
把186的/home/guol/
186-local推送到159的
/home/guol/目录下
两台机器:10.1.6.186、10.1.6.159。
fabric部署在10.1.6.186上面
。
1 执行一个简单的task任务,显示两台机器的/home/guol/目录下的文件
#!/usr/bin/python from fabric.api import * from fabric.context_managers import * env.hosts=['10.1.6.186','10.1.6.159'] env.password='xxxxxx' def task1(): with cd('/home/guol'): run('ls -l') ##结果 root@vm11:/tmp# fab task1 [10.1.6.186] Executing task 'task1' [10.1.6.186] run: ls -l [10.1.6.186] out: total 0 [10.1.6.186] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 186-local [10.1.6.186] out: [10.1.6.159] Executing task 'task1' [10.1.6.159] run: ls -l [10.1.6.159] out: total 0 [10.1.6.159] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 159-remote [10.1.6.159] out: Done. Disconnecting from 10.1.6.159... done. Disconnecting from 10.1.6.186... done.2 执行和1相同的任务,不过排除掉10.1.6.159这台机器
#!/usr/bin/python from fabric.api import * from fabric.context_managers import * env.hosts=['10.1.6.186','10.1.6.159'] env.password='xxxxxx' env.exclude_hosts=['10.1.6.159'] def task1(): with cd('/home/guol'): run('ls -l') ##执行 root@vm11:/tmp# fab task1 [10.1.6.186] Executing task 'task1' [10.1.6.186] run: ls -l [10.1.6.186] out: total 0 [10.1.6.186] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 186-local [10.1.6.186] out: Done. Disconnecting from 10.1.6.186... done.3 执行和2相同任务,再增加一个task2,并且把taskN伪装成meta任务执行
#!/usr/bin/python from fabric.api import * from fabric.colors import * from fabric.context_managers import * env.hosts=['10.1.6.186','10.1.6.159'] env.password='xxxxxx' env.exclude_hosts=['10.1.6.159'] def task1(): with cd('/home/guol'): run('ls -l') def task2(): print(green("I'm fabric")) def deploy(): execute(task1) execute(task2) ##执行 root@vm11:/tmp# fab deploy [10.1.6.186] Executing task 'deploy' [10.1.6.186] Executing task 'task1' [10.1.6.186] run: ls -l [10.1.6.186] out: total 0 [10.1.6.186] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 186-local [10.1.6.186] out: [10.1.6.186] Executing task 'task2' I'm fabric Done. Disconnecting from 10.1.6.186... done.4 不同的机器执行不同的task
#!/usr/bin/python from fabric.api import * from fabric.colors import * from fabric.context_managers import * env.roledefs={'web1':['10.1.6.186'],'web2':['10.1.6.159']} env.password='xxxxxx' @roles('web1') def task1(): with cd('/home/guol'): run('ls -l') @roles('web2') def task2(): print(green("I'm fabric")) def deploy(): execute(task1) execute(task2) ##执行 root@vm11:/tmp# fab deploy [10.1.6.186] Executing task 'task1' [10.1.6.186] run: ls -l [10.1.6.186] out: total 0 [10.1.6.186] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 186-local [10.1.6.186] out: [10.1.6.159] Executing task 'task2' I'm fabric Done. Disconnecting from 10.1.6.186... done.5 把159的/home/guol/159-remote拉取到186的
/home/guol/目录下
#!/usr/bin/python from fabric.api import * from fabric.colors import * from fabric.context_managers import * env.hosts=['10.1.6.159'] env.password='xxxxxx' def task1(): print(green("I'm 186 /home/guol/")) local('ls -l /home/guol') def task2(): print(green("I'm get 159's 159-remote file to 186")) get('/home/guol/159-remote','/home/guol') print(yellow("I'm 186 /home/guol/")) local('ls -l /home/guol') def deploy(): execute(task1) execute(task2) ##执行 root@vm11:/tmp# fab deploy [10.1.6.159] Executing task 'deploy' [10.1.6.159] Executing task 'task1' I'm 186 /home/guol/ [localhost] local: ls -l /home/guol total 0 -rw-r--r-- 1 root root 0 Dec 21 13:32 186-local [10.1.6.159] Executing task 'task2' I'm get 159's 159-remote file to 186 [10.1.6.159] download: /home/guol/159-remote <- /home/guol/159-remote I'm 186 /home/guol/ [localhost] local: ls -l /home/guol total 0 -rw-r--r-- 1 root root 0 Dec 21 14:28 159-remote -rw-r--r-- 1 root root 0 Dec 21 13:32 186-local Done. Disconnecting from 10.1.6.159... done.6
把186的/home/guol/
186-local推送到159的
/home/guol/目录下
#!/usr/bin/python from fabric.api import * from fabric.colors import * from fabric.context_managers import * env.hosts=['10.1.6.159'] env.password='xxxxxx' def task1(): print(green("I'm 159 /home/guol/")) with cd('/home/guol'): run('ls -l') def task2(): print(green("I'm put 186's 186-local file to 159")) put('/home/guol/186-local','/home/guol') print(yellow("I'm 159 /home/guol/")) with cd('/home/guol'): run('ls -l') def deploy(): execute(task1) execute(task2) ##执行 root@vm11:/tmp# fab deploy [10.1.6.159] Executing task 'deploy' [10.1.6.159] Executing task 'task1' I'm 159 /home/guol/ [10.1.6.159] run: ls -l [10.1.6.159] out: total 0 [10.1.6.159] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 159-remote [10.1.6.159] out: [10.1.6.159] Executing task 'task2' I'm put 186's 186-local file to 159 [10.1.6.159] put: /home/guol/186-local -> /home/guol/186-local I'm 159 /home/guol/ [10.1.6.159] run: ls -l [10.1.6.159] out: total 0 [10.1.6.159] out: -rw-r--r-- 1 root root 0 Dec 21 13:32 159-remote [10.1.6.159] out: -rw-r--r-- 1 root root 0 Dec 21 14:33 186-local [10.1.6.159] out: Done. Disconnecting from 10.1.6.159... done.7 在186上打开一个159的交互式的shell
#!/usr/bin/python from fabric.api import * from fabric.colors import * from fabric.context_managers import * env.hosts=['10.1.6.159'] env.password='xxxxxx' def task3(): open_shell("ifconfig eth0|grep '10.1.6.159'") def deploy(): execute(task3) ##执行 root@vm11:/tmp# fab deploy [10.1.6.159] Executing task 'deploy' [10.1.6.159] Executing task 'task3' Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic x86_64) Last login: Fri Dec 21 14:39:39 2012 from 10.1.6.186 ifconfig eth0|grep '10.1.6.159' root@vm12:~# ifconfig eth0|grep '10.1.6.159' inet addr:10.1.6.159 Bcast:10.1.6.255 Mask:255.255.255.0
相关文章推荐
- python自定义模块导入方法
- Python fabric远程自动部署简介
- python列表 数组 字典
- 由PYTHONPATH谈起
- Python类、模块、包
- Python if 和 for 的多种写法
- 从Theano到Lasagne:基于Python的深度学习的框架和库
- python继承中的变量
- python使用Visual Studio 2015作为IDE开发django项目的环境部署
- 设计模式之策略模式
- python web cgi
- python 类变量和对象变量的区别联系-----类的基础(二)
- python类的继承--------类的基础(四)
- Python中open函数注意点
- 《笨办法学Python》完结报告
- Python 打印执行错误行数
- Python:判断一个字典里面key是否存在
- Python序列——序列操作
- [python]生成器
- python中type和instance