python部署工具fabric
生活随笔
收集整理的這篇文章主要介紹了
python部署工具fabric
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
兩臺機器:10.1.6.186、10.1.6.159。fabric部署在10.1.6.186上面
?
1? 執(zhí)行和1相同的任務,不過排除掉10.1.6.159這臺機器
?
1 #!/usr/bin/python2 from fabric.api import *3 from fabric.context_managers import *4 5 env.hosts=['10.1.6.186','10.1.6.159']6 env.password='xxxxxx'7 env.exclude_hosts=['10.1.6.159']8 9 def task1(): 10 with cd('/home/guol'): 11 run('ls -l')fab task1?
2 執(zhí)行和2相同任務,再增加一個task2,并且把taskN偽裝成meta任務執(zhí)行
#!/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)##執(zhí)行 root@vm11:/tmp# fab deploy3 不同的機器執(zhí)行不同的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) ##執(zhí)行 root@vm11:/tmp# fab deploy4 把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)##執(zhí)行 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-localDone. Disconnecting from 10.1.6.159... done.5 把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)##執(zhí)行 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) ##執(zhí)行 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部署工具fabric的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 获取机器安装.NET版本的几种方式
- 下一篇: 循环的各种形式(不拘一格编程序之四)