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:
- Sempliċità
- Huwa dokumentat tajjeb
- M'għandekx bżonn titgħallem lingwa oħra jekk diġà int raġel python.
- Faċli biex tinstalla u tuża.
- Huwa mgħaġġel fl-operazzjonijiet tiegħu.
- 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.
- Python 2.5+ bl-intestaturi tal-iżvilupp
- 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:
- run – li jmexxi kmand tal-qoxra fuq magna remota.
- lokali – li jmexxi kmand fuq il-magna lokali.
- sudo – li jmexxi kmand tal-qoxra fuq magna remota, bi privileġġi tal-għeruq.
- Ikseb – li jniżżel fajl wieħed jew aktar minn magna remota.
- 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...
- Tista' tmexxi fab –help biex tara informazzjoni ta' għajnuna u lista twila ta' għażliet disponibbli tal-linja tal-kmand.
- Għażla importanti hija –fabfile=PATH li tgħinek tispeċifika fajl tal-modulu python differenti biex timporta ieħor minbarra fabfile.py.
- Biex tispeċifika isem tal-utent biex tuża meta tikkonnettja ma' hosts remoti, uża l-għażla –user=USER.
- Biex tuża password għall-awtentikazzjoni u/jew sudo, uża l-għażla –password=PASSWORD.
- Biex tipprintja informazzjoni dettaljata dwar il-kmand ISEM, uża l-għażla –display=NAME.
- 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.
- Biex tipprintja lista ta' kmandi possibbli u toħroġ, inkludi l-għażla –list.
- Tista' tispeċifika l-post tal-fajl tal-konfigurazzjoni li se tuża billi tuża l-għażla –config=PATH.
- Biex turi output ta' żball ikkulurit, uża –colorize-errors.
- 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