Automated infrastructure

  • View
    167

  • Download
    1

Embed Size (px)

Transcript

Automated Infrastructure

Automated InfrastructureLaurynas Tretjakovaslaurynas.tretjakovas@gmail.comKaunas Java User Group, 201411Agenda Manual Infrastructure vs Automated Infrastructure Puppet Docker Vagrant Demo Q & AKaunas Java User Group, 20142Kalbsiu apie:Rankomis valdom infrastruktr ir jos minusus,Automatin infrastruktr ir jos pliusais/minusaisTuomet konkreiai paneksiu apie kelet automatins infrastruktros ranki: Vagrant, Puppet ir Docker.

Tuomet parodysiu demo su Docker ir kaip jame paleisti java aplikacij.

Apie kiekvien i i technologij atskirai galima padaryti po prezentacij, todl iandien paliesime tik pat paviri ir svarbiausius dalykus.2Manual vs AutomatedAutomated infrastructure has the following benefits:Version control the configurationReusableCheaper for the organizationProvision a fleet of nodes with a single clickWorks well with continious integration and deliveryNew servers on demand scalabilitySmaller chance for human errorIs fun, motivates and creates a sense of accomplishmentKaunas Java User Group, 20143Jeigu infrastruktr yra automatin, tai reikia kakokio bdo kaip t infrastruktr aprayt. Jeigu turim kaip j aprayt, reikias galim ir versijuot. O jeigu galim versijuot tai galim ir atrevertint esant reikalui.

Galima pernaudot pilnas konfiguracijas ar jos dalis. Pvz turite konfigracijos modulius Javai, Tocmatui, Jboss. Kitam projektui prireik nauj aplink, bet tik su Java, Pamt Java modul ir paleidot ant nauj serveri, viskas.

Automatin infrastruktr yra pigiau. Tarkime turime organizacij usiemania smulkiais projektais. Kiekvienam projektui turi DEV, TEST, PROD aplinkas, load balancerius ir kelet duomen bazi. Labai nesunkiai serveri skaiius gali iaugti iki 100 ir tai tikrai nra daug. Jeigu rankomis valdot infrastruktr, praktikai kiekvienam i projekt reiks dedikuoto mogaus aplinkoms valdyti. Jeigu netursi kiekvienam atskirai, tai gali turt bendrai kokius 10 100 serveri, arba vien mog keliems projektams, bet daniausiai nutinka taip, kad t moni vistiek neutenka ir darbai stringa, ypa atsiradus naujoms saugumo spragoms, kurios pastaruoju metu tikrai padanjo. Kaip buvo su shellsock. Tik paskelb apie tai, visi pradjo exploitinti per botnetus, paleidinti vulnerability scannerius, tokias spragas reikia labai greitai reaguoti. Rankinje infrastruktroje administratoriai eis per kiekvien server ir updatins bash, o projekt darbai tuo metu lauks.Su automatine infrastruktra galima turti vos kelet moni, kurie sps padaryt darbus. I pradi gali bt sunkiau, bet poto kai jau turs daug pernaudojam dali, bus ymiai greiiau ir paprasiau.Taip pat galima valdyti useri roles, kiekviename serveryje rankomis nekurti useri.

Kaip ir minjau ankiau, galimyb vienu kartu visiems serveriams ar serveri grupei atlikti kakokius pakeitimus ir nesijungiant ir nesitreliojant su kiekvienu atskirai.

Galima automatikai konfigruoti naujos jenkins slaves. Nauj serverio konfigracija tampa visos aplikacijos deliverinimo etapu.

Taip pat automatins infrastruktros sistemos labai gerai veikia kartu su monitorinimo sistemomis. Jeigu js visi serveriai cloude, js galite labai lengvai paprayti naujo serverio arba esamus paalinti. Amazon AWS leidia monitorinti traffic ir pasiekus tam tikr lyg, pridti nauj serveri stack. Automatin infrastruktros sistema tada t server sukonfigruoja ir ideda ten aplikacij. Naudojant kakokia kit cloud sistema galima pasileisti koki kit monitorinimo sistem ir serverius kurti per API callsus.

Kuo daugiau ingsni reikia atlikti rankomis, tuo didesn tikimyb, kad bus padaryta kakokia klaida. Su atuomatine infrastruktro taip nebus, jeigu buvo itestuota.

Ir toks taip vadinamas added bonus tai, kad tai yra ymiai domiau, linksmiau ir svarbiausia motyvuoja. Tai tok nuobod darb kaip serveri administravimas gali padaryt dom ir patiems programuotojams. O kai kak tokio padarai tai ir pats jauti pasitenkinim.3Kaunas Java User Group, 20144

Puppet Open source configuration management utility Ensures that the node is in a defined state Ruby DSL Cross-platform Agents can fetch configuration form the master Enterprise edition is free if managing 10 or less nodes Lots of modules in Puppet ForgeKaunas Java User Group, 20145Vis pirma, yra ir kit alternatyv. Btinai pasidomkite apie Chef ir Ansible. Pasakoju apie puppet nes kolkas tik su juo turiu patirties.

Tai puppet yra open source main konfigravimo sistema.

