自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Fabric:通過(guò)SSH來(lái)自動(dòng)化管理Linux任務(wù)和布署應(yīng)用

系統(tǒng) Linux 自動(dòng)化
Fabric是一個(gè)用Python編寫(xiě)的命令行工具庫(kù),它可以幫助系統(tǒng)管理員高效地執(zhí)行某些任務(wù),比如通過(guò)SSH到多臺(tái)機(jī)器上執(zhí)行某些命令,遠(yuǎn)程布署應(yīng)用等。

[[170444]]

當(dāng)要管理遠(yuǎn)程機(jī)器或者要布署應(yīng)用時(shí),雖然你有多種命令行工具可以選擇,但是其中很多工具都缺少詳細(xì)的使用文檔。

在這篇教程中,我們將會(huì)一步一步地向你介紹如何使用 fabric 來(lái)幫助你更好得管理多臺(tái)服務(wù)器。

Fabric 是一個(gè)用 Python 編寫(xiě)的命令行工具庫(kù),它可以幫助系統(tǒng)管理員高效地執(zhí)行某些任務(wù),比如通過(guò) SSH 到多臺(tái)機(jī)器上執(zhí)行某些命令,遠(yuǎn)程布署應(yīng)用等。

在使用之前,如果你擁有使用 Python 的經(jīng)驗(yàn)?zāi)軒湍愀玫氖褂?Fabric。當(dāng)然,如果沒(méi)有那也不影響使用 Fabric。

我們?yōu)槭裁匆x擇 Fabric:

  • 簡(jiǎn)單
  • 完備的文檔
  • 如果你會(huì) Python,不用增加學(xué)習(xí)其他語(yǔ)言的成本
  • 易于安裝使用
  • 使用便捷
  • 支持多臺(tái)機(jī)器并行操作

在 Linux 上如何安裝 Fabric

Fabric 有一個(gè)特點(diǎn)就是要遠(yuǎn)程操作的機(jī)器只需要支持標(biāo)準(zhǔn)的 OpenSSH 服務(wù)即可。只要保證在機(jī)器上安裝并開(kāi)啟了這個(gè)服務(wù)就能使用 Fabric 來(lái)管理機(jī)器。

依賴

  • Python 2.5 或更新版本,以及對(duì)應(yīng)的開(kāi)發(fā)組件
  • Python-setuptools 和 pip(可選,但是非常推薦)gcc

我們推薦使用 pip 安裝 Fabric,但是你也可以使用系統(tǒng)自帶的包管理器如 yum, dnf 或 apt-get 來(lái)安裝,包名一般是fabric 或 python-fabric。

如果是基于 RHEL/CentOS 的發(fā)行版本的系統(tǒng),你可以使用系統(tǒng)自帶的 EPEL 源 來(lái)安裝 fabric。

  1. # yum install fabric   [適用于基于 RedHat 系統(tǒng)] 
  2. # dnf install fabric   [適用于 Fedora 22+ 版本] 

如果你是 Debian 或者其派生的系統(tǒng)如 Ubuntu 和 Mint 的用戶,你可以使用 apt-get 來(lái)安裝,如下所示:

  1. # apt-get install fabric 

如果你要安裝開(kāi)發(fā)版的 Fabric,你需要安裝 pip 來(lái)安裝 master 分支上***版本。

  1. # yum install python-pip       [適用于基于 RedHat 系統(tǒng)] 
  2. # dnf install python-pip       [適用于Fedora 22+ 版本] 
  3. # apt-get install python-pip   [適用于基于 Debian 系統(tǒng)] 

安裝好 pip 后,你可以使用 pip 獲取***版本的 Fabric。

  1. # pip install fabric 

如何使用 Fabric 來(lái)自動(dòng)化管理 Linux 任務(wù)

現(xiàn)在我們來(lái)開(kāi)始使用 Fabric,在之前的安裝的過(guò)程中,F(xiàn)abric Python 腳本已經(jīng)被放到我們的系統(tǒng)目錄,當(dāng)我們要運(yùn)行 Fabric 時(shí)輸入 fab 命令即可。

在本地 Linux 機(jī)器上運(yùn)行命令行

按照慣例,先用你喜歡的編輯器創(chuàng)建一個(gè)名為 fabfile.py 的 Python 腳本。你可以使用其他名字來(lái)命名腳本,但是就需要指定這個(gè)腳本的路徑,如下所示:

  1. # fabric --fabfile /path/to/the/file.py 

