Chia Sẽ Kinh Nghiệm Về IT



Tìm Kiếm Với Google
-


Gởi Ðề Tài Mới  Gửi trả lời
 
Công Cụ Xếp Bài
Tuổi 28-08-2015, 03:56 PM   #1
hoctinhoc
Guest
 
Trả Lời: n/a
Fabric – Giúp Sys admin quản lý hệ thống một cách dễ dàng.
Fabric – Giúp Sys admin quản lý hệ thống một cách dễ dàng.


Tham khảo: http://azsysadmin.com/fabric-giup-sys-admin-quan-ly-thong-mot-cach-de-dang/


Làm thế nào các bạn có thể tự động hóa công việc của mình giúp các bạn có nhiều thời gian để làm việc khác hay nghiên cứu tìm hiểu những công nghệ mới.
Tôi sẽ giới thiệu cho các bạn một công cụ, nói đúng hơn đó là một thư viện python giúp các bạn có thể thực thi script và quản lý các server một cách dễ dàng nhất.
Vì sao nó lại cần trong khi ở ngoài kia có hàng tá những công cụ quản lý như ansible, puppet , chef …
1. Đơn giản, nếu bạn cần một cái gì đó nhanh gọn lẹ, thì đây là sự lựa chọn tốt nhất.
2. Nếu các bạn thích tự làm ra những script quản lý, thích tự mình làm ra một thứ gì đó mà không sử dụng của những người khác thì đây là một thư viện để các bạn dùng để thực hiện.
Tôi thường dùng fabric để chạy command bash shell.
Và thêm một câu hỏi nữa
Tại sao không dùng bash shell để chạy ssh mà dùng fabric làm gì ?
Câu trả lời đối với tôi:
– Out put nó rõ ràng hơn, đẹp hơn.
– Thích code python hơn bash shell.
Fabric còn những cái hay ho khác, chạy song song các task với nhau. Phân chia role cho từng server …
Thật ra thì bash shell có thể làm được, nhưng bạn phải xử lý rất nhiều.
Vấn đề sử dụng gì không quan trọng vấn đề các bạn có thể làm cho nhanh gọn lẹ là được. Với tôi thì thì chọn Fabric.
Install Fabric:
Để install fabric thì yêu cầu Python từ version 2.5 trở lên:
1. Upgrade Python
wget http://www.python.org/ftp/python/2.7...-2.7.3.tar.bz2 tar xf Python-2.7.3.tar.bz2 cd Python-2.7.3 ./configure --prefix=/usr/local make && make altinstall
1
2
3
4
5

wget http://www.python.org/ftp/python/2.7...-2.7.3.tar.bz2
tar xf Python-2.7.3.tar.bz2
cd Python-2.7.3
./configure --prefix=/usr/local
make && make altinstall





Lưu ý:
Check python đang sử dụng version nào
python -V
Nếu vẫn sử dụng tạo soft link:
python -> /usr/local/bin/python2.7
2. setuptools-0.6c11.tar.gz
tar fx setuptools-0.6c11.tar.gz cd setuptools-0.6c11 python setup.py install
1
2
3

tar fx setuptools-0.6c11.tar.gz
cd setuptools-0.6c11
python setup.py install



3. paramiko-1.9.0
tar fx paramiko-1.9.0.tar.gz cd paramiko-1.9.0 python setup.py install
1
2
3

tar fx paramiko-1.9.0.tar.gz
cd paramiko-1.9.0
python setup.py install



4. pycrypto-2.6.tar.gz
tar fx pycrypto-2.6.tar.gz cd pycrypto-2.6 python setup.py install
1
2
3

tar fx pycrypto-2.6.tar.gz
cd pycrypto-2.6
python setup.py install



5. fabric-master.tar.gz
tar fx fabric-master.tar.gz cd fabric-master python setup.py install
1
2
3

tar fx fabric-master.tar.gz
cd fabric-master
python setup.py install



