Tessili - Awtomatizza l-Kompiti ta' Amministrazzjoni tal-Linux Tiegħek u l-Iskjeramenti tal-Applikazzjoni Fuq SSH


Meta niġu għall-ġestjoni ta 'magni remoti u l-iskjerament ta' applikazzjonijiet, hemm diversi għodod tal-linja tal-kmand hemmhekk jeżistu għalkemm ħafna għandhom problema komuni ta 'nuqqas ta' dokumentazzjoni dettaljata.

F'din il-gwida, se nkopru l-passi biex nintroduċu u nibdew dwar kif tuża d-drapp biex intejbu l-amministrazzjoni ta 'gruppi ta' servers.

Fabric hija librerija python u għodda b'saħħitha tal-linja tal-kmand biex twettaq kompiti ta 'amministrazzjoni tas-sistema bħall-eżekuzzjoni ta' kmandi SSH fuq magni multipli u skjerament ta 'applikazzjoni.

Aqra wkoll: Uża Shell Scripting biex Awtomatizza l-Kompiti ta' Manutenzjoni tas-Sistema Linux

Li jkollok għarfien tax-xogħol ta 'Python jista' jkun ta 'għajnuna meta tuża Fabric, iżda ċertament jista' ma jkunx meħtieġ.

Raġunijiet għaliex għandek tagħżel drapp fuq alternattivi oħra:

  1. Sempliċità
  2. Huwa dokumentat tajjeb
  3. M'għandekx bżonn titgħallem lingwa oħra jekk diġà int raġel python.
  4. Faċli biex tinstalla u tuża.
  5. Huwa mgħaġġel fl-operazzjonijiet tiegħu.
  6. Jappoġġja eżekuzzjoni remota parallela.

Kif Tinstalla l-Għodda tal-Awtomazzjoni tad-Tessili fil-Linux

Karatteristika importanti dwar id-drapp hija li l-magni remoti li għandek bżonn tamministra biss jeħtieġ li jkollhom is-server standard OpenSSH installat. Għandek bżonn biss ċerti rekwiżiti installati fuq is-server li minnu qed tamministra s-servers remoti qabel ma tkun tista' tibda.

  1. Python 2.5+ bl-intestaturi tal-iżvilupp
  2. Python-setuptools u pip (mhux obbligatorju, iżda preferut) gcc

Id-drapp huwa installat faċilment bl-użu ta 'pip (irrakkomandat ħafna), iżda tista' wkoll tippreferi tagħżel il-maniġer tal-pakkett default tiegħek apt-get to install fabric package, tipikament imsejjaħ drapp jew python-fabric.

Għal distribuzzjonijiet ibbażati fuq RHEL/CentOS, irid ikollok ir-repożitorju EPEL installat u attivat fis-sistema biex tinstalla l-pakkett tad-drapp.

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

Għal Debian u d-derivattivi tiegħu bħal Ubuntu u Mint utenti jistgħu sempliċement jagħmlu apt-get biex jinstallaw il-pakkett tad-drapp kif muri:

# apt-get install fabric

Jekk trid tinstalla verżjoni ta 'żvilupp tad-drapp, tista' tuża pip biex taqbad il-fergħa kaptan l-aktar riċenti.

# 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]

Ladarba pip ikun ġie installat b'suċċess, tista 'tuża pip biex taqbad l-aħħar verżjoni tad-drapp kif muri:

# pip install fabric

Kif tuża Tessili biex Awtomatizza l-Kompiti ta 'Amministrazzjoni tal-Linux

Mela ejja nibdew dwar kif tista 'tuża Tessili. Matul il-proċess tal-installazzjoni, skript Python imsejjaħ fab ġie miżjud ma 'direttorju fil-mogħdija tiegħek. L-iskrittura fab tagħmel ix-xogħol kollu meta tuża drapp.

B'konvenzjoni, trid tibda billi toħloq fajl Python imsejjaħ fabfile.py billi tuża l-editur favorit tiegħek. Ftakar li tista' tagħti dan il-fajl isem differenti kif tixtieq imma jkollok bżonn tispeċifika l-mogħdija tal-fajl kif ġej:

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

Fabric juża fabfile.py biex jesegwixxi l-kompiti. Il-fabfile għandu jkun fl-istess direttorju fejn tmexxi l-għodda Fabric.

Eżempju 1: Ejja noħolqu l-ewwel Hello World bażika.

# vi fabfile.py

Żid dawn il-linji ta 'kodiċi fil-fajl.

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

Issejvja l-fajl u mexxi l-kmand hawn taħt.

# fab hello

Ejja issa nħarsu lejn eżempju ta 'fabfile.py biex tesegwixxi l-kmand tal-uptime fuq il-magna lokali.

Eżempju 2: Iftaħ fajl fabfile.py ġdid kif ġej:

# vi fabfile.py

U waħħal il-linji ta 'kodiċi li ġejjin fil-fajl.

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

