Infrastructure as Code Introduction to DevOps andnfrastructure As Code Infrastructure as Code Rolands Mekšs A/S 4finance  ...
Infrastructure Complexity   < 80sMainframes
Infrastructure Complexity   < 80s     80s - 90sMainframes    Client              Server
Infrastructure Complexity   < 80s     80s - 90s         90sMainframes    Client     Multi-Tier apps              Server
Infrastructure Complexity   < 80s     80s - 90s         90s            2000sMainframes    Client     Multi-Tier apps   Dat...
Infrastructure Complexity in 2010sCloud Provider                              Client Data Center                          ...
Infrastructure ComplexityVirtual NodesPhysical Hardware
Concept of physical hardware blurs
Everything as a Service
Soon will hit 100 production server count (DB/Application/Web Proxies)Not counting testing / staging / UAT / DR environments
Agile development Quick reaction to requirements and change Short development sprints Develop small, incremental releases ...
Agile software delivery                                            Deploy                                    Risk         ...
Continuous delivery                                                                             Deploy                    ...
Separate teams   Development   Operations
Separate teams   Development        Operations     We want change
Separate teams, distinct goals   Development                    Operations     We want change              The answer is NO
Wall of confusion   Development         Operations     We want change   The answer is NO
Merge of concerns                    DevOps
What is DevOps More like an idea or collaborative culture/philosophy between technical teams Often stated as «Agile for Op...
DevOps team in 4finance Provide teams with processes and tools for better day to day project activities Automate environme...
Infrastructure as code
How do you provision new server?Adhoc actions – hack while it works
How do you provision new server?Adhoc actions – hack while it works       SNOWFLAKES ARE SPECIAL, SERVERS ARE NOT
How do you provision new server?Follow some documented instructions
Doing changes to servers manually involves               PEOPLE
Doing changes to servers manually involves                       PEOPLE   Terrible of doing things          repeatedly
Doing changes to servers manually involves                       PEOPLE   Terrible of doing things          repeatedly
More than80% of all mission-critical IT service outages are        due to PEOPLE and process errors
How do you provision new server?Use self written shell scripts   + Some sort of automation   + Version control possible   ...
How do you provision new server?Use self written shell scripts   + Some sort of automation   + Version control possible   ...
True story  Simple change as timezone setting        Options:        • Log in each affected server and change manually    ...
True story  Simple change as timezone setting        Options:        • Log in each affected server and change manually    ...
There got to be better way
We know how to handle change in softwaredevelopmentCode and configuration is in verison control systemUnit and integration...
Infrastructure should be treated like a code Packages installed, versions Server and application configuration (such as ti...
Infrastructure should be treated like a code Packages installed, versions Server and application configuration (such as ti...
Infrastructure as Code"Enable the reconstruction of the business fromnothing but a source code repository, anapplication d...
Netflix Chaos Monkey
Configuration management  Declarative specifications or policies                                   Setting                ...
Configuration management systems
How Puppet WorksManage infrastructure throughout its lifecycle
Puppet ResourcesResources – Puppet building blocks          user { dave:                ensure         =>    present,     ...
Resources – Puppet building blockspackage { apache2:       ensure=>installed}
Resources – Puppet building blockspackage { apache2:       ensure=>installed}                                     service ...
Resources – Puppet building blockspackage { apache2:       ensure=>installed}                                     service ...
Resources – Puppet building blockspackage { apache2:       ensure=>installed}                                     service ...
Puppet manifestspackage { "openssh":     ensure => present,}service { "sshd":   ensure => running,   hasstatus => true,   ...
Puppet templatespackage { "openssh":     ensure => present,                  Port <%= listen_port%>}                      ...
Reusable Configuration Modules
How Puppet Enforces Desired State
Node definitions in Puppet node base {               node { ‘my.prod.server.com’ inherits base   include openssh   include...
Development practices applied to infrastructure Version control & source code management IDEs, editors, refactoring tools ...
BDD with Puppet
Puppet development with VagrantA tool for building virtualized environments in your PCActually works as command line wrapp...
Vagrant – boxes and environments  $ vagrant box add lucid32 http://files.vagrantup.com  Vagrant::Config.run do |config|   ...
Vagrant – boxes and environments $ vagrant up $ vagrant provision $ vagrant ssh $ vagrant destroy
Modeling environment systems with Vagrant
Q&A
Introduction to DevOps
Introduction to DevOps
Upcoming SlideShare
Loading in...5
×

Introduction to DevOps

1,535

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,535
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
51
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide
  • Prezentācija divās daļās, Vienā skaidrojums par DevOps un esošajiem izaicinājumiemOtrā – Infrastructure as code, Configuration management un intro to Puppet
  • Viens no mūsdienu izaicinājumiem - aplikāciju deployment sarežģītība šādā vidēKatrai komponentei ir kādi savi deployment likumi, atkarības no citām komponentēmPievienojiet visam šim OS konfigurācijas, direktoriju struktūras, maintenance, security prasības, integrācijas ar ārējiem servisiem utt
  • Fiziska hardware koncepts izplūst, ar fiziskām iekārtām mūsdienās lielākoties saskaras tikai datu centru operations cilvēki.Vmware, kuru mēs visi pazīstam kā vienu no vadošajiem virtuālās infrastruktūras ražotājiem, to lieliski parāda savā prezentācijas materiālāVirs dzelžiem faktiski tiek uzbūvēts jauns abstrakcijas līmenis – «Virtuālā infrastruktūra»Mēs visi zinam cik viegli ir dabūt strādājošu mašīnu AWS, Rackspace vai citā coludā. API izsaukumi.Viss ir kļuvis par software.
  • Katru dienu katrs no mums saskaras ar kaut kādiem mākoņservisiemŠodien viss ir savstarpēji saslēdzams, visam ir savs API, kas ļauj sadarboties ar citām sistēmām, viss ir būvēts uz kādas no XaaS platformām.Even infrastructure teams are speaking in terms of virtual servers, virtual routers, virutal switches, virutal ethernet cards, virtual desktops, virtual &lt;insert your piece of hardware here&gt;Viss ir kā serviss
  • This pal of mine thinks that clouds are really made of ... clouds.
  • Daži fakti par infrastruktūruServeru skaits nopietni prasa pēc kaut kāda labāka risinājuma
  • Iteartīvais process – develop/deployJo lielākas iterācijas, jo lielāks risks
  • Software delivery may be agile and fast but it creates bottlenecks at QA gateway and Operations, because they are NOT agile and requires quite a lot of manual work
  • Development team – development, build, integrate, QA, software releaseOperations team – system administration, provisioning, configuration, health monitoring, change/release management
  • Veidot tādu kulturālu vidi kurā visi strādā pie viena mērķa, kur nav sienu pār kurām tiek mētātas atbildības.Panākt lai komandas var patstāvīgi veikt lielāko daļu daļu darba, kas sevī ietver pilnu ciklu no izstrādes līdz deployment produkcijā. Tajā pašā laikā nenolaužot kaklu infrastruktūras sarežģītībā
  • Automation that accelerates release times, eliminates manual work, reduces errors
  • Izrietot no iepriekšminētā, vispirms jāsaka, kas DevOps komanda nav – mūsu mērķis nav kļūt par atsevišķu web-operations administratoru komanduBet gan nodrošināt komandas ar vienotiem procesiem un rīkiem ar kuriem viņas pašas varētu veikt lielāko daļu ikdienas darbu, kas saistītas ar projekta dzīves cikla uzturēšanuMēs gribam nodrošināt komandas ar iespēju pašām būt saimniekiem saviem projektiem, ērti deployot produktu versijas, veikt konfigurācijas izmaiņas, monitorēt aplikācijas un pārvaldīt logus, ja vajag – modelēt aplikācijas izolētās virtuālās vidēs.
  • Esam piereģistrējamies X cloudā, izveidojam jaunas servera instancesGoogle, how to set up Postgres, Java, Tomcat, Apache.Pēc tam liekam savu aplikāciju, rediģējam konfigurācijas failus, skatamies kas neiet, kas iet, līdz viss strādā
  • Serveri kļūst kā sniegpārsliņas, ārēji līdzīgi, bet divus vienādus neatrastTā tas nedrīkst būt, serveru instalācija un konfigurācija nav un nedrīkst būt mākslaTam ir jābūt formālam, un pilnībā atkārtojamam procesamVisiem web serveriem jābūt instalētām vienām un Tām pašām pakotnēm, Tām pašām aplikāciju versijām, Jādarbojas tiem pašiem likumiem, un procesiem
  • Projekts aug, esam kļuvuši gudrāki, esam izveidojuši instalācijas un konfigurācijas dokumentāciju wiki lapāTagad process ir dokumentēts un atkārtojamsJaunu serveri varam sagatavot dienas laikā!Taču joprojām
  • Manuālu serveru instalēšanu un konfigurēšanu veic cilvēks
  • Cilvēkiem ļoti slikti padodas rutiniskas, atkārtotas darbībasCilvēks noteikti kādā momentā zaudējot uzmanību kļūdīsies
  • Kā arī – cilvēki ir lēni
  • Projekts aug, mums ir 50 serveri, esam kļuvuši gudrāki, tagad mums ir shell skripti.Ievērojami labāks risinājums par dokumentāciju, kuras gadījumā jāuztur ne tikai konfigurācija, bet arī dokumentācijaShell skriptus var turēt versiju kontroles sistēmāShell skripti strādā arī daudz lielāku serveru skaitu
  • Skripti pamatā darbojas tikai servera dzīves cikla sākumā, taču tie nepalīdz ar izmaiņām, kas noteikti būs. Ar šo patiesību mēs praktiski saskārāmies arī savā darbībā 4finance, kad sapratām, Šīs prakses vairs efektīvi nedarbojas pie mūsu mērogiem un attīstības tempiemMums bija izrtrādāti un joprojām lietojam labus shell skriptus ar kuriem mēs varam salīdzinoši ātri sagatavot jaunus serverusTie pat ir kustomizēti dažādām vidēm, test/stage dažādi parametriBet lielākās problēmas sagādā tieši izmaiņas dzīves ciklā un fakts, ka trūkst kaut kādas centralizētas konfigurācijas vadības
  • Daži fakti par infrastruktūruŠobrīd visa mūsu biznesa kritiskā infrastruktūra ir izvietota Rackspace cloudā99,95% piejamība, kas ir OK priekš mums, downtime galvenokārt dēļ kaut kādām infra problēmām, kuras risina galvenokārt Rackspace speciālisti.Serveru skaits nopietni prasa pēc kaut kāda labāka risinājuma
  • Logoties katrā serverī un manuāli mainīt laika zonu uzstādījumus.
  • Logoties katrā serverī un manuāli mainīt laika zonu uzstādījumus.Konfigurācijas peldēšana, manuālas novirzes no sākotnējās konfigurācijas
  • Mēs zinām kā pārvaldīt izmaiņas programmatūras izstrādēBūtu labi, ja arī infrastruktūrā mēs varētu tikpat paredzami veikt izmaiņas un būt par tām pārliecināti
  • Infrastruktūra būtu jāuztver kā kodsAprakstīt koda veidā instalējamās pakotnesServeru konfigurācijuSaiknes ar citiem serveriem
  • Infrastruktūra būtu jāuztver kā kodsAprakstīt koda veidā instalējamās pakotnesServeru konfigurācijuSaiknes ar citiem serveriem
  • Pašā dziļākajā būtībā, ideālais mērķis ir panākt tāda veida automatizāciju, ka, ja vienu dienu mūsu infrastruktūra kaut kāda iemesla pēc nav pieejama, mēs vienkārši citā datu centrā paceļam tādu pašu izmantojot tikai koda repozitoriju datu rezerves kopijas.
  • Netflix – pasaules lielākais interneta video streaming serviss.Viens no redzamākajiem automatizācijas piemēriem internetāAmazon AWS balstīts servissCik gudra doma ir ielaist pērtiķi serveru telpā?Tiks izrauti vadi, apgāztas kaut kādas iekārtas.Varbūt tas ir labi, mēs redzēsim, cik mūsu sistēma ir droša pret dažāda veida atteikumiemNetflix izstrādājuši analogu DR sistēmu pērtiķim, kura AWS cloudā izslēdz serveru instances.Izraisītas 65000 instanču problēmasDara regulāri un plānotiJa esam pārliecināti ka mūsu arhitektūra ir bojājumu piecietīga šodien, vai mēs varam būt droši ka tā tāda būs pēc mēnešaLabākā aizsardzība pret negaidītām problēmām ir iekulties problēmās biežiFail oftenLabāk sistēmu labot 10:00 pie kafijas krūzes nekā sestdien 3:00 un nezināt ko darīt.
  • Atbilde uz daudziem mūsu jautājumiem ir – konfigurācijas vadība.Jēdziens ir sastopams ļoti daudzās industrijās, taču galvenā ideja ir par specifikāciju vai solījumu un tā izpildi sistēmas dzīves cikla laikā
  • Configuration Management SistēmaPuppet ir IT automatizācijas programmatūra, kas ļauj vadīt infrastruktūru visā tās dzīves cikla laikā sākot no serveru instalēšanas un konfigurēšanas līdz nepārtrauktai sistēmas auditēšanai un izmaiņu vadībai.Mērogojama - 10 vai 1000 serveriGan open source, gan commercial versijasAr Puppet deklaratīvu valodu apraksta resursu grafu kas veido puppet moduļus. Šie moduļi definē infrastruktūru un tās vēlamo stāvokli – kā mēs gribam lai mūsu sistēma izskatās. Apraksta deklaratīvā veidā – nevis «kā» bet «ko».Puppet ļauj simulēt izmaiņas, neveicot reālas izmaiņasPuppet salīdzina sistēmas faktisko stāvokli ar definēto. Ja tas atšķiras, Puppet automātiski noved līdz aprakstītajam stāvoklim. Tādā veidā izslēdzot konfigurācijas peldēšanu. Puppet Dashboard – atksaites par konfigurācijas izmaiņām un sistēmas stāvokļiem
  • Šis ir viens no Puppet ķieģeļiem – resursa tips «user»Ja Puppet sistēmā mēs esam aprakstījuši, ka tādam un tādam serverim
  • No Puppet manifestiem tiek būvēti atkārtojami lietojami moduļi, kas paredzēti kāda konkrēta darba veikšanaiPiemēram Postgres modulis visticamāk prastu sistēmā uzlikt Postgres pakotnes, konfigurēt security pieejas tiesības, izveidot datubāzi, izveidot postgres lietotāju utt.Par laimi Pupet Labs uztur visiem pieejamu moduļu repozitoriju Puppet Forge, kas ir kā Marketplace, kurā jau ir atrodami moduļi prakstiski visām tipiskajām sistēmas konfigurācijas vajadzībām. Ja mums ir īpašas prasības, mēs varam būvēt moduļus paši vai modificēt esošos no Puppet Forge.
  • Puppet pasaulē serveri, kuriem gribam vadīt kofigurāciju tiek saukti par Node.Katrai nodei ir savi iebūvētie vai custom Fakti – hostname, OS, arhitektūra, IP adrese, etc. Katrā nodē ir instalēts Puppet aģents, kas sūta centrālajam Puppet Master serverim šo informāciju par seviIzmantojot šos faktus, Puppet Master serveris sagatavo Katalogu, jeb – detalizētus datus par to, kā šai nodei ir jābūt konfigurētai un aizsūta to atpakaļ Puppet AģentamPēc tam, kad aģents ir veicis visas nepieciešamās izmaiņas nodē, lai tā atbilstu sākotnējajai specifikācijai (vai vienkārši pēc simulēšanas noop modē), aģents aizsūta atpakaļ Puppet Masteram pilnu atskaiti par to kas tika darīts un rezultātiemAtskaites pēc tam ir pieejamas pēc atvērta API ārējām IT sistēmām, piemēram monotoringa, vai dažādiem dashboardiemŠo ciklu var atkārot atkal un atkal, defaultā pēc 30 minūtēm. Idempotency, dēļ deklaratīvā apraksta.
  • Environments – puppet ļauj definēt vides – priekš test vidēm varam definēt vienus parametrus, priekš prod citus
  • Vagrant ir neatsverams rīks Puppet izstrādē. Ļauj programmiski pacelt virtuālas VirtualBox vides izstrādātāja datorāIzmantojot VirtualBox iespēju šārēt folderus starp VM un izstrādātāja datoru, Vagrant gājuši tālāk, Vagrant virtuālajās mašīnās ir preinstalēts Puppet vai Chef un šārētajā direktorijā ir pieejami puppet moduļi un manifestiTas ļauj veikt puppet developmentu izstrādātāja mašīnā, viņam ērtā redaktorā vai IDEUn uzreiz pārbaudīt kodu virtuālajā mašīnā.
  • Ar Vagrant mēs varam modelēt serveru sistēmas paceļot un konfigurējot vairākas virtuālās mašīnas
  • Introduction to DevOps

    1. 1. Infrastructure as Code Introduction to DevOps andnfrastructure As Code Infrastructure as Code Rolands Mekšs A/S 4finance Infrastructure as Code
    2. 2. Infrastructure Complexity < 80sMainframes
    3. 3. Infrastructure Complexity < 80s 80s - 90sMainframes Client Server
    4. 4. Infrastructure Complexity < 80s 80s - 90s 90sMainframes Client Multi-Tier apps Server
    5. 5. Infrastructure Complexity < 80s 80s - 90s 90s 2000sMainframes Client Multi-Tier apps Data Centers Server
    6. 6. Infrastructure Complexity in 2010sCloud Provider Client Data Center Internet
    7. 7. Infrastructure ComplexityVirtual NodesPhysical Hardware
    8. 8. Concept of physical hardware blurs
    9. 9. Everything as a Service
    10. 10. Soon will hit 100 production server count (DB/Application/Web Proxies)Not counting testing / staging / UAT / DR environments
    11. 11. Agile development Quick reaction to requirements and change Short development sprints Develop small, incremental releases Continuous integration Continious delivery of working software
    12. 12. Agile software delivery Deploy Risk Develop Deploy Risk Develop Time
    13. 13. Continuous delivery Deploy Risk Develop Deploy Risk Develop Deploy Risk Develop Deploy Risk Develop Time Challenging if not impossible without serious CI, testing and automated deployments
    14. 14. Separate teams Development Operations
    15. 15. Separate teams Development Operations We want change
    16. 16. Separate teams, distinct goals Development Operations We want change The answer is NO
    17. 17. Wall of confusion Development Operations We want change The answer is NO
    18. 18. Merge of concerns DevOps
    19. 19. What is DevOps More like an idea or collaborative culture/philosophy between technical teams Often stated as «Agile for Operations» Unified processes, unified tools for faster end-to-end delivery of quality software Automate all the things! Not a job description, same way as there is no such job «Agile Developer» It’s just a way of work
    20. 20. DevOps team in 4finance Provide teams with processes and tools for better day to day project activities Automate environment creation Enable automated deployment process Enable freely available performance monitoring and log viewing Provide support in infrastrucure related questions Enable DevOps
    21. 21. Infrastructure as code
    22. 22. How do you provision new server?Adhoc actions – hack while it works
    23. 23. How do you provision new server?Adhoc actions – hack while it works SNOWFLAKES ARE SPECIAL, SERVERS ARE NOT
    24. 24. How do you provision new server?Follow some documented instructions
    25. 25. Doing changes to servers manually involves PEOPLE
    26. 26. Doing changes to servers manually involves PEOPLE Terrible of doing things repeatedly
    27. 27. Doing changes to servers manually involves PEOPLE Terrible of doing things repeatedly
    28. 28. More than80% of all mission-critical IT service outages are due to PEOPLE and process errors
    29. 29. How do you provision new server?Use self written shell scripts + Some sort of automation + Version control possible + Works fine if you have 5 or so servers
    30. 30. How do you provision new server?Use self written shell scripts + Some sort of automation + Version control possible + Works fine if you have 5 or so servers - Does not handle change during server lifecycle
    31. 31. True story Simple change as timezone setting Options: • Log in each affected server and change manually • SSH for loop could do the trick
    32. 32. True story Simple change as timezone setting Options: • Log in each affected server and change manually • SSH for loop could do the trick Configuration drift!
    33. 33. There got to be better way
    34. 34. We know how to handle change in softwaredevelopmentCode and configuration is in verison control systemUnit and integration testsSafe acceptance testing in test/stage environmentsCode review
    35. 35. Infrastructure should be treated like a code Packages installed, versions Server and application configuration (such as timezone settings) Relationships with other servers and services
    36. 36. Infrastructure should be treated like a code Packages installed, versions Server and application configuration (such as timezone settings) Relationships with other servers and services We want Automated , repeatable operations Predictable outcome Remove manual, error prone steps Manage change during server lifecycle Ability to test outcomes
    37. 37. Infrastructure as Code"Enable the reconstruction of the business fromnothing but a source code repository, anapplication data backup, and bare metalresources" Adam Jacob
    38. 38. Netflix Chaos Monkey
    39. 39. Configuration management Declarative specifications or policies Setting the Policy Report Executing the policy the policy Auditing the policy
    40. 40. Configuration management systems
    41. 41. How Puppet WorksManage infrastructure throughout its lifecycle
    42. 42. Puppet ResourcesResources – Puppet building blocks user { dave: ensure => present, uid => 507, gid => admin, shell => /bin/zsh, home => /home/dave, }
    43. 43. Resources – Puppet building blockspackage { apache2: ensure=>installed}
    44. 44. Resources – Puppet building blockspackage { apache2: ensure=>installed} service { apache2: ensure=>running }
    45. 45. Resources – Puppet building blockspackage { apache2: ensure=>installed} service { apache2: ensure=>running }cron { cleanup:command=>/test/cleanup.sh, user=>test, hour=>5, minute=>0}
    46. 46. Resources – Puppet building blockspackage { apache2: ensure=>installed} service { apache2: ensure=>running }cron { cleanup:command=>/test/cleanup.sh, user=>test, hour=>5, file { ‘/tmp/helloPuppet: minute=>0 content=>‘Hello!} }
    47. 47. Puppet manifestspackage { "openssh": ensure => present,}service { "sshd": ensure => running, hasstatus => true, hasrestart => true, enable => true, require => Package["openssh"],}
    48. 48. Puppet templatespackage { "openssh": ensure => present, Port <%= listen_port%>} Protocol 2 SyslogFacility AUTHPRIVservice { "sshd": PermitRootLogin no ensure => running, PasswordAuthentication no hasstatus => true, ChallengeResponseAuthentication no hasrestart => true, GSSAPIAuthentication yes enable => true, GSSAPICleanupCredentials yes require => Package["openssh"], UsePAM yes} X11Forwarding yes Banner /etc/motd$listen_port=2222 sshd_config.erbfile { "/etc/ssh/sshd_config": path => "/etc/ssh/sshd_config", owner => root, group => root, mode => 444, content => teplate("sshdconf/sshd_config.erb"), notify => Service[sshd],}
    49. 49. Reusable Configuration Modules
    50. 50. How Puppet Enforces Desired State
    51. 51. Node definitions in Puppet node base { node { ‘my.prod.server.com’ inherits base include openssh include mymanifest.pp $apacheversion = "2.0.33" } package { "apache2": ensure => $apacheversion, } }
    52. 52. Development practices applied to infrastructure Version control & source code management IDEs, editors, refactoring tools Environments Self-documentation Testing
    53. 53. BDD with Puppet
    54. 54. Puppet development with VagrantA tool for building virtualized environments in your PCActually works as command line wrapper for VirutalBoxShared filesystem between host and guestAllows to spin up virtual machine with preinstalledPuppet/Chef
    55. 55. Vagrant – boxes and environments $ vagrant box add lucid32 http://files.vagrantup.com Vagrant::Config.run do |config| # Setup the box config.vm.box = "lucid32" config.vm.provision :puppet do |puppet| puppet.module_path = "puppet/modules" puppet.manifests_path = "puppet/manifests" end end
    56. 56. Vagrant – boxes and environments $ vagrant up $ vagrant provision $ vagrant ssh $ vagrant destroy
    57. 57. Modeling environment systems with Vagrant
    58. 58. Q&A
    1. Gostou de algum slide específico?

      Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

    ×