SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
www.immobilienscout24.de



System management with
RPM and YADT
A Solution for Data Centers
Brussels | 2012-02-05 | Ralph Angenendt
Application Manager




                           License: http://creativecommons.org/licenses/by-nc-nd/3.0/
So what is it?

  RPM
    Well known packaging format
    Easy to use (and package)
    Built-in content verification
    Complete toolchain




Slide 2 | System management with RPM & YADT | Ralph Angenendt
So what is it?

  YADT
    An Augmented Deployment Tool
    Central management of dependencies between
       Services
       Systems
       Software Packages




Slide 3 | System management with RPM & YADT | Ralph Angenendt
RPM, huh?

  Sure. Everything is packaged as an RPM
    Our system software (RHEL – 100% RPM)
    Software from the outside (think EPEL)
    Our Applications
       We wish
       But we're getting there




Slide 4 | System management with RPM & YADT | Ralph Angenendt
But config?

  It comes in files
  RPM is good at handling files
  There are tools to get RPMs on a machine
  RPM can verify package contents
  Updates are easy




Slide 5 | System management with RPM & YADT | Ralph Angenendt
So you build RPMs for every machine?




                Um. No.

Slide 6 | System management with RPM & YADT | Ralph Angenendt
So you build RPMs for every machine?




             Well, sort
                of.
Slide 7 | System management with RPM & YADT | Ralph Angenendt
So you build RPMs for every machine?




             We let
            machines
             do it.
Slide 8 | System management with RPM & YADT | Ralph Angenendt
„Config Subversion“

  All Configuration is kept in an SVN repository
    Hierarchical
    Supports a „Data Center“ layout
    Is easy to understand
    Typical unixy filesystem layout




Slide 9 | System management with RPM & YADT | Ralph Angenendt
Config „subversion“

  Goes from general to special
  On-Commit
    RPM building
    YUM repository generation
  Also works with dpkg and apt
    If you write the code to support it




Slide 10 | System management with RPM & YADT | Ralph Angenendt
In general it looks like this


             all/
Overwrites




             loc/
             type/
             loctype/
             host/




Slide 11 | System management with RPM & YADT | Ralph Angenendt
In general it looks like this


             all/
                      etc/
Overwrites




                      data/
                      VARIABLES/
             loc/
             type/
             loctype/
             host/




Slide 12 | System management with RPM & YADT | Ralph Angenendt
In general it looks like this


             all/
             loc/
                      tuv/
Overwrites




                      ber/
                      ham/
                               etc/
                               data/
                               VARIABLES/
             type/
             loctype/
             host/


Slide 13 | System management with RPM & YADT | Ralph Angenendt
In general it looks like this


             all/
             loc/
             type/
Overwrites




                  web/
                  app/
                               etc/
                               data/
                               VARIABLES/
             loctype/
             host/



Slide 14 | System management with RPM & YADT | Ralph Angenendt
In general it looks like this


             all/
             loc/
             type/
Overwrites




             loctype/
                               berweb/
                               berapp/
                                     etc/
                                     data/
                                     VARIABLES/
             host/



Slide 15 | System management with RPM & YADT | Ralph Angenendt
In general it looks like this


             all/
             loc/
             type/
Overwrites




             loctype/
             host/
                  berweb01/
                  berweb02/
                          etc/
                          data/
                          VARIABLES/



Slide 16 | System management with RPM & YADT | Ralph Angenendt
VARIABLES?

  VARIABLES/ contains – well – variables
    Many hosts have a similar configuration
    Best to configure that in a general way
       All hosts use a proxy
       Proxies in tuv, ber and in ham are different




Slide 17 | System management with RPM & YADT | Ralph Angenendt
Variables



   all/etc/proxy.conf:
      [...]
      proxy_port=3128
      proxy_host=@@@PROXY_HOST@@@
   loc/tuv/VARIABLES/PROXY_HOST:
      tuvprx.example.com
   loc/ber/VARIABLES/PROXY_HOST:
      berprx.example.com
   loc/ham/VARIABLE/PROXY_HOST:
      hamprx.example.com