Imbagħad issalva l-fajl u mexxi l-kmand li ġej:

# fab uptime

L-API Fabric juża dizzjunarju ta’ konfigurazzjoni li huwa l-ekwivalenti ta’ Python ta’ firxa assoċjattiva magħrufa bħala env, li jaħżen valuri li jikkontrollaw dak li jagħmel Fabric.

Il-env.hosts hija lista ta' servers li fuqhom trid tmexxi l-kompiti Fabric. Jekk in-netwerk tiegħek huwa 192.168.0.0 u tixtieq timmaniġġja l-host 192.168.0.2 u 192.168.0.6 bil-fabfile tiegħek, tista' tikkonfigura l-env.hosts kif ġej:

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

Il-linja ta 'kodiċi ta' hawn fuq tispeċifika biss l-ospiti li fuqhom se tmexxi l-kompiti tad-drapp iżda ma tagħmel xejn aktar. Għalhekk tista 'tiddefinixxi xi kompiti, Fabric jipprovdi sett ta' funzjonijiet li tista 'tuża biex jinteraġixxu mal-magni remoti tiegħek.

Għalkemm hemm ħafna funzjonijiet, l-aktar komunement użati huma:

  1. run – li jmexxi kmand tal-qoxra fuq magna remota.
  2. lokali – li jmexxi kmand fuq il-magna lokali.
  3. sudo – li jmexxi kmand tal-qoxra fuq magna remota, bi privileġġi tal-għeruq.
  4. Ikseb – li jniżżel fajl wieħed jew aktar minn magna remota.
  5. Put – li jtella' fajl wieħed jew aktar f'magna remota.

Eżempju 3: Biex tgħaddi messaġġ fuq magni multipli oħloq fabfile.py bħal dak ta' hawn taħt.

#!/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 ' ")

Biex tesegwixxi l-kompiti, mexxi l-kmand li ġej:

# fab echo

Eżempju 4: Tista' ttejjeb il-fabfile.py li ħloqt qabel biex tesegwixxi l-kmand tal-uptime fuq il-magna lokali, sabiex tmexxi l-kmand tal-uptime u tiċċekkja wkoll l-użu tad-diska billi tuża l-kmand df fuq multipli. magni kif ġej:

#!/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')

Issejvja l-fajl u mexxi l-kmand li ġej:

# fab uptime
# fab disk_space

Eżempju 4: Ejja nħarsu lejn eżempju biex niskjeraw server LAMP (Linux, Apache, MySQL/MariaDB u PHP) fuq server Linux remot.

Aħna se niktbu funzjoni li tippermetti li LAMP tiġi installata mill-bogħod billi tuża privileġġi ta 'l-għeruq.

#!/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")

Issejvja l-fajl u mexxi l-kmand li ġej:

# fab deploy_lamp

Nota: Minħabba produzzjoni kbira, mhux possibbli għalina li noħolqu screencast (gif animat) għal dan l-eżempju.

Issa tista' tawtomatizza l-kompiti ta' ġestjoni tas-server Linux billi tuża Fabric u l-karatteristiċi u l-eżempji tagħha mogħtija hawn fuq...

  1. Tista' tmexxi fab –help biex tara informazzjoni ta' għajnuna u lista twila ta' għażliet disponibbli tal-linja tal-kmand.
  2. Għażla importanti hija –fabfile=PATH li tgħinek tispeċifika fajl tal-modulu python differenti biex timporta ieħor minbarra fabfile.py.
  3. Biex tispeċifika isem tal-utent biex tuża meta tikkonnettja ma' hosts remoti, uża l-għażla –user=USER.
  4. Biex tuża password għall-awtentikazzjoni u/jew sudo, uża l-għażla –password=PASSWORD.
  5. Biex tipprintja informazzjoni dettaljata dwar il-kmand ISEM, uża l-għażla –display=NAME.
  6. Biex tara l-formati uża l-għażla –list, għażliet: qasir, normali, nested, uża l-għażla –list-format=FORMAT.
  7. Biex tipprintja lista ta' kmandi possibbli u toħroġ, inkludi l-għażla –list.
  8. Tista' tispeċifika l-post tal-fajl tal-konfigurazzjoni li se tuża billi tuża l-għażla –config=PATH.
  9. Biex turi output ta' żball ikkulurit, uża –colorize-errors.
  10. Biex tara n-numru tal-verżjoni tal-programm u l-ħruġ, uża l-għażla –version.

Sommarju

Id-drapp huwa għodda b'saħħitha u huwa dokumentat tajjeb u jipprovdi użu faċli għal newbies. Tista' taqra d-dokumentazzjoni sħiħa biex tifhimha aktar. Jekk għandek xi informazzjoni x'iżżid jew f'każ ta' xi żbalji li tiltaqa' magħhom waqt l-installazzjoni u l-użu, tista' tħalli kumment u aħna nsibu modi kif nirranġawhom.

Referenza: Dokumentazzjoni tad-drapp