{"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\/sl\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","title":{"rendered":"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c DevOps-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>\u010ce ste novinec v DevOps-u, si oglejte ta priro\u010dnik za ustvarjanje svojega prvega kontejnerja v petih korakih.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c DevOps-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.\" src=\"\/wp-content\/uploads\/2020\/07\/605ed7d81323d0b5e094f7f912f8c669.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>DevOps je postala standardna re\u0161itev za re\u0161evanje po\u010dasnih, razdrobljenih ali nefunkcionalnih procesov razvoja programske opreme. Te\u017eava je v tem, da \u010de ste novinec v DevOps-u in ne veste, kje za\u010deti, vam morda primanjkuje razumevanja teh metod. V tem \u010dlanku bomo opredelili DevOps kontejner ter ponudili navodila za njegovo ustvarjanje v petih korakih. \u010ceprav to priro\u010dno besedilo ni iz\u010drpno, vam mora zagotoviti osnovo za za\u010detek va\u0161e poti in \u0161iritev znanja v prihodnje. Naj za\u010dnemo s zgodovino.<\/p>\n<h3>Moja pot v DevOps<\/h3>\n<p>\nPrej sem delal v obla\u010dni ekipi Citi Group, kjer sem razvijal spletno aplikacijo Infrastructure-as-a-Service (IaaS) za upravljanje obla\u010dne infrastrukture Citi, a me je vedno zanimalo, kako bi proces razvoja lahko postal bolj u\u010dinkovit in prinesel pozitivne kulturne spremembe v ekipo razvijalcev. Odgovor sem na\u0161el v knjigi, ki jo je priporo\u010dil Greg Lavender, tehni\u010dni direktor Citi za obla\u010dno arhitekturo in infrastrukturo. Knjiga se je imenovala 'Projekt Feniks' (<noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/dp\/B078Y98RG8\/\">The Phoenix Project<\/a><\/noindex>), in razlo\u017ei na\u010dela DevOps-a, berljiva pa je kot roman.<\/p>\n<p>V tabeli na zadnji strani knjige je prikazano, kako pogosto razli\u010dna podjetja izvajajo svoje sisteme v okolju za izdajo razli\u010dic:<\/p>\n<p>Amazon: 23.000 na dan<br \/>\nGoogle: 5.500 na dan<br \/>\nNetflix: 500 na dan<br \/>\nFacebook: Enkrat na dan<br \/>\nTwitter: 3-krat na teden<br \/>\nTipi\u010dno podjetje: Enkrat na 9 mesecev<\/p>\n<p>Kako je sploh mogo\u010de, da Amazon, Google in Netflix dosegajo take hitrosti? Vse zato, ker so ta podjetja na\u0161la na\u010dine, kako ustvariti skoraj popoln DevOps kontejner.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nNismo bili daleko od toga sve dok nismo implementirali DevOps u Citi. U to vreme, moj tim je imao razli\u010dita okru\u017eenja, ali je implementacija na serverskom razvojnom okru\u017eenju bila potpuno ru\u010dna. Svi programeri su imali pristup samo jednom razvojnog serveru zasnovanom na IBM WebSphere Application Server Community Edition. Problem je bio u tome \u0161to se server isklju\u010divao svaki put kada su vi\u0161e korisnika istovremeno poku\u0161avalo da izvr\u0161i implementaciju, pa su programeri morali da obave\u0161tavaju jedni druge o svojim namerama, \u0161to je bilo prili\u010dno bolno. Osim toga, postojali su problemi sa niskim nivoom pokrivenosti koda testovima, komplikovanim ru\u010dnim procesima implementacije i nedostatkom mogu\u0107nosti pra\u0107enja implementacije koda povezanog sa odre\u0111enim zadatkom ili korisni\u010dkom pri\u010dom.<\/p>\n<p>Shvatio sam da ne\u0161to treba da se u\u010dini i prona\u0161ao sam kolegu s istim mi\u0161ljenjima. Dogovorili smo se da zajedno radimo na izradi prvog DevOps kanala \u2013 on je postavio virtuelnu ma\u0161inu i Tomcat server aplikacija, dok sam ja radio na Jenkinsu, integri\u0161u\u0107i Atlassian Jira i BitBucket, kao i radom na pokrivenosti koda testovima. Ovaj sporedni projekat bio je veoma uspe\u0161an: gotovo smo potpuno automatizovali mnoge procese, postigli prakti\u010dno 100% funkcionalnosti na\u0161eg razvojnog servera, omogu\u0107ili pra\u0107enje i unapredili pokrivenost koda testovima, kao i dodali mogu\u0107nost povezivanja grana u Git-u sa zadacima u Jiri ili implementacijom. Ve\u0107ina alata koje smo koristili za izgradnju na\u0161eg DevOps kanala imala je otvoren izvor.<\/p>\n<p>Sada shvatam koliko je na\u0161 DevOps kanal bio jednostavan: nismo koristili ekstenzije kao \u0161to su Jenkins fajlovi ili Ansible. Ipak, ovaj jednostavni kanal je dobro funkcionisao, mo\u017eda zahvaljuju\u0107i Pareto principu (poznatom i kao pravilo 80\/20).<\/p>\n<h3>Kratak uvod u DevOps i CI\/CD kanal<\/h3>\n<p>\n\u010ce vpra\u0161ate nekaj ljudi: 'Kaj je DevOps?', boste verjetno dobili ve\u010d razli\u010dnih odgovorov. DevOps, tako kot Agile, se je razvijal, da bi zajel \u0161tevilne razli\u010dne discipline, vendar se ve\u010dina ljudi strinja glede nekaterih stvari: DevOps je praksa razvoja programske opreme ali \u017eivljenjski cikel razvoja programske opreme (SDLC), katere osrednja na\u010dela so sprememba kulture, v kateri razvijalci in drugi delavci obstajajo v okolju, kjer:<\/p>\n<p>So avtomatizirane operacije, ki so bile prej opravljene ro\u010dno; <br \/>\nVsak dela tisto, kar najbolje zna;<br \/>\n\u0160tevilo namestitev v dolo\u010denem \u010dasovnem obdobju nara\u0161\u010da; Pove\u010duje se propustnost; <br \/>\nPove\u010duje se fleksibilnost razvoja.<\/p>\n<p>\u010ceprav pravi programski pripomo\u010dki niso edina stvar, ki je potrebna za ustvarjanje DevOps okolja, so nekateri pripomo\u010dki nujni. Klju\u010dni pripomo\u010dek je neprekinjeno integriranje in neprekinjeno uvajanje (CI\/CD). V tem cevovodu imajo okolja razli\u010dne faze (npr. DEV, INT, TST, QA, UAT, STG, PROD), mnoge operacije so avtomatizirane, razvijalci pa lahko pi\u0161ejo kakovostno kodo, dosegajo fleksibilnost razvoja in visoko frekvenco uvajanja.<\/p>\n<p>V tem \u010dlanku je opisan petstopenjski pristop k ustvarjanju DevOps cevovoda, ki je podoben tistemu, ki je prikazan na naslednji diagramu, ob uporabi odprtokodnih orodij.<\/p>\n<h3>Korak 1: Metode CI\/CD<\/h3>\n<p>\nPrvo, kar potrebujete, je orodje za CI\/CD. Jenkins, odprtokodno orodje, ki temelji na Javi in je distribuirano pod MIT licenco, je orodje, ki je populariziralo smer DevOps in postalo de facto standard.<\/p>\n<p>Kaj je torej Jenkins? Mislite nanj kot na nekak\u0161en \u010darobni univerzalni daljinski upravljalnik, ki lahko komunicira z razli\u010dnimi storitvami in orodji ter jih organizira. Sam CI\/CD pripomo\u010dek, kot je Jenkins, je brez uporabe, a postane bolj zmogljiv, ko se pove\u017ee z razli\u010dnimi orodji in storitvami.<\/p>\n<p>Jenkins je le eno od mnogih odprtokodnih orodij za CI\/CD, ki jih lahko uporabite za izgradnjo DevOps cevovoda.<\/p>\n<p>Jenkins: Creative Commons in MIT<br \/>\nTravis CI: MIT<br \/>\nCruiseControl: BSD<br \/>\nBuildbot: GPL<br \/>\nApache Gump: Apache 2.0<br \/>\nCabie: GNU<\/p>\n<p>Tako izgledajo DevOps procesi z orodjem CI\/CD:<\/p>\n<p><img decoding=\"async\" alt=\"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c DevOps-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.\" src=\"\/wp-content\/uploads\/2020\/07\/e937f3da170b24c53cb5d67a67a365bb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Imate orodje CI\/CD, ki deluje na va\u0161em lokalnem stre\u017eniku, a trenutno nimate veliko mo\u017enosti. Poglejmo naslednji korak na poti v svet DevOps.<\/p>\n<h3>Korak 2: Upravljanje sistemov za nadzor izvorne kode<\/h3>\n<p>\nNajbolj\u0161i (in morda najpreprostej\u0161i) na\u010din, da preverite, ali va\u0161e orodje CI\/CD lahko naredi \u010darovnijo, je integracija z orodjem za nadzor izvorne kode (SCM). Zakaj potrebujete nadzor nad izvorno kodo? Recimo, da razvijate aplikacijo. Vsaki\u010d, ko ustvarite aplikacijo, programirate, in ni pomembno, ali uporabljate Java, Python, C++, Go, Ruby, JavaScript ali katerikoli izmed milijonov programskih jezikov. Koda, ki jo pi\u0161ete, se imenuje izvorna koda. Na za\u010detku, \u0161e posebej, ko delate sami, je verjetno mogo\u010de vse shraniti v lokalni mapo. Toda ko projekt postane ve\u010dji in povabite druge k sodelovanju, potrebujete na\u010din za prepre\u010devanje konfliktov med u\u010dinkovitim izmenjevanjem sprememb. Potrebujete tudi na\u010din za obnovitev prej\u0161njih razli\u010dic, ker so varnostne kopije in kopiranje\/lepilo \u017ee zastarele. Vi (in va\u0161i sodelavci) potrebujete nekaj bolj\u0161ega.<\/p>\n<p>Tukaj postane orodje za nadzor izvorne kode prakti\u010dno nujno. To orodje hrani va\u0161o kodo v repozitorijih, spremlja razli\u010dice in usklajuje delo \u010dlanov projekta.<\/p>\n<p>\u010ceprav obstaja mnogo orodij za nadzor izvorne kode, je Git standard, kar dr\u017ei. Mo\u010dno priporo\u010dam uporabo Gita, \u010deprav, \u010de \u017eelite, so na voljo tudi druge mo\u017enosti z odprto kodo.<\/p>\n<p>Git: GPLv2 in 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>Tako izgleda DevOps cevovod z dodanim orodjem za nadzor izvorne kode.<\/p>\n<p><img decoding=\"async\" alt=\"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c DevOps-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.\" src=\"\/wp-content\/uploads\/2020\/07\/47793d73d3b496aa38e027ff116f729d.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Orodje CI\/CD lahko avtomatizira procese preverjanja, pridobivanja izvorne kode in sodelovanja med \u010dlani. Ni slabo? Ampak kako to spremeniti v delujo\u010do aplikacijo, da jo milijarde ljudi lahko uporabljajo in cenijo?<\/p>\n<h3>Korak 3: Ustvarjanje orodja za avtomatizacijo gradnje<\/h3>\n<p>\nOdli\u010dno! Lahko pregledate kodo in izvajate spremembe v sistemu za nadzor izvorne kode ter povabite svoje prijatelje k sodelovanju pri razvoju. Ampak \u0161e niste ustvarili aplikacije. Da bi ustvarili spletno aplikacijo, jo je treba prevesti in pakirati v razporejen paketni format ali zagnati kot izvr\u0161no datoteko. (Upo\u0161tevajte, da interpreterski programski jezik, kot sta JavaScript ali PHP, ne zahteva prevajanja).<\/p>\n<p>Izkoristite orodje za avtomatizacijo gradnje. Ne glede na to, katero orodje za avtomatizacijo gradnje se odlo\u010dite uporabiti, vsa zasledujejo isto ciljno, in sicer zgraditi izvorno kodo v \u017eeleno obliko ter avtomatizirati naloge \u010di\u0161\u010denja, prevajanja, testiranja in uvajanja v dolo\u010denem okolju. Orodja za gradnjo se bodo razlikovala glede na va\u0161 programski jezik, vendar so tu nekatere splo\u0161ne mo\u017enosti z odprto kodo.<\/p>\n<p>Ime<br \/>\nLicenca<br \/>\nProgramski jezik<\/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<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<br \/>\nPython<\/p>\n<p>SCons<br \/>\nMIT<br \/>\nPython<\/p>\n<p>BitBake<br \/>\nGPLv2<br \/>\nPython<\/p>\n<p>Cake<br \/>\nMIT<br \/>\nC#<\/p>\n<p>ASDF<br \/>\nExpat (MIT)<br \/>\nLISP<\/p>\n<p>Cabal<br \/>\nBSD<br \/>\nHaskell<\/p>\n<p>Super! Datoteke s konfiguracijo orodja za avtomatizacijo gradnje lahko shranite v sistem upravljanja izvorne kode in omogo\u010dite svojemu CI\/CD orodju, da vse pove\u017ee.<\/p>\n<p><img decoding=\"async\" alt=\"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c DevOps-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.\" src=\"\/wp-content\/uploads\/2020\/07\/573d613914d278e738a0fc7f05644b62.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Vse je v redu, kajne? Ampak kje zasaditi va\u0161o aplikacijo?<\/p>\n<h3>Korak 4: Stre\u017enik za spletne aplikacije<\/h3>\n<p>\nZaenkrat imate pakirano datoteko, ki je lahko izvr\u0161na ali namestitvena. Da bi bila katera koli aplikacija resni\u010dno koristna, mora nuditi neko storitev ali vmesnik, vendar potrebujete kontejner za gostovanje va\u0161e aplikacije.<\/p>\n<p>Stre\u017enik za spletne aplikacije je prav tak kontejner. Stre\u017enik zagotavlja okolje, v katerem je mogo\u010de definirati logiko razporejenega paketa. Poleg tega stre\u017enik nudi vmesnik in ponuja spletne storitve, odpira vti\u010dnice svetu. Potrebujete HTTP stre\u017enik in dolo\u010deno okolje (na primer virtualno napravo) za njegovo namestitev. In za zdaj, predpostavimo, da se boste o tem kmalu nau\u010dili ve\u010d (\u010deprav o kontejnerjih govorim spodaj).<\/p>\n<p>Obstaja ve\u010d stre\u017enikov za spletne aplikacije z odprto kodo.<\/p>\n<p>Ime<br \/>\nLicenca<br \/>\nProgramski jezik<\/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>Va\u0161 DevOps pipeline je gotovo spreman za kori\u0161tenje. Odli\u010dan posao!<\/p>\n<p><img decoding=\"async\" alt=\"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c DevOps-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.\" src=\"\/wp-content\/uploads\/2020\/07\/9c314e8a42f154ded3b16ec7bdf01f99.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Iako se ovdje mo\u017ee\u0161 zaustaviti i samostalno se baviti integracijom, kvaliteta koda je va\u017ena stvar za programere aplikacija, i o tome se treba brinuti.<\/p>\n<h3>Korak 5: Pokrivenost testiranja koda<\/h3>\n<p>\nImplementacija testova mo\u017ee biti jo\u0161 jedan zahtjevan korak, ali programeri trebaju uhvatiti sve gre\u0161ke u aplikaciji u ranoj fazi i pobolj\u0161ati kvalitetu koda kako bi osigurali zadovoljstvo krajnjih korisnika. Sre\u0107om, postoji mnogo alata s otvorenim izvorom za testiranje va\u0161eg koda i davanje preporuka za pobolj\u0161anje njegove kvalitete. Jo\u0161 bolje, ve\u0107ina CI\/CD alata mo\u017ee se povezati s ovim alatima i automatizirati proces.<\/p>\n<p>Testiranje koda sastoji se od dva dijela: okvira za testiranje koda koji poma\u017eu u pisanju i pokretanju testova, te alata za generiranje preporuka koji poma\u017eu u pobolj\u0161anju kvalitete koda.<\/p>\n<p><b>Sistemi testiranja koda<\/b><\/p>\n<p>Ime<br \/>\nLicenca<br \/>\nProgramski jezik<\/p>\n<p>JUnit<br \/>\nEclipse Public License<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>Sistemi preporuka za pobolj\u0161anje koda<\/b><\/p>\n<p>Ime<br \/>\nLicenca<br \/>\nProgramski jezik<\/p>\n<p>Cobertura<br \/>\nGNU<br \/>\nJava<\/p>\n<p>CodeCover<br \/>\nEclipse Public (EPL)<br \/>\nJava<\/p>\n<p>Coverage.py<br \/>\n Apache 2.0<br \/>\nPython<\/p>\n<p>Emma<br \/>\nCommon Public License<br \/>\nJava<\/p>\n<p>JaCoCo<br \/>\n Eclipse Public License<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>Imajte na umu da su ve\u0107ina alata i okvira navedenih iznad napisani za Java, Python i JavaScript, dok su C++ i C# vlasni\u010dki programski jezici (iako GCC tako\u0111er ima otvoreni izvor).<\/p>\n<p>Sada kada ste implementirali alate za pokrivenost koda testovima, va\u0161 DevOps pipeline trebao bi izgledati poput dijagrama prikazanog na po\u010detku ovog vodi\u010da.<\/p>\n<h3>Dodatni koraki<\/h3>\n<p>\n<b>Kontejnerji<\/b><\/p>\n<p>Kao \u0161to sam ve\u0107 spomenuo, mo\u017eete hostati svoj server na virtualnoj ma\u0161ini ili serveru, ali kontejneri su popularno rje\u0161enje.<\/p>\n<p>\u0160to su kontejneri? Kratak odgovor je da virtualna ma\u0161ina zahtijeva velike koli\u010dine memorije operativnog sistema koje prelaze veli\u010dinu aplikacije, dok kontejneru treba samo nekoliko knji\u017enica i konfiguracija za pokretanje aplikacije. O\u010digledno je da virtualne ma\u0161ine i dalje imaju va\u017ene primjene, ali kontejner je lagano rje\u0161enje za hostanje aplikacije, uklju\u010duju\u0107i aplikacijski server.<\/p>\n<p>Iako postoje i druge opcije kontejnera, najpopularniji su Docker i Kubernetes.<\/p>\n<p>Docker: Apache 2.0<br \/>\nKubernetes: Apache 2.0<\/p>\n<p><b>Orodja za avtomatizacijo vmesnika<\/b><\/p>\n<p>Na\u0161a DevOps cevovodna re\u0161itev je predvsem usmerjena v skupno ustvarjanje in uvajanje aplikacij, vendar obstaja \u0161e veliko drugih nalog, ki jih je mogo\u010de izvedeti z orodji DevOps. Eden od njih je uporaba orodij Infrastructure as Code (IaC), ki so prav tako znana kot orodja za avtomatizacijo vmesnika. Ta orodja pomagajo avtomatizirati namestitev, upravljanje in druge naloge za vmesno programsko opremo. Na primer, orodje za avtomatizacijo lahko pridobi aplikacije, kot so stre\u017eniki spletnih aplikacij, baze podatkov in orodja za spremljanje, z ustreznimi konfiguracijami in jih uvede na stre\u017eniku aplikacij.<\/p>\n<p>Tukaj je nekaj odprtokodnih orodij za avtomatizacijo vmesnika:<\/p>\n<p>Ansible: GNU Public<br \/>\nSaltStack: Apache 2.0<br \/>\nChef: Apache 2.0<br \/>\nPuppet: Apache ali GPL<\/p>\n<p><img decoding=\"async\" alt=\"\u0420\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c DevOps-\u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440.\" src=\"\/wp-content\/uploads\/2020\/07\/148ef7317ca5780b412241ddaec9dc76.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Izvedite podrobnosti, kako pridobiti iskano poklicno usposabljanje od za\u010detka ali nadgraditi svoje spretnosti in pla\u010do s pla\u010dljivimi spletnimi te\u010daji SkillFactory:<\/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\">Kurs o DevOps-u<\/a><\/noindex> (12 mesecev)<\/li>\n<\/ul>\n<p><\/p>\n<p>                        <b class=\"spoiler_title\">\u0161e te\u010daji<\/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\">Te\u010daj za strojno u\u010denje<\/a><\/noindex> (12 tednov)<\/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\">Obuka za profesiju Data Science od nule<\/a><\/noindex> (12 mesecev)<\/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\">Profesija analiti\u010dara sa bilo kojim po\u010detnim nivoom<\/a><\/noindex> (9 mesecev)<\/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\">Kurs \"Python za web razvoj\"<\/a><\/noindex> (9 mesecev)<\/li>\n<\/ul>\n<p><\/p>\n<h3>Koristno<\/h3>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503196\/\">450 besplatnih te\u010dajeva od Lige oli\u0161njak<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508450\/\">Trendov v Data Science 2020<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/508556\/\">Data Science je mrtva. Dolgo \u017eivel Business Science<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/506790\/\">Podatkovna znanost na steroidih: uvod v odlo\u010ditveno inteligenco<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillfactory\/blog\/503504\/\">Najbolj uspe\u0161en in najbolj kontroverzen projekt podatkovne znanosti: Cambridge Analytica<\/a><\/noindex><\/li>\n<\/ul>\n<p>Izvor: <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.5 - 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\/sl\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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\udd47Vodnik za za\u010detnike: ustvarjanje DevOps cevovoda | ProHoster","description":"\u010ce ste novinec v DevOps-u, si oglejte ta priro\u010dnik za ustvarjanje svojega prvega kontejnerja v petih korakih.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/rukovodstvo-dlya-nachinayushhih-sozdaem-devops-pajplajn","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/87467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=87467"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/87467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/87468"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=87467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=87467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=87467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}