{"id":87467,"date":"2020-07-08T13:42:11","date_gmt":"2020-07-08T11:42:11","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn"},"modified":"2020-07-08T13:42:11","modified_gmt":"2020-07-08T11:42:11","slug":"rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"Algajate juhend: loome DevOps-pipe","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Kui olete DevOpsi uus, vaadake seda juhendit oma esimese viie etapi toru loomiseks.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Algajate juhend: loome DevOps-pipe\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps on muutunud standardlahenduseks, et parandada aeglaseid, killustatud v\u00f5i mittet\u00f6\u00f6tavaid tarkvaraarenduse protsesse. Probleemiks on see, et kui olete DevOpsis uus ega tea, kust alustada, siis v\u00f5ib teil puududa arusaam nendest metodoloogiatest. Selles artiklis r\u00e4\u00e4gitakse DevOpsi torustiku m\u00e4\u00e4ratlemisest ning antakse juhend selle loomiseks viie sammu abil. Kuigi see \u00f5pik ei ole ammendav, peaks see andma teile aluse, et alustada oma teed ja laiendada oma teadmisi tulevikus. Kuid alustame ajaloost.<\/p>\n<h3>Minu teekond DevOpsi poole<\/h3>\n<p>\nVarem t\u00f6\u00f6tasin Citi Groupi pilvemeeskonnas, arendades Infrastructure-as-a-Service (IaaS) veebirakendust Citi pilvainfrastruktuuri haldamiseks, kuid mind on alati huvitanud, kuidas muuta arendusprotsessi t\u00f5husamaks ning tuua positiivseid kultuurilisi muutusi arendajate meeskonda. Vastuse leidsin Greg Lavenderi, Citi pilvearhitektuuri ja infrastruktuuri tehnilise direktori, soovitatud raamatust. Raamat kandis pealkirja \u201ePhoenixi Projekt\u201c (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), mis selgitab DevOpsi p\u00f5him\u00f5tteid, samas kui see loetakse nagu romaan.<\/p>\n<p>Raamatukaane tagak\u00fcljel olevas tabelis on n\u00e4idatud, kui sageli erinevad ettev\u00f5tted kasutusele v\u00f5etakse oma s\u00fcsteemid vabastamiskeskkonnas:<\/p>\n<p>Amazon: 23 000 korda p\u00e4evas<br \/>\nGoogle: 5 500 korda p\u00e4evas<br \/>\nNetflix: 500 korda p\u00e4evas<br \/>\nFacebook: 1 kord p\u00e4evas<br \/>\nTwitter: 3 korda n\u00e4dalas<br \/>\nT\u00fc\u00fcpiline ettev\u00f5te: 1 kord 9 kuu jooksul<\/p>\n<p>Kuidas on Amazon, Google ja Netflix niisuguste sagedustega \u00fcldse v\u00f5imalikud? Selle k\u00f5ik t\u00f5ttu, et need ettev\u00f5tted on v\u00e4ljam\u00f5elnud peaaegu ideaalse DevOpsi toru.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nMe olime sellest kaugel, kuni me Citi-s DevOps-i juurutama hakkasime. Tol hetkel olid minu meeskonnas erinevad keskkonnad, kuid arendusse serverisse juurutamine oli t\u00e4iesti k\u00e4sitsi tehtud. K\u00f5ik arendajad p\u00e4\u00e4sesid vaid \u00fchele IBM WebSphere Application Server Community Edition p\u00f5hinevale arendusserverile. Probleem oli selles, et server l\u00f5petas t\u00f6\u00f6tamise iga kord, kui mitu kasutajat \u00fcritasid samaaegselt juurutada, mist\u00f5ttu pidid arendajad \u00fcksteisele oma kavatsustest teadma andma, mis oli \u00fcsna vaevaline. Lisaks olid probleemid madala taseme koodi testimise katvusega, t\u00fckkide k\u00e4sitsi juurutamise keerukusega ja puudus v\u00f5imalus j\u00e4lgida koodi juurutamist, mis on seotud konkreetse \u00fclesande v\u00f5i kasutajaloo kohta.<\/p>\n<p>M\u00f5istsin, et midagi tuleb ette v\u00f5tta, ja leidsin endale m\u00f5ttekaaslase. Otsustasime koost\u00f6\u00f6d teha esialgse DevOps-i torujuhtme loomisel \u2013 tema seadistas virtuaalse masina ja Tomcat rakenduste serveri, samal ajal kui mina t\u00f6\u00f6tasin Jenkinsiga, integreerisin Atlassian Jira ja BitBucketit ning tegelesin koodi testimise kattega. See k\u00fclgprojekt oli v\u00e4ga edukas: me automatiseerisime praktiliselt paljusid protsesse, saavutades peaaegu 100% meie arendusserveri t\u00f6\u00f6kindlusest, tagasime j\u00e4lgimise ja parandasime koodi testimise katvust ning lisasime v\u00f5imaluse siduda Git-i harud Jira \u00fclesannete v\u00f5i juurutamisega. Enamik t\u00f6\u00f6riistu, mida kasutasime oma DevOps-i torujuhtme koostamiseks, olid avatud l\u00e4htekoodiga.<\/p>\n<p>N\u00fc\u00fcd m\u00f5istan, kui lihtne oli meie DevOps-i torujuhe: me ei kasutanud laiendusi nagu Jenkins file v\u00f5i Ansible. Kuid see lihtne torujuhe t\u00f6\u00f6tas h\u00e4sti, v\u00f5ib-olla t\u00e4nu Pareto p\u00f5him\u00f5ttele (tuntud ka kui 80\/20 reegel).<\/p>\n<h3>L\u00fchike sissejuhatus DevOpsi ja CI\/CD torujuhtmesse<\/h3>\n<p>\nKui k\u00fcsida mitmelt inimeselt: \"Mis on DevOps?\", siis t\u00f5en\u00e4oliselt saadakse mitmeid erinevaid vastuseid. DevOps, nagu ka Agile, on arenenud mitmete erinevate distsipliinide katmiseks, kuid enamik inimesi on n\u00f5us teatavate asjadega: DevOps on tarkvaraarenduse tava v\u00f5i tarkvaraarenduse eluts\u00fckkel (SDLC), mille keskne p\u00f5him\u00f5te on kultuuri muutmine, kus arendajad ja mitte-arendajad eksisteerivad keskkonnas, kus:<\/p>\n<p>Automatiseeritakse toimingud, mida varem tehti k\u00e4sitsi; <br \/>\nIga\u00fcks teeb seda, mis talle k\u00f5ige paremini v\u00e4lja tuleb;<br \/>\nV\u00e4ljamaksete arv kindla aja jooksul suureneb; L\u00e4biv\u00f5ime suureneb; <br \/>\nArenduse paindlikkus suureneb.<\/p>\n<p>Kuigi \u00f5igete tarkvarat\u00f6\u00f6riistade olemasolu ei ole ainus asi, mida vajatakse DevOps keskkonna loomisel, on m\u00f5ned t\u00f6\u00f6riistad h\u00e4davajalikud. Peamine t\u00f6\u00f6riist on pidev integreerimine ja pidev juurutamine (CI\/CD). Selle konveieril on keskkondadel erinevad etapid (nt DEV, INT, TST, QA, UAT, STG, PROD), paljusid toiminguid on automatiseeritud ja arendajad saavad kirjutada kvaliteetset koodi, saavutada arenduse paindlikkust ja suurendada juurutamiste sagedust.<\/p>\n<p>Selles artiklis k\u00e4sitletakse viieetapilist l\u00e4henemist DevOps konveieri loomisele, mis on sarnane j\u00e4rgmisel joonisel kajastatule, kasutades avatud l\u00e4htekoodiga t\u00f6\u00f6riistu.<\/p>\n<h3>1. etapp: CI\/CD meetodid<\/h3>\n<p>\nEsimene asi, mida vajate \u2013 CI\/CD t\u00f6\u00f6riist. Jenkins, avatud l\u00e4htekoodiga t\u00f6\u00f6riist, mis p\u00f5hineb Java-l ja levitatud MIT-litsentsi alusel, on see vahend, mis on populariseerinud DevOps suunda ja saanud de facto standardiks.<\/p>\n<p>Mis siis on Jenkins? Peate seda vaatama kui mingit maagilist universaalset puldi, mis saab suhelda erinevate teenuste ja t\u00f6\u00f6riistadega ning neid organiseerida. CI\/CD t\u00f6\u00f6riist nagu Jenkins iseenesest on kasututu, kuid see muutub v\u00f5imsamaks, kui see on \u00fchendatud erinevate t\u00f6\u00f6riistade ja teenustega.<\/p>\n<p>Jenkins on vaid \u00fcks paljusid avatud l\u00e4htekoodiga t\u00f6\u00f6riistu CI\/CD jaoks, mida saate kasutada DevOps-piiplaani ehitamiseks.<\/p>\n<p>Jenkins: Creative Commons ja MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>N\u00e4iteks kuidas n\u00e4evad DevOps-protsessid v\u00e4lja CI\/CD t\u00f6\u00f6riistaga:<\/p>\n<p><img decoding=\"async\" alt=\"Algajate juhend: loome DevOps-pipe\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Teil on CI\/CD t\u00f6\u00f6riist, mis t\u00f6\u00f6tab teie localhostis, kuid praegu ei saa te palju teha. Liigume j\u00e4rgmisse etappi DevOpsi maailma.<\/p>\n<h3>Samm 2: Allika koodi haldamine<\/h3>\n<p>\nParim (ja v\u00f5ib-olla lihtsaim) viis kontrollida, kas teie CI\/CD t\u00f6\u00f6riist suudab teha imesid - integreeruda allika koodi haldust\u00f6\u00f6riistaga (SCM). Miks vajate allika koodi haldust? Oletame, et arendate rakendust. Iga kord, kui loote rakenduse, kodeerite, ja pole t\u00e4htis, kas kasutate Java, Python, C++, Go, Ruby, JavaScript v\u00f5i m\u00f5nda muud miljardit programmeerimiskeelt. Teie kirjutatud kood on allika kood. Alguses, eriti kui t\u00f6\u00f6tate \u00fcksi, on t\u00f5en\u00e4oliselt v\u00f5imalik k\u00f5ik paigutada kohalikku katalooge. Kuid kui projekt kasvab ja kutsute teisi koost\u00f6\u00f6ks, vajate viisi konfliktide v\u00e4ltimiseks ja muudatuste t\u00f5husaks vahetamiseks. Te vajate ka viisi varasema versiooni taastamiseks, sest varundamine ja kopeerimine\/kleepimine on juba vananenud. Te vajate (ja teie meeskonnakaaslased) midagi paremat.<\/p>\n<p>Siin muutub allika koodi haldust\u00f6\u00f6riist praktiliselt vajalikuks. See t\u00f6\u00f6riist hoiab teie koodi hoidlas, j\u00e4lgib versioone ja koordineerib projekti osalejate t\u00f6\u00f6d.<\/p>\n<p>Kuigi on palju allika koodi haldust\u00f6\u00f6riistu, on Git standard ja see peab paika. Soovitan tungivalt kasutada Git'i, kuigi soovi korral on ka teisi avatud l\u00e4htekoodiga alternatiive.<\/p>\n<p>Git: GPLv2 ja LGPL v2.1<br \/>\nSubversion: Apache 2.0<br \/>\nConcurrent Versions System (CVS): GNU<br \/>\nVesta: LGPL<br \/>\nMercurial: GNU GPL v2+<\/p>\n<p>Nii n\u00e4eb DevOps'i torujuhe v\u00e4lja koos allika koodi haldust\u00f6\u00f6riistade lisamisega.<\/p>\n<p><img decoding=\"async\" alt=\"Algajate juhend: loome DevOps-pipe\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>CI\/CD t\u00f6\u00f6riist suudab automatiseerida kontrollimise, allika koodi hankimise ja meeskonnakaaslaste koost\u00f6\u00f6 protsesse. Pole paha? Aga kuidas muuta see t\u00f6\u00f6tavaks rakenduseks, mida miljardid inimesed saaksid kasutada ja hinnata?<\/p>\n<h3>Samm 3: Automatiseerimise t\u00f6\u00f6riista loomine<\/h3>\n<p>\nSuurep\u00e4rane! Saate kontrollida koodi ja teha muudatusi allika juhtimiss\u00fcsteemis ning kutsuda oma s\u00f5pru koost\u00f6\u00f6sse arendusse. Kuid te pole veel rakendust loonud. Veebirakenduse loomiseks tuleks see kompileerida ja pakkida kasutamiseks valmis paketivormingusse v\u00f5i k\u00e4ivitada t\u00e4itmisfailina. (Pange t\u00e4hele, et t\u00f5lgendatud programmeerimiskeel, n\u00e4iteks JavaScript v\u00f5i PHP, ei vaja kompileerimist).<\/p>\n<p>Kasutage koostamise automatiseerimise t\u00f6\u00f6riista. S\u00f5ltumata sellest, millisest koostamise automatiseerimise t\u00f6\u00f6riistast otsustate kasutada, on nende peamine eesm\u00e4rk \u00fcks ja sama: koguda allika kood soovitud vormingusse ning automatiseerida puhastamise, kompileerimise, testimise ja teatud keskkonda jagamise \u00fclesanne. Koostamise t\u00f6\u00f6riistad erinevad s\u00f5ltuvalt teie programmeerimiskeelest, kuid siin on m\u00f5ned \u00fcldised avatud l\u00e4htekoodiga variandid.<\/p>\n<p>Nimi<br \/>\nLitsents<br \/>\nProgrammeerimiskeel<\/p>\n<p>Maven<br \/>\nApache 2.0<br \/>\n Java<\/p>\n<p>Ant<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Gradle<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Bazel<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Make<br \/>\nGnu\u2019s Not Unix), mille eesm\u00e4rgiks on arendada s\u00fcsteemikomponente, et luua vabalt kasutatav Unix'i analoog, mis v\u00f5imaldab t\u00e4ielikult loobuda suletud tarkvarast. GNU juhtimisel on moodustatud vabade projektide kogukond, mis liiguvad \u00fchise eesm\u00e4rgi suunas ja arenevad \u00fchtse ideoloogia ja filosoofia kohaselt. Alguses olid projekti keskseid elemente<br \/>\nN\/A<\/p>\n<p>Grunt<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Gulp<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Buildr<br \/>\nApache<br \/>\nRuby<\/p>\n<p>Rake<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>A-A-P<br \/>\nGnu\u2019s Not Unix), mille eesm\u00e4rgiks on arendada s\u00fcsteemikomponente, et luua vabalt kasutatav Unix'i analoog, mis v\u00f5imaldab t\u00e4ielikult loobuda suletud tarkvarast. GNU juhtimisel on moodustatud vabade projektide kogukond, mis liiguvad \u00fchise eesm\u00e4rgi suunas ja arenevad \u00fchtse ideoloogia ja filosoofia kohaselt. Alguses olid projekti keskseid elemente<br \/>\nPython<\/p>\n<p>SCons<br \/>\nMIT<br \/>\nPython<\/p>\n<p>BitBake<br \/>\nGPLv2<br \/>\nPython<\/p>\n<p>Kook<br \/>\nMIT<br \/>\nC#<\/p>\n<p>ASDF<br \/>\nExpat (MIT)<br \/>\nLISP<\/p>\n<p>Cabal<br \/>\nBSD<br \/>\nHaskell<\/p>\n<p>Suurep\u00e4rane! Saate paigutada automatiseerimise t\u00f6\u00f6riista konfiguratsioonifailid allika juhtimisse ja lasta oma CI\/CD t\u00f6\u00f6riistal k\u00f5ik kokku panna.<\/p>\n<p><img decoding=\"async\" alt=\"Algajate juhend: loome DevOps-pipe\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00f5ik on h\u00e4sti, eks? Aga kuhu jagada oma rakendust?<\/p>\n<h3>Samm 4: Veebirakenduste server<\/h3>\n<p>\nPraegu on teil pakitud fail, mis v\u00f5ib olla nii t\u00e4itmisfail kui ka installitav. Selleks, et rakendus oleks t\u00f5eliselt kasulik, peab see pakkuma mingit teenust v\u00f5i liidest, kuid teil on vaja konteinerit oma rakenduse hoidmiseks.<\/p>\n<p>Veebirakenduste server on just selline konteiner. Server pakub keskkonda, kus saab m\u00e4\u00e4ratleda jagatud paketi loogika. Samuti pakub server liidest ja pakub veebiteenuseid, avades pordid v\u00e4lismaailmale. Teil on vaja HTTP-serverit ja ka mingit keskkonda (nt virtuaalmasinat) selle installimiseks. Ja samas, oletame, et saate sellest hiljem teada (kuigi r\u00e4\u00e4gin konteineritest allpool).<\/p>\n<p>On mitmeid avatud l\u00e4htekoodiga veebirakenduste servereid.<\/p>\n<p>Nimi<br \/>\nLitsents<br \/>\nProgrammeerimiskeel<\/p>\n<p>Tomcat<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Jetty<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>WildFly<br \/>\nGNU Lesser Public<br \/>\nJava<\/p>\n<p>GlassFish<br \/>\nCDDL &amp; GNU Less Public<br \/>\nJava<\/p>\n<p>Django<br \/>\n3-Clause BSD<br \/>\nPython<\/p>\n<p>Tornado<br \/>\nApache 2.0<br \/>\nPython<\/p>\n<p>Gunicorn<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Python<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Rails<br \/>\nMIT<br \/>\nRuby<\/p>\n<p>Node.js<br \/>\nMIT<br \/>\nJavascript<\/p>\n<p>Teie DevOps torujuhe on peaaegu valmis kasutamiseks. H\u00e4sti tehtud!<\/p>\n<p><img decoding=\"async\" alt=\"Algajate juhend: loome DevOps-pipe\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kuigi sellel saab peatuda ja tegeleda integratsiooniga iseseisvalt, on koodikvaliteet rakenduste arendaja jaoks oluline asi ning sellega tuleb tegeleda.<\/p>\n<h3>Samm 5: Koodi testimise katmine<\/h3>\n<p>\nTestide rakendamine v\u00f5ib olla veel \u00fcks mahukas n\u00f5ue, kuid arendajad peavad rakenduses varakult kinni p\u00fc\u00fcdma k\u00f5ik vead ning parandama koodi kvaliteeti, et tagada, et l\u00f5ppkasutajad oleksid rahul. \u00d5nneks on saadaval palju avatud l\u00e4htekoodiga t\u00f6\u00f6riistu teie koodi testimiseks ja selle kvaliteedi parandamise soovituste koostamiseks. Veelgi parem on see, et enamik CI\/CD t\u00f6\u00f6riistu saavad nendega \u00fchenduda ja protsessi automatiseerida.<\/p>\n<p>Koodi testimine koosneb kahest osast: kooditestimise raamistike, mis aitavad testide kirjutamisel ja k\u00e4ivitamisel, ja soovituste koostamise t\u00f6\u00f6riistadest, mis aitavad parandada koodi kvaliteeti.<\/p>\n<p><b>Koodi testimiss\u00fcsteemid<\/b><\/p>\n<p>Nimi<br \/>\nLitsents<br \/>\nProgrammeerimiskeel<\/p>\n<p>JUnit<br \/>\nEclipse'i avalik litsents<br \/>\nJava<\/p>\n<p>EasyMock<br \/>\nApache<br \/>\nJava<\/p>\n<p>Mockito<br \/>\nMIT<br \/>\nJava<\/p>\n<p>PowerMock<br \/>\nApache 2.0<br \/>\nJava<\/p>\n<p>Pytest<br \/>\n MIT<br \/>\nPython<\/p>\n<p>Hypothesis<br \/>\nMozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p><b>Koodi kvaliteedi parandamise soovituss\u00fcsteemid<\/b><\/p>\n<p>Nimi<br \/>\nLitsents<br \/>\nProgrammeerimiskeel<\/p>\n<p>Cobertura<br \/>\nGnu\u2019s Not Unix), mille eesm\u00e4rgiks on arendada s\u00fcsteemikomponente, et luua vabalt kasutatav Unix'i analoog, mis v\u00f5imaldab t\u00e4ielikult loobuda suletud tarkvarast. GNU juhtimisel on moodustatud vabade projektide kogukond, mis liiguvad \u00fchise eesm\u00e4rgi suunas ja arenevad \u00fchtse ideoloogia ja filosoofia kohaselt. Alguses olid projekti keskseid elemente<br \/>\nJava<\/p>\n<p>CodeCover<br \/>\nEclipse'i avalik (EPL)<br \/>\nJava<\/p>\n<p>Coverage.py<br \/>\n Apache 2.0<br \/>\nPython<\/p>\n<p>Emma<br \/>\n\u00dchine avalik litsents<br \/>\nJava<\/p>\n<p>JaCoCo<br \/>\n Eclipse'i avalik litsents<br \/>\nJava<\/p>\n<p>Hypothesis<br \/>\n Mozilla<br \/>\nPython<\/p>\n<p>Tox<br \/>\nMIT<br \/>\nPython<\/p>\n<p>Jasmine<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Karma<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Mocha<br \/>\n MIT<br \/>\nJavaScript<\/p>\n<p>Jest<br \/>\nMIT<br \/>\nJavaScript<\/p>\n<p>Pange t\u00e4hele, et enamiku \u00fclalmainitud t\u00f6\u00f6riistade ja raamistike kirjutamise keel on Java, Python ja JavaScript, kuna C++ ja C# on patenteeritud programmeerimiskeeled (kuigi GCC-l on avatud l\u00e4htekood).<\/p>\n<p>N\u00fc\u00fcd, kui olete rakendanud koodi katmise t\u00f6\u00f6riistad, peaks teie DevOps-i torujuhe v\u00e4lja n\u00e4gema nagu diagramm, mis on esitatud selle juhendi alguses.<\/p>\n<h3>T\u00e4iendavad sammud<\/h3>\n<p>\n<b>Konteinerid<\/b><\/p>\n<p>Nagu ma juba \u00fctlesin, v\u00f5ite oma serveri paigutada virtuaalmasinale v\u00f5i serverisse, kuid konteinerid on populaarne lahendus.<\/p>\n<p>Mis on konteinerid? L\u00fchike seletus on see, et virtuaalmasin vajab operatsioonis\u00fcsteemi jaoks tohutut m\u00e4lu, mis \u00fcletab rakenduse suuruse, samas kui konteiner vajab ainult m\u00f5ningaid teeke ja seadistusi rakenduse k\u00e4itamiseks. Ilmselt on virtuaalmasinal endiselt olulised kasutusvaldkonnad, kuid konteiner on kerge lahendus rakenduse, sealhulgas rakenduste serveri, majutamiseks.<\/p>\n<p>Kuigi on ka teisi konteinerite valikuid, on k\u00f5ige populaarsemad Docker ja Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Vaheautomationi vahendid<\/b><\/p>\n<p>Meie DevOps-i torujuhe on peamiselt suunatud rakenduste \u00fchisloomisele ja juurutamisele, kuid DevOps-i t\u00f6\u00f6riistade abil on v\u00f5imalik teha ka palju muid asju. \u00dcks neist on infrastruktuuri koodi kaudu (IaC) t\u00f6\u00f6riistade kasutamine, mida tuntakse ka vaheautomaatika vahenditena. Need t\u00f6\u00f6riistad aitavad automatiseerida installatsiooni, haldamist ja muid \u00fclesandeid vaheprogrammi jaoks. N\u00e4iteks v\u00f5ib automaatikat\u00f6\u00f6riist ekstrakteerida rakendusi, nagu veebirakenduse server, andmebaas ja j\u00e4lgimist\u00f6\u00f6riist, koos \u00f5ige konfiguratsiooniga ja juurutada need rakenduste serverisse.<\/p>\n<p>Siin on m\u00f5ned avatud l\u00e4htekoodiga vaheautomaatika t\u00f6\u00f6riistad:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache v\u00f5i GPL<\/p>\n<p><img decoding=\"async\" alt=\"Algajate juhend: loome DevOps-pipe\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Uurige, kuidas saada n\u00f5utud ametit nullist v\u00f5i taset t\u00f5sta oma oskustes ja palgas, osaledes SkillFactory tasulistes veebikursustes:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/devops?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DEVOPS&amp;utm_term=regular&amp;utm_content=07072002\">DevOpsi kursus<\/a><\/noindex> (12 kuud)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">veel kursusi<\/b><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/ml-programma-machine-learning-online?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=ML&amp;utm_term=regular&amp;utm_content=07072002\">Masin\u00f5ppe kursus<\/a><\/noindex> (12 n\u00e4dalat)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/data-scientist?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=DST&amp;utm_term=regular&amp;utm_content=07072002\">Andmete teaduse ametikoolitus nullist<\/a><\/noindex> (12 kuud)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/analytics?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=SDA&amp;utm_term=regular&amp;utm_content=07072002\">Anal\u00fc\u00fctiku elukutse igasuguse algtaseme jaoks<\/a><\/noindex> (9 kuud)<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/skillfactory.ru\/python-for-web-developers?utm_source=infopartners&amp;utm_medium=habr&amp;utm_campaign=PWS&amp;utm_term=regular&amp;utm_content=07072002\">Kursused \"Python veebiarenduseks\"<\/a><\/noindex> (9 kuud)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Kasutulik<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 tasuta kursust Ivy League'ist<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Andmete teaduse trendid 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Andmete teadus on surnud. Elagu \u00e4riteadus.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Andmete teadus steroidide peal: tutvustus Decision Intelligence'ile.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">K\u00f5ige edukam ja k\u00f5ige skandaalsem andmete teaduse projekt: Cambridge Analytica.<\/a><\/noindex><\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/509964\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432. DevOps \u0441\u0442\u0430\u043b \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445, \u0440\u0430\u0437\u043e\u0431\u0449\u0435\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043d\u0435\u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0433\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u0442\u043e\u043c \u0447\u0442\u043e, \u0435\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442\u0435, \u0441 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0430\u0442\u044c, \u0442\u043e \u0432\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":87468,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-87467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-08T11:42:11+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Algajate juhend: loome DevOps-i torujuhe | ProHoster","description":"Kui olete DevOpsi uus, vaadake seda juhendit oma esimese viie etapi toru loomiseks.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u0441\u043e\u0437\u0434\u0430\u0435\u043c DevOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d | ProHoster","og:description":"\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u043e\u0432\u0438\u0447\u043e\u043a \u0432 DevOps, \u0432\u0437\u0433\u043b\u044f\u043d\u0438\u0442\u0435 \u043d\u0430 \u044d\u0442\u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044e \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u0430 \u0438\u0437 \u043f\u044f\u0442\u0438 \u044d\u0442\u0430\u043f\u043e\u0432.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-08T11:42:11+00:00","article:modified_time":"2020-07-08T11:42:11+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"87467","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 13:50:31","updated":"2022-09-29 03:37:01","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}