環境很重要、環境很重要、環境很重要python
# CentOS 7
$ setenforce 0 # 能夠設置配置文件永久關閉
$ systemctl stop iptables.service
$ systemctl stop firewalld.service
1.1 安裝依賴包mysql
$ yum -y install wget sqlite-devel xz gcc automake zlib-devel openssl-devel epel-release git
1.2 編譯安裝git
$ wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
$ tar xvf Python-3.6.1.tar.xz && cd Python-3.6.1
$ ./configure && make && make install
1.3 創建 Python 虛擬環境web
由於 CentOS 6/7 自帶的是 Python2,而 Yum 等工具依賴原來的 Python,爲了避免擾亂原來的環境咱們來使用 Python 虛擬環境sql
$ cd /opt
$ python3 -m venv py3
$ source /opt/py3/bin/activate
# 看到下面的提示符表明成功,之後運行 Jumpserver 都要先運行以上 source 命令,如下全部命令均在該虛擬環境中運行
(py3) [root@localhost py3]
fabric版本:(十分重要)
pip install fabric3 or pip3 install fabric3shell
經常使用命令:api
fab -u root -p '123456.' -H ‘10.0.0.1’ -- 'free -m'bash
fab -u root -p 123456 -H "192.168.1.108" -- 'uname -a'服務器
fab -u root -p '123456' -H '10.0.0.1' -- 'hostname anthony-aliyun'網絡
fab -u root -p '123456' -H '192.168.1.108' -- 'hostname anthony-local'
經常使用腳本格式:
1 #conding:utf-8 2 from fabric.api import * 3 4 env.user = "root" 5 env.hosts = ["192.168.1.104","192.168.1.108"] 6 env.passwords = { 7 "root@192.168.1.104:22":'123456789', 8 "root@192.168.1.108:22":'123456' 9 } 10 11 env.roledefs = { 12 "webserver":["192.168.1.104"], 13 "dbserver":["192.168.1.108"] 14 } 15 16 @task 17 def show(): 18 run("free -m") 19 20 @task 21 @roles("webserver") 22 def install_httpd(): 23 print("install webserver") 24 25 @task 26 @roles("dbserver") 27 def install_mysql(): 28 print("install mysql")
1 #!/usr/bin/python env 2 # -*- coding: utf-8 -*- 3 from fabric.api import * 4 5 env.hosts = ["192.168.1.108"] 6 env.user = "root" 7 env.password = "123456" 8 env.port = 22 9 10 @task 11 def show(): 12 run("df -lh") 13 run("free -m") 14 run("hostname")
經常使用參數:
1 Usage: fab [options] <command>[:arg1,arg2=val2,host=foo,hosts='h1;h2',...] .... 2 -l,顯示定義好的任務函數名; 3 -f,指定fab入口文件,默認入口文件名爲fabfile.py 4 -g,指定網關(中轉)設備,好比堡壘機環境,填寫堡壘機ip便可 5 -H,指定目標主機,多臺主機用「,」號分隔; 6 -P,以異步並行方式運行多主機任務,默認爲串行運行; 7 -R,指定role,以角色名區分不一樣業務組設備; 8 -t,設置設備鏈接超時時間(秒); 9 -T,設置遠程主機命令執行超時時間(秒); 10 -w,當命令執行失敗,發出告警,而非默認終止任務。
經常使用環境變量:
1 abort_on_prompts 設置是否運行在交互模式下,例如會提示輸入密碼之類,默認是false 2 connection_attempts fabric嘗試鏈接到新服務器的次數,默認1次 3 cwd 目前的工做目錄,通常用來肯定cd命令的上下文環境 4 disable_known_hosts 默認是false,若是是true,則會跳過用戶知道的hosts文件 5 exclude_hosts 指定一個主機列表,在fab執行時,忽略列表中的機器 6 fabfile 默認值是fabfile.py在fab命令執行時,會自動搜索這個文件執行。 7 host_string 當fabric鏈接遠程機器執行run、put時,設置的user/host/port等 8 hosts 一個全局的host列表 9 keepalive 默認0 設置ssh的keepalive 10 loacl_user 一個只讀的變量,包含了本地的系統用戶,同user變量同樣,可是user能夠修改 11 parallel 默認false,若是是true則會並行的執行全部的task 12 pool_size 默認0 在使用parallel執行任務時設置的進程數 13 password ssh遠程鏈接時使用的密碼,也能夠是在使用sudo時使用的密碼 14 passwords 一個字典,能夠爲每一臺機器設置一個密碼,key是ip,value是密碼 15 path 在使用run/sudo/local執行命令時設置的$PATH環境變量 16 port 設置主機的端口 17 roledefs 一個字典,設置主機名到規則組的映射 18 roles 一個全局的role列表 19 shell 默認是/bin/bash -1 -c 在執行run命令時,默認的shell環境 20 skip_bad_hosts 默認false,爲ture時,會致使fab跳過沒法鏈接的主機 21 sudo_prefix 默認值"sudo -S -p '%(sudo_prompt)s' " % env 執行sudo命令時調用的sudo環境 22 sudo_prompt 默認值"sudo password:" 23 timeout 默認10 網絡鏈接的超時時間 24 user ssh使用哪一個用戶登陸遠程主機 25 local 執行本地命令,如: local('uname -s') 26 lcd 切換本地目錄,如: lcd('/home') 27 cd 切換遠程目錄,如: cd('/data/logs') 28 run 執行遠程命令 如: run('free -m') 29 sudo sudo方式執行命令,如sudo('/etc/init.d/httpd start') 30 put 上傳本地文件到遠程主機,如put('/home/user.info',/data/user.info'') 31 get 從遠程主機下載文件到本地,如get('/home/user.info',/data/user.info'') 32 prompt 得到用戶輸入信息,如: prompt('please input user:') 33 confirm 得到提示信息確認, 如: confirm('Tests failed. Continue[Y/N]?') 34 reboot 重啓遠程主機,如: reboot(); 35 @task 函數修飾符,標識的函數爲fab可調用的,非標記對fab不可見,純業務邏輯。 36 @runs_once, 函數修飾符,標識的函數只會執行一次,不會受多臺主機的影響