Vậy là xong rồi:
Để sử dụng fabric các bạn phải làm như sau:
Tạo một file gọi là fabfile.py . Đây là file mặc định của fabric. Và nó sẽ tìm trong thư mục hiện tại của bạn mà bạn định type fab.
Nếu các bạn muốn chạy một file fabfile.py ở một nơi nào đó thì các bạn phải dùng -f.
Ví dụ:
fab -f /usr/script/fabfile.py host_type
Để sử dụng thư viện thì bạn phải import thư viện fabric vào:
from fabric.api import *
Mọi thứ, cho nó tiện. Nhưng vấn đề gặp phải sẽ mất thời gian import. Nhưng mình nghĩ với những script đơn giản, thì bạn làm vậy cho nhanh.
from fabric.api import run
def host_type():
run(‘uname -s’)
Ví dụ bây giờ mình muốn run command “uname -s ” trên máy remote host có IP là 10.0.0.10
fab -H 10.0.0.10 host_type
1

fab -H 10.0.0.10 host_type



Vậy là done rồi. Quá dễ đúng không.
Bây h muốn làm một dãy IP thì làm sao.
Thì fabric cho mình một list.
env.hosts = []. Các bạn có thể dùng python đọc IP list rồi gán vào trong một cái mảng . Vậy thôi.
Một chú ý nữa. Thường thì run command ở chính máy fabric, thì phải dùng key.
Bạn có thể dùng local command để run ở máy đang run fabric. Nhưng muốn capture output thì phải dùng thế này.
Thêm capture=True vào nữa.
version = local(“git -C {0} describe –tags”.format(path),capture=True)

Nếu các bạn không muốn tạo bấm lệnh fab mà bằng python. Thì làm như ví dụ bên dưới.

Ví dụ:
#!/usr/bin/python from fabric.api import * from fabric.tasks import execute # Khai bao mot mang dia chi IP remote host hosts = ['10.10.10.1','10.10.10.2','10.10.10.3','10.10.10.4 '] # Ham read file tren remote host def readfile(): output = run("cat /tmp/test.csv") return output #Remove thong tin tren remote host def remove(arg1,agr2): run("/usr/test.sh %s %s" %(arg1, agr2)) if __name__ == '__main__': # Thu thi task readfile tren 4 con server output = execute(readfile,hosts = hosts) for ip,content in output.iteritems(): if content != '': lines = content.split('\r\n') for line in lines: arr = line.split('\t') arg1 = arr[0] agr2 = arr[1] if ip == '10.10.10.1': #thuc thi task remove tren host 10.10.10.5 execute(remove,arg1,agr2,hosts = ['10.10.10.5']) elif ip == '10.10.10.2': #thuc thi task remove tren host 10.10.10.6 execute(remove,arg1,agr2,hosts = ['10.10.10.6'])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

#!/usr/bin/python
from fabric.api import *
from fabric.tasks import execute
# Khai bao mot mang dia chi IP remote host
hosts = ['10.10.10.1','10.10.10.2','10.10.10.3','10.10.10.4 ']
# Ham read file tren remote host
def readfile():
output = run("cat /tmp/test.csv")
return output
#Remove thong tin tren remote host
def remove(arg1,agr2):
run("/usr/test.sh %s %s" %(arg1, agr2))
if __name__ == '__main__':
# Thu thi task readfile tren 4 con server
output = execute(readfile,hosts = hosts)
for ip,content in output.iteritems():
if content != '':
lines = content.split('\r\n')
for line in lines:
arr = line.split('\t')
arg1 = arr[0]
agr2 = arr[1]
if ip == '10.10.10.1':
#thuc thi task remove tren host 10.10.10.5
execute(remove,arg1,agr2,hosts = ['10.10.10.5'])
elif ip == '10.10.10.2':
#thuc thi task remove tren host 10.10.10.6
execute(remove,arg1,agr2,hosts = ['10.10.10.6'])
  Trả lời ngay kèm theo trích dẫn này
Gửi trả lời



Quyền Hạn Của Bạn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Hình Cảm xúc đang Mở
[IMG] đang Mở
Mã HTML đang Tắt




Bây giờ là 07:30 PM. Giờ GMT +7



Diễn đàn tin học QuantriNet
quantrinet.com | quantrimang.co.cc
Founded by Trương Văn Phương | Developed by QuantriNet's members.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.