Fabric 使用 fabfile.py 來(lái)執(zhí)行任務(wù),這個(gè)文件應(yīng)該放在你執(zhí)行 Fabric 命令的目錄里面。

例子 1:創(chuàng)建入門(mén)的 Hello World 任務(wù):

  1. # vi fabfile.py 

在文件內(nèi)輸入如下內(nèi)容:

  1. def hello(): 
  2. print('Hello world, Tecmint community'

保存文件并執(zhí)行以下命令:

  1. # fab hello 

Fabric 工具使用說(shuō)明

例子 2:新建一個(gè)名為 fabfile.py 的文件并打開(kāi):

粘貼以下代碼至文件:

  1. #!  /usr/bin/env python 
  2. from fabric.api import local 
  3. def uptime(): 
  4.     local('uptime'

保存文件并執(zhí)行以下命令:

  1. # fab uptime 

Fabric: 檢查系統(tǒng)運(yùn)行時(shí)間

讓我們看看這個(gè)例子,fabfile.py 文件在本機(jī)執(zhí)行了 uptime 這個(gè)命令。

在遠(yuǎn)程 Linux 機(jī)器上運(yùn)行命令來(lái)執(zhí)行自動(dòng)化任務(wù)

Fabric API 使用了一個(gè)名為 env 的關(guān)聯(lián)數(shù)組(Python 中的詞典)作為配置目錄,來(lái)儲(chǔ)存 Fabric 要控制的機(jī)器的相關(guān)信息。

env.hosts 是一個(gè)用來(lái)存儲(chǔ)你要執(zhí)行 Fabric 任務(wù)的機(jī)器的列表,如果你的 IP 地址是 192.168.0.0,想要用 Fabric 來(lái)管理地址為 192.168.0.2 和 192.168.0.6 的機(jī)器,需要的配置如下所示:

  1. #!/usr/bin/env python 
  2. from fabric.api import env 
  3.     env.hosts = [ '192.168.0.2''192.168.0.6' ] 

上面這幾行代碼只是聲明了你要執(zhí)行 Fabric 任務(wù)的主機(jī)地址,但是實(shí)際上并沒(méi)有執(zhí)行任何任務(wù),下面我們就來(lái)定義一些任務(wù)。Fabric 提供了一系列可以與遠(yuǎn)程服務(wù)器交互的方法。

Fabric 提供了眾多的方法,這里列出幾個(gè)經(jīng)常會(huì)用到的:

  • run - 可以在遠(yuǎn)程機(jī)器上運(yùn)行的 shell 命令
  • local - 可以在本機(jī)上運(yùn)行的 shell 命令
  • sudo - 使用 root 權(quán)限在遠(yuǎn)程機(jī)器上運(yùn)行的 shell 命令
  • get - 從遠(yuǎn)程機(jī)器上下載一個(gè)或多個(gè)文件
  • put - 上傳一個(gè)或多個(gè)文件到遠(yuǎn)程機(jī)器

例子 3:在多臺(tái)機(jī)子上輸出信息,新建新的 fabfile.py 文件如下所示

  1. #!/usr/bin/env python 
  2. from fabric.api import env, run 
  3. env.hosts = ['192.168.0.2','192.168.0.6'
  4. def echo(): 
  5.     run("echo -n 'Hello, you are tuned to Tecmint ' "

運(yùn)行以下命令執(zhí)行 Fabric 任務(wù)

  1. # fab echo 

fabric: 自動(dòng)在遠(yuǎn)程 Linux 機(jī)器上執(zhí)行任務(wù)

例子 4:你可以繼續(xù)改進(jìn)之前創(chuàng)建的執(zhí)行 uptime 任務(wù)的 fabfile.py 文件,讓它可以在多臺(tái)服務(wù)器上運(yùn)行 uptime 命令,也可以檢查其磁盤(pán)使用情況,如下所示:

  1. #!/usr/bin/env pythonfrom fabric.api import env, runenv.hosts = ['192.168.0.2','192.168.0.6']def uptime(): run('uptime')def disk_space(): run('df -h'

保存并執(zhí)行以下命令

  1. # fab uptime# fab disk_space 

Fabric:自動(dòng)在多臺(tái)服務(wù)器上執(zhí)行任務(wù)

在遠(yuǎn)程服務(wù)器上自動(dòng)化布署 LAMP

例子 5:我們來(lái)嘗試一下在遠(yuǎn)程服務(wù)器上布署 LAMP(Linux, Apache, MySQL/MariaDB and PHP)

我們要寫(xiě)個(gè)函數(shù)在遠(yuǎn)程使用 root 權(quán)限安裝 LAMP。

在 RHEL/CentOS 或 Fedora 上

  1. #!/usr/bin/env python 
  2. from fabric.api import env, run 
  3. env.hosts = ['192.168.0.2','192.168.0.6'
  4. def deploy_lamp(): 
  5.     run ("yum install -y httpd mariadb-server php php-mysql"

在 Debian/Ubuntu 或 Linux Mint 上

  1. #!/usr/bin/env python 
  2. from fabric.api import env, run 
  3. env.hosts = ['192.168.0.2','192.168.0.6'
  4. def deploy_lamp(): 
  5.     sudo("apt-get install -q apache2 mysql-server libapache2-mod-php5 php5-mysql"

保存并執(zhí)行以下命令:

  1. # fab deploy_lamp 

注:由于安裝時(shí)會(huì)輸出大量信息,這個(gè)例子我們就不提供屏幕 gif 圖了

現(xiàn)在你可以使用 Fabric 和上文例子所示的功能來(lái)自動(dòng)化的管理 Linux 服務(wù)器上的任務(wù)了。

一些 Fabric 有用的選項(xiàng)

  • 你可以運(yùn)行 fab -help 輸出幫助信息,里面列出了所有可以使用的命令行信息
  • –fabfile=PATH 選項(xiàng)可以讓你定義除了名為 fabfile.py 之外的模塊
  • 如果你想用指定的用戶名登錄遠(yuǎn)程主機(jī),請(qǐng)使用 -user=USER 選項(xiàng)
  • 如果你需要密碼進(jìn)行驗(yàn)證或者 sudo 提權(quán),請(qǐng)使用 –password=PASSWORD 選項(xiàng)
  • 如果需要輸出某個(gè)命令的詳細(xì)信息,請(qǐng)使用 –display=命令名 選項(xiàng)
  • 使用 --list 輸出所有可用的任務(wù)
  • 使用 --list-format=FORMAT 選項(xiàng)能格式化 -list 選項(xiàng)輸出的信息,可選的有 short、normal、 nested
  • --config=PATH 選項(xiàng)可以指定讀取配置文件的地址
  • -–colorize-errors 能顯示彩色的錯(cuò)誤輸出信息
  • --version 輸出當(dāng)前版本

總結(jié)

Fabric 是一個(gè)強(qiáng)大并且文檔完備的工具,對(duì)于新手來(lái)說(shuō)也能很快上手,閱讀提供的文檔能幫助你更好的了解它。如果你在安裝和使用 Fabric 時(shí)發(fā)現(xiàn)什么問(wèn)題可以在評(píng)論區(qū)留言,我們會(huì)及時(shí)回復(fù)。

責(zé)任編輯:武曉燕 來(lái)源: Linux中國(guó)
相關(guān)推薦

2011-02-28 13:36:31

自動(dòng)化管理VMControl

2019-11-14 10:00:18

Linuxcron任務(wù)自動(dòng)化任務(wù)

2021-09-17 15:56:14

數(shù)據(jù)平臺(tái)自動(dòng)化

2021-11-23 12:11:59

PowershellLinuxDevOps

2015-09-16 11:13:51

ChefWindows集群運(yùn)維

2009-09-07 09:29:26

2022-08-30 19:14:31

LinuxBash

2023-08-03 09:10:37

2015-12-30 14:50:45

Kubernetes容器技術(shù)Docker

2021-11-29 18:11:33

自動(dòng)化現(xiàn)代化網(wǎng)絡(luò)優(yōu)化

2025-01-02 08:00:39

2019-05-15 09:47:06

網(wǎng)絡(luò)自動(dòng)化網(wǎng)絡(luò)中斷網(wǎng)絡(luò)

2024-06-12 12:36:48

CrontabPython庫(kù)

2022-10-09 14:50:44

Python腳本

2022-07-11 10:08:19

系統(tǒng)管理任務(wù)自動(dòng)化

2020-01-16 09:00:00

AI人工智能ML

2013-08-28 10:38:01

2015-10-21 15:08:25

電纜自動(dòng)化

2012-05-05 21:28:44

2021-03-09 10:08:15

Linux 自動(dòng)化操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)