Slide 18 | System management with RPM & YADT | Ralph Angenendt
More specials

  There are two special Variables
   RPM_PROVIDES
     config-hostname (e.g. config-berweb01)
    RPM_REQUIRES
      tomcat,httpd,java-application
  RPM_PROVIDES is required during kickstart
  Content of RPM_REQUIRES pulls in all other needed
  RPMs for the host




Slide 19 | System management with RPM & YADT | Ralph Angenendt
Putting it all together

                            config-rpm-maker

                                substitutes
                                VARIABLES

                                  builds
                                  RPMs

                                 creates
                                YUM-Repo




Slide 20 | System management with RPM & YADT | Ralph Angenendt
Putting it all together

  yadt-config-rpm-maker
    Works as a post-commit hook in subversion
    Written in python
    Creates packages in parallel
    Automatically determines which packages have to
     be rebuilt
    Rebuilds the minimal set needed
    Is open source (GPL)
    Available from https://code.google.com/p/yadt/



Slide 21 | System management with RPM & YADT | Ralph Angenendt
Caveats

  RPM dislikes a few things
    Mainly two packages owning the same file
    Not every software has a config.d/
    „Generic“ config mostly not usable
    Installation tends to break, then




Slide 22 | System management with RPM & YADT | Ralph Angenendt
Caveats

  Solution
    Write wrapper packages
    Those overwrite config via %post
       Config now includes config.d/ (if possible)
    Write your own config.d/ structure
    Overwrite original config by piecing things from
     config.d/ together




Slide 23 | System management with RPM & YADT | Ralph Angenendt
Summary

  Complete config is in one package
  Config pulls in „complete machine“
  Tool chain allows easy verification
  Tool chain is well known
  Package format is
    Well known
    Rather easy (from an „RPM person“ view)
  Config is precalculated before copying




Slide 24 | System management with RPM & YADT | Ralph Angenendt
ADVERTISEMENT




                   Nexus Yum Plugin available from
            https://code.google.com/p/nexus-yum-plugin/


Slide 25 | System management with RPM & YADT | Ralph Angenendt
YADT

  Knows your Data Center
    Allows you to model your DC
    YAML-based description of
       Services
       Applications
       Hosts
  Knows about dependencies between
    Packages
    Services
    Systems

Slide 26 | System management with RPM & YADT | Ralph Angenendt
Configuration

  Target definition in file „target“:


   name: probau
   log-dir: logs

   hosts:
   - hambau*.example.com
   - berbau*.exampe.com




Slide 27 | System management with RPM & YADT | Ralph Angenendt
Configuration

  Service definition in file „yadt.services“:

        - service1:
            needs_services: [service2]

        - service2:
            needs_services: [service3]

        - service3:




Slide 28 | System management with RPM & YADT | Ralph Angenendt
Configuration

  Notations:
    service://hostname/servicename
    host://hostname/
    artefact://hostname/packagename/version
       yadt status service://hostname1/httpd
       yadt ignore host://{host2|host33}
       yadt lock -m host://hostname3
       yadt updateartefact artefact://
        [host1..host15]/yadt-client



Slide 29 | System management with RPM & YADT | Ralph Angenendt
YADT – the smallest unit


                                               yadt.services:

                                               - tomcat:
                  Restarts on
     tomcat         update                     Target:

                                               hosts:
                                                   - foo.example.com
                   tomcat
     Depends        config




Slide 30 | System management with RPM & YADT | Ralph Angenendt
YADT – simple dependencies


                                               yadt.services:
                          Stopped 1st
          httpd           Started 2nd          - httpd:
                                                    needs_services: [tomcat]
                       httpd                   - tomcat:
Depends                config


                          Stopped 2nd
        tomcat            Started 1st


                      tomcat
                       config
      Depends



Slide 31 | System management with RPM & YADT | Ralph Angenendt
YADT – adding external services


           LB                                  yadt.services:
                     Removed from              - loadbalancer:
Depends              config                        needs_services: [httpd]
                                                   class: LoadbalancerService
                                                   loadbalancer_clusters: [pro-fe]
                                                   pool: test
         httpd        Stopped 1st                  port: 80
                      Started 2nd                  status_max_tries: 2
                   httpd
 Depends           config                      - httpd:
                                                    needs_services: [tomcat]
                       Stopped 2nd             - tomcat:
        tomcat
                       Started 1st
                   tomcat
                    config
        Depends

