fabric/ fabfile.py host.sh host.list test.py check.py user.py middleware.py os.py tmp.py
$ echo |fab -l $ host.sh host.list -t XXXX $ host.sh host.list hostlist.XXXX |fab test.hostname $ host.sh host.list XXXX |fab -- COMMAND $ host.sh host.list XXXX |fab -- uptime $ host.sh host.list XXXX |fab -- uptime |grep load $ host.sh host.list XXXX |fab -- uptime |grep load > tmp.txt $ host.sh host.list XXXX |fab -- uptime |grep load tee tmp.txt $ host.sh host.list XXXX |fab -- uptime |grep load 2>&1 | tee tmp.txt $ echo xx.xx.xx.xx |fab -- uptime
import sys from fabric.api import * from fabric.contrib import files env.warn_only = True @task def production(): env.user = 'USER01' env.key_filename = '~/.ssh/id_rsa_production' env.password = 'passphrase-for-key' @task def staging(): env.port = 22 env.user = 'USER01' env.password = 'PASSWORD' @task def develop(): env.port = 22 env.user = 'USER02' env.key_filename = '~/.ssh/id_rsa_develop' env.password = 'passphrase-for-key' lines = sys.stdin.read().splitlines() env.hosts = filter(bool, lines) print "target hosts: %r" % env.hosts import test import user import middleware import os
#!/bin/sh LIST=$1 case "$2" in -t | --test ) cat "${LIST}" |grep -Ev "^#|^$" |grep "$3" ;; -a | --all ) cat "${LIST}" |grep -Ev "^#|^$" |awk '{print $2'} ;; * ) cat "${LIST}" |grep -Ev "^#|^$" |grep "$2" |awk '{print $2'} ;; esac
#test test-web1 test-web reboot1 test-web2 test-web reboot1 test-db1 test-db reboot2 test-db2 test-db reboot2 #Example example-web2 example-web reboot2 example-web2 example-web reboot4
DNS or /etc/hosts
#test 192.168.0.1 test-web1 192.168.0.2 test-web2 192.168.0.3 test-db1 192.168.0.4 test-db2 #Example 192.168.1.1 example-web2 192.168.1.2 example-web2
#!/bin/sh LIST=$1 for i in `cat $1 |grep -Ev "^#|^$"` do echo $i ping -i 0.5 -c 2 $i done exit
import sys from fabric.api import * from fabric.contrib import files @task def test1(): '''hostname , whoami test3''' run('hostname') run('whoami') test3() @task def test2(): '''uptime''' run('uptime') @task def test3(): '''test3''' run('echo test3') @task def sudotest(): '''sudo test''' sudo('cat /etc/passwd')
import sys from fabric.api import * from fabric.contrib import files env.warn_only = True @task def check_ping(): run('ping -i 0.1 -c 3 xx.xx.xx.xx') @task def check_user(): '''check user''' run('/usr/bin/id user01 > /dev/null 2>&1 || echo "ERR : there isn\'t user01. "') run('/usr/bin/id user02 > /dev/null 2>&1 || echo "ERR : there isn\'t user02. "') run('/usr/bin/id user03 > /dev/null 2>&1 || echo "ERR : there isn\'t user03. "')