fabric作爲一種強大的運維工具,可以讓部署運維輕鬆很多,最簡單的fabric使用,首先設置env.user,env.port,env.hosts,env.password,如:
#coding:utf8
from fabric.api import *
#用戶名
env.user = "shikanon"
#中轉ip,堡壘機
env.gateway = "10.17.35.92"
env.port = 12303
env.hosts = ["192.168.6.%d"%i for i in range(2,11)]
#密碼
env.password = "shikanon_123456"
這樣就配置好了集羣,但通常情況下爲了安全堡壘機和各機器的用戶名、端口號、密碼都是不同的,那麼需要有針對性設置,在fabric中用env.hosts和env.password組合就可以了,不過需要注意的是原來的ip形式需要全部改爲user@host:port這種形式,代碼如下
#需要以user@host:port填寫
env.gateway = "[email protected]:12020"
env.hosts = ["[email protected]:12020", "[email protected]:22", "[email protected]:22"]
#可以定義不同的密碼
env.passwords = {
"[email protected]:12020":"shikanon_123456",
"[email protected]:22":"12shikanon_3456",
"[email protected]:22":"1234shikanon_56"}
#下面是rsa免登錄設置
#
def create_keygen():
with settings(warn_only=True):
run("rm -rf shikanon/.ssh")
with settings(warn_only=True):
run("mkdir -p shikanon/.ssh")
with settings(warn_only=True):
result = run(r"ssh-keygen -t rsa -P '' -f ~/shikanon/.ssh/id_rsa")
def get_ras_id():
get("~/shikanon/.ssh/id_rsa.pub","./rsa/rsa_%s_id_rsa.pub"%(env.host))
@runs_once
def zip():
local("zip -r authorized_keys.zip rsa/")
def clean():
run("rm -rf ~/shikanon/")
def upload():
run("rm -f authorized_keys.zip")
put("authorized_keys.zip","~/shikanon/")
with settings(warn_only=True):
run("unzip ~/shikanon/authorized_keys.zip -d ~/shikanon/.ssh")
rsa_files = run("ls ~/shikanon/.ssh/rsa/")
for commandline in rsa_files.split("\r\n"):
for rsa_file in commandline.split(" "):
if rsa_file:
print("rsa_file:",rsa_file)
run("cat ~/shikanon/.ssh/rsa/%s >> ~/shikanon/.ssh/authorized_keys"%rsa_file)
以上是一個設置ssh免密碼登陸的腳本