Slide 32 | System management with RPM & YADT | Ralph Angenendt
External services

  YADT has a service layer
    Python module
    Can also execute scripts
    Loadbalancer:
       Uses the F5 Big IP python api
       Can disable/enable hosts
    We also use it for making Nagios go quiet
    Not yet open source
       Needs to be generalized



Slide 33 | System management with RPM & YADT | Ralph Angenendt
YADT – adding services on other systems
                                  yadt.services:
  LB
                                  - loadbalancer:
                                      needs_services: [httpd]
                                      class: LoadbalancerService
                                      loadbalancer_clusters: [pro-fe]
                                      pool: test
httpd
                                  [...]
         httpd
         config                   - tomcat:
                                       needs_services: [app]

tomcat
         tomcat
          config                                         yadt.services:
                               app
                                                         - app:
                                           app
                                          config


Slide 34 | System management with RPM & YADT | Ralph Angenendt
YADT – more complex modeling
                                     LB




httpd                                                   httpd
         httpd             target:                               httpd
         config            hosts:                                config
                               - host[01..02]
tomcat                                                 tomcat
         tomcat                                                  tomcat
          config               app                                config

                                       app
                                      config


Slide 35 | System management with RPM & YADT | Ralph Angenendt
YADT – chunks and wave deployment
                                       LB




httpd       httpd           httpd           httpd         httpd      httpd




          1.                            2.                          3.



   Slide 36 | System management with RPM & YADT | Ralph Angenendt
Interface




Slide 37 | System management with RPM & YADT | Ralph Angenendt
Conclusion

  RPM configuration works astonishingly well
    Though needs work around caveats
    Easy to maintain (for everyone, just change config)
    Distribution via yum repositories
    One RPM pulls up a complete machine
    Need to „resetup“?
       Remove config-rpm
       Reinstall config-rpm




Slide 38 | System management with RPM & YADT | Ralph Angenendt
Conclusion

  YADT is a work in progress – but it works reliably
    For many machines, it can get slow
       Especially when nagios / loadbalancer are
        included
    Services layer not yet open sourced
    Easy configuration
    Needs package based distribution system
    We use it on a daily basis




Slide 39 | System management with RPM & YADT | Ralph Angenendt
Outlook

  New yadt-shell (the interface) on the way
  Work has started to parallelize yadt
    Against slowness
    Let's you do „server, rack, datacenter“ scenario
    You can determine fault tolerance
  Would be nice to have a working Demo system =:)




Slide 40 | System management with RPM & YADT | Ralph Angenendt
The End (finally!)



                              YADT
                https://code.google.com/p/yadt/

                    Yadt-rpm-config-maker
                https://code.google.com/p/yadt/

                    Nexus YUM plugin
      https://code.google.com/p/nexus-yum-plugin/




Slide 41 | System management with RPM & YADT | Ralph Angenendt
Thank you very much!
Please contact me for further
questions and discussions.
Kontakt:
Immobilien Scout GmbH   Fon:   +49 30 243 01-1036
Andreasstraße 10        Email: ralph.angenendt@immobilienscout24.de
10243 Berlin            URL: www.immobilienscout24.de




Slide 42 | System management with RPM & YADT | Ralph Angenendt

Weitere ähnliche Inhalte

Was ist angesagt?

Slides For Operating System Concepts By Silberschatz Galvin And Gagne
Slides For Operating System Concepts By Silberschatz Galvin And GagneSlides For Operating System Concepts By Silberschatz Galvin And Gagne
Slides For Operating System Concepts By Silberschatz Galvin And Gagne
sarankumar4445
 
Rtos princples adn case study
Rtos princples adn case studyRtos princples adn case study
Rtos princples adn case study
vanamali_vanu
 

Was ist angesagt? (20)

1 intro and overview
1 intro and overview1 intro and overview
1 intro and overview
 
Ch1-Operating System Concept
Ch1-Operating System ConceptCh1-Operating System Concept
Ch1-Operating System Concept
 
Scheduling
Scheduling Scheduling
Scheduling
 
Real-Time Scheduling
Real-Time SchedulingReal-Time Scheduling
Real-Time Scheduling
 