Tai i pradi reikia suprasti kaip tokios sistemos skiriasi nuo paprast shell script. Su shell scriptais taip pat galima iki tam tikro lygio automatizuoti infrastruktr. Taiau naudojant shell scriptus, tu apraai k reikia padaryti, pvz rayk man duombaz, tada ukelk tokius duombazs konfigracijos failus, tada rayk man tomcat, tada dar kak ir dar kak... Taiau tokie dalykai labai greitai grina kai bandai t pat reikal paleisti antr kart. Esant paprastiems install komandoms tai nepasijauia, bet sudtingesniai scenarijais jau reikia tikrinti ar scriptas leidiasi pirm kart ar ne. Tai va, shell scriptams reikia pasakyti k daryti, o puppetui tu sakai kokiam state turi bti maina. Reikias tu sakai, kad tau reikia duombazs su tokia ir tokia konfigracija ir tomcato, tada jeigu pirm kart paleisi visk surays. Jeigu antr kart paleisi jau nieko nedarys. Jeigu rankom prikeitaliosi duombazs konfigus, tai vl paleidus jis tau tik configus pakeis tuos kuriuos apraei. odiu utikrina mainos state. Ir toks dalykas yra netgi ymiai skaitomesnis, nes tau nebereikia skaityt k shell scriptas daro ir koks viso to yra tikslas ir koks bus rezultatas, i puppet manifest viskas labai aikiai matosi.

Naudoja Ruby DSL

Veikia ant populiariausi linux distribucij, taip pat ir ant windows.

Paprastai manifestai turi bti tame paiame serveryje kuris bus konfigruojamas. Reikias prie tai server reikia rayti puppet, ten sukelti failus ir paleisti komand, taiau galima sukonfigruoti ir master server. Master serveris saugos visas agent konfiracijas ir kompiliuos manifestus, o agentai paprays konfigracijos ir masteris pats susigaudys kuri konfiguracij jam reikia grinti. Agentas tuomet sivykdis tuos skriptus.

Pats puppet yra open source, taiau yra ir enterprise versija. Enterprise versisjoje pagrinde yra WEB UI, kuriame galima matyti master serverius ir visus agentus, taip pat kada ten buvo paskutin kart provisioninta ir panaiai.

Daugumai dalyk jau yra parayti moduliai ir patalpinti puppet forge, kuriuos tereikia parsisisti.5Puppet Puppet configuration files are called manifests Manifests do not apply actions from top to bottom, they use relationships to determine the order, in which the resources should be set upKaunas Java User Group, 20146

6PuppetKaunas Java User Group, 20147

7Kaunas Java User Group, 20148

8Kaunas Java User Group, 20149

Kaunas Java User Group, 201410

Kaunas Java User Group, 201411

Puppet Do not forget to define dependencies Test your configuration with CI, use puppet parser validate and puppet-lint Write module tests Use puppet librarian to update and install modules Manage node configuration with Hiera Write classes and in the main fail only include the classesKaunas Java User Group, 201412Primenu, kad manifeste nevyksta reikalai nuo viraus apai, nepamirkit nurodyti ryius

Konfigracijai galima pakurti ci, kuris kiekvieno commito metu, paleist parser ar sintaks validi ir pranet apie puppet-lint klaidas ir warningus

manoma testus rayti, gal iek tiek per daug laiko uimti, nes dauguma dalyku sunku patestuoti realiai nepaleidus ir nepacheckinus kas vyko

Norint pasiimti modul i puppet forge, reikia rayti puppet module install arba naudoti puppet librarian. Puppet librarian i nurodyto failo parsis modulius katalog arba atnaujins. Poto paleidiant puppet reikia nurody dvi moduli direktorijas savo parayt ir kur librarian updatina

Naudokit Hiera. Hiera yra key value storageas konfigracijai. Reikias kiekvienas nodas gali turti konfigus, su tais paiais raktais, bet skirtingom reikmm. Tada manifestuose juos galima naudoti ir turti tik vien manifesto faila vienai main grupei.12Kaunas Java User Group, 201413

Docker An open source platform for developers and system administrators to build, ship, and run distributed applications Dockerized apps are portable and can run on most popular Linux distributions On other OS, use boot2docker VM a lightweight Linux distribution made specifically to run Docker containers System administrators can use Docker to standardize development environments and abstract away differences in different OS distributions Docker hub contains thousands of appsKaunas Java User Group, 201414Dockeris yra opensourcin linux konteineri sistem. Supakuoji aplikacij docker konteinerius ir poto gali leist kur nori ant daugumos linux distribucij

Jeigu ant js os dockeris neveikia, galima paleisti ant VM. Boot2docker ~30MB ir usikrauna per ~5sec

Galima naudoti docker vis aplink standartizavimui. Kiekvienas docker imageas turi turti base image, pagrind. Toks pagrindas gali bti standartizuotas monje. Jeigu pasikeiia pagrindas, poto daug darbo nereikia, kad ant najo visk perdaryt

Yra docker hub kur jau yra dockerizuota daug aplikacij, yra tomcatai jbosstai ir tt, duombazs vairios. Tokias duombazes labai patogu naudot dirbant lokaliai14Kaunas Java User Group, 201415

15Docker ImagesDocker image is a read-only template. An image could contain an Ubuntu operating system with Tomcat and your web application installed. Images are used to create Docker containers. Docker provides a simple way to build new images or update existing images, or you can download Docker images that other people have already created. Docker images are the build component of Docker

Kaunas Java User Group, 201416Docker RegistriesDocker registries hold images. These are public or private stores from which you upload or download images. The public