Fabric - Megharịa ọrụ nchịkwa Linux gị yana ntinye ngwa karịa SSH


A bịa n'ịhazi igwe dịpụrụ adịpụ na ntinye ngwa, enwere ọtụtụ ngwaọrụ ahịrị iwu dị adị n'agbanyeghị na ọtụtụ nwere nsogbu nkịtị nke enweghị akwụkwọ zuru ezu.

N'ime ntuziaka a, anyị ga-ekpuchi usoro iji webata wee malite otu esi eji akwa na-emeziwanye na ijikwa otu sava.

Fabric bụ ọba akwụkwọ Python yana ngwa ahịrị iwu siri ike maka ịrụ ọrụ nchịkwa sistemu dị ka imezu iwu SSH n'ọtụtụ igwe yana ntinye ngwa.

Gụọkwa: Jiri Shell Scripting rụkwaa ọrụ nlekọta sistemu Linux

Inwe ihe ọmụma na-arụ ọrụ nke Python nwere ike inye aka mgbe ị na-eji Fabric, mana ọ nwere ike ọ gaghị adị mkpa.

Ihe kpatara ị ga-eji họrọ akwa karịa ihe ndị ọzọ:

  1. Mfe
  2. Edekwara ya nke ọma
  3. Ịkwesighi ịmụ asụsụ ọzọ ma ọ bụrụ na ị bụbu onye na-eme ihe nkiri.
  4. dị mfe ịwụnye na iji.
  5. Ọ na-agba ọsọ n'ọrụ ya.
  6. Ọ na-akwado mkpọmkpọ ebe dịpụrụ adịpụ.

Otu esi etinye Ngwa Automation Fabric na Linux

Otu njirimara dị mkpa gbasara akwa bụ na igwe ndị dịpụrụ adịpụ nke ịchọrọ inye naanị kwesịrị ka etinye ihe nkesa OpenSSH ọkọlọtọ. Naanị ihe achọrọ ụfọdụ achọrọ na sava nke ị na-elekọta sava ndị dịpụrụ adịpụ tupu ịmalite.

  1. Python 2.5+ nwere nkụnye eji isi mee
  2. Python-setuptools na pip (nhọrọ, mana ọkacha mmasị) gcc

A na-etinye akwa akwa ngwa ngwa site na iji pip (nke akwadoro nke ukwuu), mana ị nwekwara ike ịhọrọ onye njikwa ngwugwu gị dabara adaba iji wụnye ngwugwu akwa, nke a na-akpọ akwa ma ọ bụ python-fabric.

Maka nkesa dabere na RHEL/CentOS, ị ga-enwerịrị ebe nchekwa EPEL arụnyere ma mee ka ọ rụọ ọrụ na sistemụ ịwụnye ngwugwu akwa.

# yum install fabric   [On RedHat based systems]  
# dnf install fabric   [On Fedora 22+ versions]

Maka Debian na usoro ya dị ka Ubuntu na ndị ọrụ Mint nwere ike ime nke ọma iji wụnye ngwugwu akwa dị ka egosiri:

# apt-get install fabric

Ọ bụrụ na ịchọrọ ịwụnye ụdị akwa akwa, ị nwere ike iji pip jide alaka ụlọ ọrụ kacha ọhụrụ.

# yum install python-pip       [On RedHat based systems] 
# dnf install python-pip       [On Fedora 22+ versions]
# apt-get install python-pip   [On Debian based systems]

Ozugbo arụnyere pip nke ọma, ị nwere ike iji pip jide ụdị akwa kachasị ọhụrụ dị ka egosiri:

# pip install fabric

Otu esi eji akwa rụọ ọrụ nchịkwa Linux

Ka anyị bido otu ị ga-esi jiri akwa akwa. N'oge usoro nrụnye, agbakwunyere script Python akpọrọ fab na ndekọ n'ụzọ gị. Ederede fab na-arụ ọrụ niile mgbe ị na-eji akwa akwa.

Site na mgbakọ, ịkwesịrị ịmalite site na ịmepụta faịlụ Python akpọrọ fabfile.py site na iji nchịkọta akụkọ ọkacha mmasị gị. Cheta na ị nwere ike ịnye faịlụ a aha dị iche dịka ịchọrọ mana ị ga-achọ ịkọwa ụzọ faịlụ dịka ndị a:

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

Fabric na-eji fabfile.py rụọ ọrụ. Fabfile kwesịrị ịdị n'otu akwụkwọ ndekọ aha ebe ị na-agba ngwa ngwa ákwà.

Ọmụmaatụ 1: Ka anyị buru ụzọ mepụta Hello World bụ isi.

# vi fabfile.py

Tinye ahịrị koodu ndị a na faịlụ.

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

Chekwaa faịlụ ma mee iwu n'okpuru.

# fab hello

Ka anyị lelee ihe atụ nke fabfile.py iji mezuo iwu oge na igwe mpaghara.

Ọmụmaatụ 2: Mepee faịlụ fabfile.py ọhụrụ dị ka ndị a:

# vi fabfile.py

Ma mado ahịrị koodu ndị a na faịlụ ahụ.

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

Wee chekwaa faịlụ ma mee iwu a:

# fab uptime