cs8493 - operating systems unit 1
cs8493 - operating systems unit 1cs8493 - operating systems unit 1
cs8493 - operating systems unit 1
 
Ch5 cpu-scheduling
Ch5 cpu-schedulingCh5 cpu-scheduling
Ch5 cpu-scheduling
 
Real time system tsp
Real time system tspReal time system tsp
Real time system tsp
 
Future of Power: IBM Power - Lars Johanneson
Future of Power: IBM Power - Lars JohannesonFuture of Power: IBM Power - Lars Johanneson
Future of Power: IBM Power - Lars Johanneson
 
Smpe
SmpeSmpe
Smpe
 
RTOS implementation
RTOS implementationRTOS implementation
RTOS implementation
 
Chapter4
Chapter4Chapter4
Chapter4
 
5.CPU Scheduling
5.CPU Scheduling5.CPU Scheduling
5.CPU Scheduling
 
CPU Scheduling
CPU SchedulingCPU Scheduling
CPU Scheduling
 
Operating System-Ch8 memory management
Operating System-Ch8 memory managementOperating System-Ch8 memory management
Operating System-Ch8 memory management
 
Processor / CPU Scheduling
Processor / CPU SchedulingProcessor / CPU Scheduling
Processor / CPU Scheduling
 
Slides For Operating System Concepts By Silberschatz Galvin And Gagne
Slides For Operating System Concepts By Silberschatz Galvin And GagneSlides For Operating System Concepts By Silberschatz Galvin And Gagne
Slides For Operating System Concepts By Silberschatz Galvin And Gagne
 
Ch4 threads
Ch4 threadsCh4 threads
Ch4 threads
 
Rtos princples adn case study
Rtos princples adn case studyRtos princples adn case study
Rtos princples adn case study
 
RTAI - Earliest Deadline First
RTAI - Earliest Deadline FirstRTAI - Earliest Deadline First
RTAI - Earliest Deadline First
 
Cpu scheduling
Cpu schedulingCpu scheduling
Cpu scheduling
 

Ähnlich wie System management with rpm and yadt

Pig on Tez - Low Latency ETL with Big Data
Pig on Tez - Low Latency ETL with Big DataPig on Tez - Low Latency ETL with Big Data
Pig on Tez - Low Latency ETL with Big Data
DataWorks Summit
 
Linux internet server security and configuration tutorial
Linux internet server security and configuration tutorialLinux internet server security and configuration tutorial
Linux internet server security and configuration tutorial
annik147
 
Systemd for administrators
Systemd for administratorsSystemd for administrators
Systemd for administrators
Susant Sahani
 
LinuxTag 2010 - Advanced Software Management with RPM
 LinuxTag 2010 - Advanced Software Management with RPM LinuxTag 2010 - Advanced Software Management with RPM
LinuxTag 2010 - Advanced Software Management with RPM
Schlomo Schapiro
 
tuningfor_oracle
 tuningfor_oracle tuningfor_oracle
tuningfor_oracle
styxyx
 

Ähnlich wie System management with rpm and yadt (20)

Performance: Observe and Tune
Performance: Observe and TunePerformance: Observe and Tune
Performance: Observe and Tune
 
Pig on Tez - Low Latency ETL with Big Data
Pig on Tez - Low Latency ETL with Big DataPig on Tez - Low Latency ETL with Big Data
Pig on Tez - Low Latency ETL with Big Data
 
Subversion Day Berlin 2011 Configuration Management With Subversion And Rpm
Subversion Day Berlin 2011 Configuration Management With Subversion And RpmSubversion Day Berlin 2011 Configuration Management With Subversion And Rpm
Subversion Day Berlin 2011 Configuration Management With Subversion And Rpm
 
Linux internet server security and configuration tutorial
Linux internet server security and configuration tutorialLinux internet server security and configuration tutorial
Linux internet server security and configuration tutorial
 
Pdf c1t tlawaxb
Pdf c1t tlawaxbPdf c1t tlawaxb
Pdf c1t tlawaxb
 
Hands on Virtualization with Ganeti
Hands on Virtualization with GanetiHands on Virtualization with Ganeti
Hands on Virtualization with Ganeti
 
Solaris 10 Advanced Features.
Solaris 10 Advanced Features.Solaris 10 Advanced Features.
Solaris 10 Advanced Features.
 
Systemd for administrators
Systemd for administratorsSystemd for administrators
Systemd for administrators
 
Systemd for administrators
Systemd for administratorsSystemd for administrators
Systemd for administrators
 
Bundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPMBundling Packages and Deploying Applications with RPM
Bundling Packages and Deploying Applications with RPM
 
R12.2 dba
R12.2 dbaR12.2 dba
R12.2 dba
 
LinuxTag 2010 - Advanced Software Management with RPM
 LinuxTag 2010 - Advanced Software Management with RPM LinuxTag 2010 - Advanced Software Management with RPM
LinuxTag 2010 - Advanced Software Management with RPM
 
2.5 use rpm and yum package management
2.5 use rpm and yum package management2.5 use rpm and yum package management
2.5 use rpm and yum package management
 
101 2.5 use rpm and yum package management
101 2.5 use rpm and yum package management101 2.5 use rpm and yum package management
101 2.5 use rpm and yum package management
 
101 2.5 use rpm and yum package management
101 2.5 use rpm and yum package management101 2.5 use rpm and yum package management
101 2.5 use rpm and yum package management
 
RHadoop - beginners
RHadoop - beginnersRHadoop - beginners
RHadoop - beginners
 
Automated Java Deployments With Rpm
Automated Java Deployments With RpmAutomated Java Deployments With Rpm
Automated Java Deployments With Rpm
 
Computer technicians-quick-reference-guide
Computer technicians-quick-reference-guideComputer technicians-quick-reference-guide
Computer technicians-quick-reference-guide
 
tuningfor_oracle
 tuningfor_oracle tuningfor_oracle
tuningfor_oracle
 
Nagios Conference 2011 - Mike Weber - Training: Reducing Nagios Server Load ...
Nagios Conference 2011 - Mike Weber - Training:  Reducing Nagios Server Load ...Nagios Conference 2011 - Mike Weber - Training:  Reducing Nagios Server Load ...
Nagios Conference 2011 - Mike Weber - Training: Reducing Nagios Server Load ...
 

Kürzlich hochgeladen

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 