The Fabric API na-eji akwụkwọ ọkọwa okwu nhazi nke bụ Python dakọtara na ihe jikọrọ ọnụ nke a maara dị ka env, nke na-echekwa ụkpụrụ na-achịkwa ihe Fabric na-eme.

env.hosts bụ ndepụta nke sava nke ịchọrọ iji rụọ ọrụ Fabric. Ọ bụrụ na netwọk gị bụ 192.168.0.0 ma chọọ ijikwa onye ọbịa 192.168.0.2 na 192.168.0.6 na fabfile gị, ị nwere ike hazie env.hosts dị ka ndị a:

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

Ahịrị koodu dị n'elu na-akọwapụta naanị ndị ọbịa nke ị ga-arụ ọrụ Fabric mana emela ihe ọ bụla ọzọ. Ya mere, ị nwere ike ịkọwa ụfọdụ ihe aga-eme, Fabric na-enye ọtụtụ ọrụ nke ị nwere ike iji soro igwe igwe dịpụrụ adịpụ na-emekọrịta ihe.

Ọ bụ ezie na e nwere ọtụtụ ọrụ, ndị a na-ejikarị eme ihe bụ:

  1. na-agba ọsọ - nke na-arụ iwu shei na igwe dịpụrụ adịpụ.
  2. local – nke na-arụ ọrụ n'igwe mpaghara.
  3. sudo - nke na-arụ iwu shei na igwe dịpụrụ adịpụ, nwere ikike mgbọrọgwụ.
  4. Nweta - nke na-ebudata otu faịlụ ma ọ bụ karịa site na igwe dịpụrụ adịpụ.
  5. Tinye – nke na-ebugote otu faịlụ ma ọ bụ karịa na igwe dịpụrụ adịpụ.

Ọmụmaatụ 3: Iji kwughachi ozi n'ọtụtụ igwe mepụta fabfile.py dị ka nke dị n'okpuru.

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

Iji mezuo ọrụ ndị a, mee iwu a:

# fab echo

Ọmụmatụ 4: Ị nwere ike melite fabfile.py nke ị mepụtara na mbụ iji mezuo iwu oge na igwe mpaghara, nke mere na ọ na-agba ọsọ oge ma na-enyocha ojiji diski site na iji df iwu na otutu. igwe dị ka ndị a:

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

Chekwaa faịlụ ma mee iwu a:

# fab uptime
# fab disk_space

Ọmụmaatụ 4: Ka anyị leba anya n'ihe atụ iji bukwasa ihe nkesa LAMP (Linux, Apache, MySQL/MariaDB na PHP) na sava Linux dịpụrụ adịpụ.

Anyị ga-ede ọrụ nke ga-ekwe ka etinye LAMP site na iji ohere mgbọrọgwụ.

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  run ("yum install -y httpd mariadb-server php php-mysql")
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  sudo("apt-get install -q apache2 mysql-server libapache2-mod-php5 php5-mysql")

Chekwaa faịlụ ma mee iwu a:

# fab deploy_lamp

Mara: N'ihi nnukwu mmepụta, ọ gaghị ekwe omume ka anyị mepụta ihuenyo (gif animated) maka ihe atụ a.

Ugbu a ị nwere ike rụọ ọrụ njikwa ihe nkesa Linux site na iji Fabric na atụmatụ ya na ihe atụ enyere n'elu…

  1. Ị nwere ike ịgba fab -help iji lelee ozi enyemaka yana ogologo ndepụta nhọrọ ahịrị iwu dị.
  2. Nhọrọ dị mkpa bụ –fabfile=PATH nke na-enyere gị aka ịkọwa faịlụ python modul dị iche iji bubata ọzọ wee bubata fabfile.py.
  3. Ikopụta aha njirimara ị ga-eji mgbe ị na-ejikọ na ndị ọbịa dịpụrụ adịpụ, jiri nhọrọ –user=USER.
  4. Iji jiri paswọọdụ maka nyocha na/ma ọ bụ sudo, jiri nhọrọ –password=PASSWORD.
  5. Ka ibipụta ozi zuru ezu gbasara iwu NAME, jiri –display=NAME nhọrọ.
  6. Ka ilele usoro jiri –list nhọrọ, nhọrọ: mkpirisi, nkịtị, akwụ, jiri –list-format=FORMAT nhọrọ.
  7. Ka ibipụta ndepụta nke iwu enwere ike wee pụọ, tinye nhọrọ –list.
  8. Ị nwere ike ezipụta ọnọdụ faịlụ nhazi ka ị ga-eji site na iji nhọrọ –config=PATH.
  9. Igosipụta mmepụta njehie nwere agba, jiri –colorize-errors.
  10. Ka ilele nọmba ụdị mmemme ahụ wee pụọ, jiri nhọrọ –ụdị.

Nchịkọta

Fabric bụ ngwá ọrụ siri ike ma depụta ya nke ọma ma na-enye ndị ọhụrụ na-eji ya eme ihe dị mfe. Ị nwere ike ịgụ akwụkwọ zuru ezu ka ị ghọtakwuo ya. Ọ bụrụ na ị nwere ozi ọ bụla ịgbakwunye ma ọ bụ ikpe nke njehie ọ bụla ị na-ezute n'oge nrụnye na ojiji, ị nwere ike ịhapụ ikwu okwu na anyị ga-achọta ụzọ isi dozie ha.

Ntụaka: Akwụkwọ akwa