System management with rpm and yadt

  • 1. www.immobilienscout24.de System management with RPM and YADT A Solution for Data Centers Brussels | 2012-02-05 | Ralph Angenendt Application Manager License: http://creativecommons.org/licenses/by-nc-nd/3.0/
  • 2. So what is it? RPM  Well known packaging format  Easy to use (and package)  Built-in content verification  Complete toolchain Slide 2 | System management with RPM & YADT | Ralph Angenendt
  • 3. So what is it? YADT  An Augmented Deployment Tool  Central management of dependencies between  Services  Systems  Software Packages Slide 3 | System management with RPM & YADT | Ralph Angenendt
  • 4. RPM, huh? Sure. Everything is packaged as an RPM  Our system software (RHEL – 100% RPM)  Software from the outside (think EPEL)  Our Applications  We wish  But we're getting there Slide 4 | System management with RPM & YADT | Ralph Angenendt
  • 5. But config? It comes in files RPM is good at handling files There are tools to get RPMs on a machine RPM can verify package contents Updates are easy Slide 5 | System management with RPM & YADT | Ralph Angenendt
  • 6. So you build RPMs for every machine? Um. No. Slide 6 | System management with RPM & YADT | Ralph Angenendt
  • 7. So you build RPMs for every machine? Well, sort of. Slide 7 | System management with RPM & YADT | Ralph Angenendt
  • 8. So you build RPMs for every machine? We let machines do it. Slide 8 | System management with RPM & YADT | Ralph Angenendt
  • 9. „Config Subversion“ All Configuration is kept in an SVN repository  Hierarchical  Supports a „Data Center“ layout  Is easy to understand  Typical unixy filesystem layout Slide 9 | System management with RPM & YADT | Ralph Angenendt
  • 10. Config „subversion“ Goes from general to special On-Commit  RPM building  YUM repository generation Also works with dpkg and apt  If you write the code to support it Slide 10 | System management with RPM & YADT | Ralph Angenendt
  • 11. In general it looks like this all/ Overwrites loc/ type/ loctype/ host/ Slide 11 | System management with RPM & YADT | Ralph Angenendt
  • 12. In general it looks like this all/ etc/ Overwrites data/ VARIABLES/ loc/ type/ loctype/ host/ Slide 12 | System management with RPM & YADT | Ralph Angenendt
  • 13. In general it looks like this all/ loc/ tuv/ Overwrites ber/ ham/ etc/ data/ VARIABLES/ type/ loctype/ host/ Slide 13 | System management with RPM & YADT | Ralph Angenendt
  • 14. In general it looks like this all/ loc/ type/ Overwrites web/ app/ etc/ data/ VARIABLES/ loctype/ host/ Slide 14 | System management with RPM & YADT | Ralph Angenendt
  • 15. In general it looks like this all/ loc/ type/ Overwrites loctype/ berweb/ berapp/ etc/ data/ VARIABLES/ host/ Slide 15 | System management with RPM & YADT | Ralph Angenendt
  • 16. In general it looks like this all/ loc/ type/ Overwrites loctype/ host/ berweb01/ berweb02/ etc/ data/ VARIABLES/ Slide 16 | System management with RPM & YADT | Ralph Angenendt
  • 17. VARIABLES? VARIABLES/ contains – well – variables  Many hosts have a similar configuration  Best to configure that in a general way  All hosts use a proxy  Proxies in tuv, ber and in ham are different Slide 17 | System management with RPM & YADT | Ralph Angenendt
  • 18. Variables all/etc/proxy.conf: [...] proxy_port=3128 proxy_host=@@@PROXY_HOST@@@ loc/tuv/VARIABLES/PROXY_HOST: tuvprx.example.com loc/ber/VARIABLES/PROXY_HOST: berprx.example.com loc/ham/VARIABLE/PROXY_HOST: hamprx.example.com Slide 18 | System management with RPM & YADT | Ralph Angenendt
  • 19. More specials There are two special Variables  RPM_PROVIDES config-hostname (e.g. config-berweb01)  RPM_REQUIRES tomcat,httpd,java-application RPM_PROVIDES is required during kickstart Content of RPM_REQUIRES pulls in all other needed RPMs for the host Slide 19 | System management with RPM & YADT | Ralph Angenendt
  • 20. Putting it all together config-rpm-maker substitutes VARIABLES builds RPMs creates YUM-Repo Slide 20 | System management with RPM & YADT | Ralph Angenendt
  • 21. Putting it all together yadt-config-rpm-maker  Works as a post-commit hook in subversion  Written in python  Creates packages in parallel  Automatically determines which packages have to be rebuilt  Rebuilds the minimal set needed  Is open source (GPL)  Available from https://code.google.com/p/yadt/ Slide 21 | System management with RPM & YADT | Ralph Angenendt
  • 22. Caveats RPM dislikes a few things  Mainly two packages owning the same file  Not every software has a config.d/  „Generic“ config mostly not usable  Installation tends to break, then Slide 22 | System management with RPM & YADT | Ralph Angenendt
  • 23. Caveats Solution  Write wrapper packages  Those overwrite config via %post  Config now includes config.d/ (if possible)  Write your own config.d/ structure  Overwrite original config by piecing things from config.d/ together Slide 23 | System management with RPM & YADT | Ralph Angenendt
  • 24. Summary Complete config is in one package Config pulls in „complete machine“ Tool chain allows easy verification Tool chain is well known Package format is  Well known  Rather easy (from an „RPM person“ view) Config is precalculated before copying Slide 24 | System management with RPM & YADT | Ralph Angenendt
  • 25. ADVERTISEMENT Nexus Yum Plugin available from https://code.google.com/p/nexus-yum-plugin/ Slide 25 | System management with RPM & YADT | Ralph Angenendt
  • 26. YADT Knows your Data Center  Allows you to model your DC  YAML-based description of  Services  Applications  Hosts Knows about dependencies between  Packages  Services  Systems Slide 26 | System management with RPM & YADT | Ralph Angenendt
  • 27. Configuration Target definition in file „target“: name: probau log-dir: logs hosts: - hambau*.example.com - berbau*.exampe.com Slide 27 | System management with RPM & YADT | Ralph Angenendt
  • 28. Configuration Service definition in file „yadt.services“: - service1: needs_services: [service2] - service2: needs_services: [service3] - service3: Slide 28 | System management with RPM & YADT | Ralph Angenendt
  • 29. Configuration Notations:  service://hostname/servicename  host://hostname/  artefact://hostname/packagename/version  yadt status service://hostname1/httpd  yadt ignore host://{host2|host33}  yadt lock -m host://hostname3  yadt updateartefact artefact:// [host1..host15]/yadt-client Slide 29 | System management with RPM & YADT | Ralph Angenendt
  • 30. YADT – the smallest unit yadt.services: - tomcat: Restarts on tomcat update Target: hosts: - foo.example.com tomcat Depends config Slide 30 | System management with RPM & YADT | Ralph Angenendt
  • 31. YADT – simple dependencies yadt.services: Stopped 1st httpd Started 2nd - httpd: needs_services: [tomcat] httpd - tomcat: Depends config Stopped 2nd tomcat Started 1st tomcat config Depends Slide 31 | System management with RPM & YADT | Ralph Angenendt
  • 32. YADT – adding external services LB yadt.services: Removed from - loadbalancer: Depends config needs_services: [httpd] class: LoadbalancerService loadbalancer_clusters: [pro-fe] pool: test httpd Stopped 1st port: 80 Started 2nd status_max_tries: 2 httpd Depends config - httpd: needs_services: [tomcat] Stopped 2nd - tomcat: tomcat Started 1st tomcat config Depends Slide 32 | System management with RPM & YADT | Ralph Angenendt
  • 33. External services YADT has a service layer  Python module  Can also execute scripts  Loadbalancer:  Uses the F5 Big IP python api  Can disable/enable hosts  We also use it for making Nagios go quiet  Not yet open source  Needs to be generalized Slide 33 | System management with RPM & YADT | Ralph Angenendt
  • 34. YADT – adding services on other systems yadt.services: LB - loadbalancer: needs_services: [httpd] class: LoadbalancerService loadbalancer_clusters: [pro-fe] pool: test httpd [...] httpd config - tomcat: needs_services: [app] tomcat tomcat config yadt.services: app - app: app config Slide 34 | System management with RPM & YADT | Ralph Angenendt
  • 35. YADT – more complex modeling LB httpd httpd httpd target: httpd config hosts: config - host[01..02] tomcat tomcat tomcat tomcat config app config app config Slide 35 | System management with RPM & YADT | Ralph Angenendt
  • 36. YADT – chunks and wave deployment LB httpd httpd httpd httpd httpd httpd 1. 2. 3. Slide 36 | System management with RPM & YADT | Ralph Angenendt
  • 37. Interface Slide 37 | System management with RPM & YADT | Ralph Angenendt
  • 38. Conclusion RPM configuration works astonishingly well  Though needs work around caveats  Easy to maintain (for everyone, just change config)  Distribution via yum repositories  One RPM pulls up a complete machine  Need to „resetup“?  Remove config-rpm  Reinstall config-rpm Slide 38 | System management with RPM & YADT | Ralph Angenendt
  • 39. Conclusion YADT is a work in progress – but it works reliably  For many machines, it can get slow  Especially when nagios / loadbalancer are included  Services layer not yet open sourced  Easy configuration  Needs package based distribution system  We use it on a daily basis Slide 39 | System management with RPM & YADT | Ralph Angenendt
  • 40. Outlook New yadt-shell (the interface) on the way Work has started to parallelize yadt  Against slowness  Let's you do „server, rack, datacenter“ scenario  You can determine fault tolerance Would be nice to have a working Demo system =:) Slide 40 | System management with RPM & YADT | Ralph Angenendt
  • 41. The End (finally!) YADT https://code.google.com/p/yadt/ Yadt-rpm-config-maker https://code.google.com/p/yadt/ Nexus YUM plugin https://code.google.com/p/nexus-yum-plugin/ Slide 41 | System management with RPM & YADT | Ralph Angenendt
  • 42. Thank you very much! Please contact me for further questions and discussions. Kontakt: Immobilien Scout GmbH Fon: +49 30 243 01-1036 Andreasstraße 10 Email: ralph.angenendt@immobilienscout24.de 10243 Berlin URL: www.immobilienscout24.de Slide 42 | System management with RPM & YADT | Ralph Angenendt