SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
CentOS at Facebook
Davide Cavalca & Phil Dibowitz
Production Engineering
CentOS Dojo 2019
• Infrastructure
• Packaging
• RPM and DNF
• OS Upgrades
• CentOS TheNumberAfter7
Agenda
Infrastructure
• OS Team manages the bare metal experience of the fleet
• OS as a platform
• Individual teams are responsible for their own hosts
Infrastructure
How does it work?
• Working with the community on long-term direction
• We move fast; open source often moves faster
• We don’t need to write everything ourselves
• Sharing our code means sharing the maintenance and
having others extend it
• DevConf.CZ 2017 talk: tinyurl.com/y7gx6nro
Infrastructure
Upstream first
• Stable releases
• Binary compatibility
• Security updates
• Mature and well understood tooling
• EPEL
• Shared ecosystem with Fedora
Infrastructure
Why CentOS?
Infrastructure
FTL – Fast Thin Layer
• Backports from Fedora Rawhide for stuff we care about
• Mostly plumbing and low-level packages
• %facebook macro to gate internal stuff
• GitHub: facebookincubator/rpm-backports
• CentOS + FTL = stable distro, moving fast
Infrastructure
FTL – Fast Thin Layer
• Rawhide backport of latest stable
• GitHub: facebookincubator/systemd-compat-libs
• Tracking upstream development in master
• New features: cgroup2, BPF, portable services, etc.
• fb_systemd and fb_timers cookbooks
• All Systems Go 2018 talk: tinyurl.com/ycecofb9
Infrastructure
Plumbing – systemd
• dbus is used for local IPC in systemd
• We run a backport of dbus-daemon
• Started testing dbus-broker, so far so good
• Still no way to upgrade/restart without rebooting
• pystemd: thin Cython wrapper on top of sd-bus
• Exposes sytemd dbus object model
• GitHub: facebookincubator/pystemd
Infrastructure
Plumbing – dbus
• CentOS 7 version + backported network-scripts from git
master
• IPv6 improvements, per-device routes, ifdown, additional
configuration options
• GitHub: fedora-sysv/initscripts
Infrastructure
Plumbing – initscripts / network-scripts
• Upstream kernel (or as close as possible)
• Development in master
• Internal stable and development branches
• Testing and rollout automation
• SCALE 15x talk: tinyurl.com/ybqgwn47
Infrastructure
Kernel
Packaging
• Public mirror: mirror.facebook.net/centos/
• Upstream repos straight from CentOS
• Internal repos: site-packages and fb-runtime
Packaging
Server side – layout
• Stored in GlusterFS
• Served per-region via Apache2
• Cached by many varnish boxes
• Local CLIs + publisher to control input
Packaging
Server side – implementation
Packaging
Server side – implementation
• yummy: mock wrapper with SCM integration
• Store specfiles + patches in source control
• Store blobs in GlusterFS-backed NFS
• Automation to sync to GitHub
• Can submit to central build system – required for signing
Packaging
Tooling – system packages
• packman: rpmbuild wrapper for simple RPMs
• Integrates with buck and our SCM tooling
• Build software, generate specfile, package it up
• Simple YAML configuration
• Can submit to central build system – required for signing
Packaging
Tooling – fb-runtime packages
• RPM: backported from Rawhide
• YUM: CentOS + backported PRs
• DNF: built from yum4 repos – soon to be Rawhide
• RPM, yum and DNF managed by cookbooks
• fb_rpm is open source
Packaging
Client side
RPM and DNF
(at scale)
• I/O thrash fsync() on close() (PR#187 on rpm)→
• rpmdb corruption issues → dcrpm
• Duplicate packages → package-cleanup wrapper
• Scaling Yum → pkgtorrent (merged upstream)
RPM and DNF at scale
RPM and DNF/YUM at scale
• Automate detection and remediation of common issues
• rpmdb corruption, stuck processes, etc.
• Works on Linux and OSX (!)
• Runs before every Chef run
• GitHub: facebookincubator/dcrpm
RPM and DNF at scale
dcrpm
RPM and DNF at scale
dcrpm – before and after
• RPM-related failures over time
• Baseline of errors still WIP
• Merge package-cleanup wrapper into dcrpm
• Test new database formats
• Test DNF in production
RPM and DNF at scale
Work in progress
OS Updates
• CentOS 5 6 and 6 7→ →
• No in-place updates: reprovision the host from scratch
• Easier to ensure a good state
• Side effect: clean slate offers opportunity to deprecate
unwanted features or tools
OS updates
Major releases
• About a year from initial PoC to first production machine
• About two years to migrate 100% of the fleet
• Documentation and automation
• Stateless vs stateful services
• Prerequisites and hidden dependencies
OS updates
CentOS 7 migration
• Rolling OS updates
• Every two weeks we sync down the latest updates…
• …and roll them out over two weeks
• Easy stop button and opt out for individual packages
OS updates
Minor releases and rolling updates
• /yum/centos/7.x/rollingupdates/YYYYMMDD
• Tool to automate syncing and validation
• ‘yum upgrade’* kicked off via fb_yum
• Manual per-machine canary opt-in
• Early canary 0.1% 1% 2% …→ → → →
OS updates
Rolling OS updates – implementation
CentOS
TheNumberAfter7
• RHEL as a preview of CentOS
• Handful of non-prod testing hosts
• No major blockers (yet)
• Get a head start playing with modules, dnf, etc.
Early Testing
RHEL 8 Beta
• Will also be shipped as Yum 4
• Fully supports modularity
• Faster (as of last recent versions)
• Chef fully supports it
• Has better solutions for cleaning duplicates
• We still need to port pkgtorrent
DNF
The new hotness
• See https://docs.fedoraproject.org/en-US/modularity/
• Pick a “stream” from different modules
• Where is my $foo package?! Oh...
• Really exciting stuff! But...
• Some pieces still being worked out
Modularity
The new hotness
CentOS is our friend!
• CentOS has a great community
• It is part of the Fedora/Red Hat family
• Modularity will enable much of our existing practices
• Allows us to support ourselves and move faster/slower as
necessary
CentOS
Facebook loves CentOS!
Questions?
• github.com/facebookincubator/rpm-backports
• github.com/facebookincubator/systemd-compat-libs
• github.com/facebookincubator/pystemd
• github.com/facebookincubator/dcrpm
• github.com/facebook/chef-cookbooks
• github.com/fedora-sysv/initscripts
• SCALE 15x (kernel): tinyurl.com/ybqgwn47
• DevConf.CZ 2017 (upstream): tinyurl.com/y7gx6nro
• ASG 2018 (systemd): tinyurl.com/ycecofb9
Questions?
Here’s all the links in the meantime!
CentOS at Facebook

Weitere ähnliche Inhalte

Was ist angesagt?

XenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in XenXenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in Xen
The Linux Foundation
 

Was ist angesagt? (20)

OpenZFS at LinuxCon
OpenZFS at LinuxConOpenZFS at LinuxCon
OpenZFS at LinuxCon
 
Firebird on Linux
Firebird on LinuxFirebird on Linux
Firebird on Linux
 
Perforce Administration: Optimization, Scalability, Availability and Reliability
Perforce Administration: Optimization, Scalability, Availability and ReliabilityPerforce Administration: Optimization, Scalability, Availability and Reliability
Perforce Administration: Optimization, Scalability, Availability and Reliability
 
XenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in XenXenTT: Deterministic Systems Analysis in Xen
XenTT: Deterministic Systems Analysis in Xen
 
OpenZFS - AsiaBSDcon
OpenZFS - AsiaBSDconOpenZFS - AsiaBSDcon
OpenZFS - AsiaBSDcon
 
Live migrating a container: pros, cons and gotchas
Live migrating a container: pros, cons and gotchasLive migrating a container: pros, cons and gotchas
Live migrating a container: pros, cons and gotchas
 
Docker for Java developers at JavaLand
Docker for Java developers at JavaLandDocker for Java developers at JavaLand
Docker for Java developers at JavaLand
 
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, OracleXPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
XPDS14: Xen 4.5 Roadmap - Konrad Wilk, Oracle
 
XPDS14 - Towards Massive Server Consolidation - Filipe Manco, NEC
XPDS14 - Towards Massive Server Consolidation - Filipe Manco, NECXPDS14 - Towards Massive Server Consolidation - Filipe Manco, NEC
XPDS14 - Towards Massive Server Consolidation - Filipe Manco, NEC
 
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
PCI Pass-through - FreeBSD VM on Hyper-V (MeetBSD California 2016)
 
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
FreeNAS 10: Challenges of Building a Modern Storage Appliance based on FreeBS...
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
OpenZFS send and receive
OpenZFS send and receiveOpenZFS send and receive
OpenZFS send and receive
 
BayLISA - FreeNAS 10 by Jordan Hubbard
BayLISA - FreeNAS 10 by Jordan HubbardBayLISA - FreeNAS 10 by Jordan Hubbard
BayLISA - FreeNAS 10 by Jordan Hubbard
 
Kvm and libvirt
Kvm and libvirtKvm and libvirt
Kvm and libvirt
 
Xen 4.3 Roadmap
Xen 4.3 RoadmapXen 4.3 Roadmap
Xen 4.3 Roadmap
 
PuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster EnvironmentPuppetCamp Sydney 2012 - Building a Multimaster Environment
PuppetCamp Sydney 2012 - Building a Multimaster Environment
 
XPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSE
XPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSEXPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSE
XPDS16: libvirt and Tools: What's New and What's Next - James Fehlig, SUSE
 
Kernel Recipes 2017 - 20 years of Linux Virtual Memory - Andrea Arcangeli
Kernel Recipes 2017 - 20 years of Linux Virtual Memory - Andrea ArcangeliKernel Recipes 2017 - 20 years of Linux Virtual Memory - Andrea Arcangeli
Kernel Recipes 2017 - 20 years of Linux Virtual Memory - Andrea Arcangeli
 
Python on FreeBSD
Python on FreeBSDPython on FreeBSD
Python on FreeBSD
 

Ähnlich wie CentOS at Facebook

Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014
Mandi Walls
 

Ähnlich wie CentOS at Facebook (20)

Upgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleetUpgrading CentOS on the Facebook fleet
Upgrading CentOS on the Facebook fleet
 
What's new with CentOS at Facebook
What's new with CentOS at FacebookWhat's new with CentOS at Facebook
What's new with CentOS at Facebook
 
Building community with CentOS Stream
Building community with CentOS StreamBuilding community with CentOS Stream
Building community with CentOS Stream
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Unikernel User Summit 2015: Getting started in unikernels using the rump kernel
Unikernel User Summit 2015: Getting started in unikernels using the rump kernelUnikernel User Summit 2015: Getting started in unikernels using the rump kernel
Unikernel User Summit 2015: Getting started in unikernels using the rump kernel
 
Git preso to valtech cfml team
Git preso to valtech cfml teamGit preso to valtech cfml team
Git preso to valtech cfml team
 
Gentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile EverythingGentoo Linux, or Why in the World You Should Compile Everything
Gentoo Linux, or Why in the World You Should Compile Everything
 
Docking postgres
Docking postgresDocking postgres
Docking postgres
 
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow Puppet Camp New York 2014: Streamlining Puppet Development Workflow
Puppet Camp New York 2014: Streamlining Puppet Development Workflow
 
Steamlining your puppet development workflow
Steamlining your puppet development workflowSteamlining your puppet development workflow
Steamlining your puppet development workflow
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
MoldCamp - multidimentional testing workflow. CIBox.
MoldCamp  - multidimentional testing workflow. CIBox.MoldCamp  - multidimentional testing workflow. CIBox.
MoldCamp - multidimentional testing workflow. CIBox.
 
Unix tc
Unix tcUnix tc
Unix tc
 
How bigtop leveraged docker for build automation and one click hadoop provis...
How bigtop leveraged docker for build automation and  one click hadoop provis...How bigtop leveraged docker for build automation and  one click hadoop provis...
How bigtop leveraged docker for build automation and one click hadoop provis...
 
Opening last bits of the infrastructure
Opening last bits of the infrastructureOpening last bits of the infrastructure
Opening last bits of the infrastructure
 
Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014Open Source Tools for Leveling Up Operations FOSSET 2014
Open Source Tools for Leveling Up Operations FOSSET 2014
 
Stateless Hypervisors at Scale
Stateless Hypervisors at ScaleStateless Hypervisors at Scale
Stateless Hypervisors at Scale
 
Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...Symfony under control. Continuous Integration and Automated Deployments in Sy...
Symfony under control. Continuous Integration and Automated Deployments in Sy...
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 
systemd @ Facebook in 2019
systemd @ Facebook in 2019systemd @ Facebook in 2019
systemd @ Facebook in 2019
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Kürzlich hochgeladen (20)

DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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
 
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 ...
 
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, ...
 
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 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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
 
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
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

CentOS at Facebook

  • 1.
  • 2. CentOS at Facebook Davide Cavalca & Phil Dibowitz Production Engineering CentOS Dojo 2019
  • 3. • Infrastructure • Packaging • RPM and DNF • OS Upgrades • CentOS TheNumberAfter7 Agenda
  • 5.
  • 6. • OS Team manages the bare metal experience of the fleet • OS as a platform • Individual teams are responsible for their own hosts Infrastructure How does it work?
  • 7. • Working with the community on long-term direction • We move fast; open source often moves faster • We don’t need to write everything ourselves • Sharing our code means sharing the maintenance and having others extend it • DevConf.CZ 2017 talk: tinyurl.com/y7gx6nro Infrastructure Upstream first
  • 8. • Stable releases • Binary compatibility • Security updates • Mature and well understood tooling • EPEL • Shared ecosystem with Fedora Infrastructure Why CentOS?
  • 10. • Backports from Fedora Rawhide for stuff we care about • Mostly plumbing and low-level packages • %facebook macro to gate internal stuff • GitHub: facebookincubator/rpm-backports • CentOS + FTL = stable distro, moving fast Infrastructure FTL – Fast Thin Layer
  • 11. • Rawhide backport of latest stable • GitHub: facebookincubator/systemd-compat-libs • Tracking upstream development in master • New features: cgroup2, BPF, portable services, etc. • fb_systemd and fb_timers cookbooks • All Systems Go 2018 talk: tinyurl.com/ycecofb9 Infrastructure Plumbing – systemd
  • 12. • dbus is used for local IPC in systemd • We run a backport of dbus-daemon • Started testing dbus-broker, so far so good • Still no way to upgrade/restart without rebooting • pystemd: thin Cython wrapper on top of sd-bus • Exposes sytemd dbus object model • GitHub: facebookincubator/pystemd Infrastructure Plumbing – dbus
  • 13. • CentOS 7 version + backported network-scripts from git master • IPv6 improvements, per-device routes, ifdown, additional configuration options • GitHub: fedora-sysv/initscripts Infrastructure Plumbing – initscripts / network-scripts
  • 14. • Upstream kernel (or as close as possible) • Development in master • Internal stable and development branches • Testing and rollout automation • SCALE 15x talk: tinyurl.com/ybqgwn47 Infrastructure Kernel
  • 16. • Public mirror: mirror.facebook.net/centos/ • Upstream repos straight from CentOS • Internal repos: site-packages and fb-runtime Packaging Server side – layout
  • 17. • Stored in GlusterFS • Served per-region via Apache2 • Cached by many varnish boxes • Local CLIs + publisher to control input Packaging Server side – implementation
  • 18. Packaging Server side – implementation
  • 19. • yummy: mock wrapper with SCM integration • Store specfiles + patches in source control • Store blobs in GlusterFS-backed NFS • Automation to sync to GitHub • Can submit to central build system – required for signing Packaging Tooling – system packages
  • 20. • packman: rpmbuild wrapper for simple RPMs • Integrates with buck and our SCM tooling • Build software, generate specfile, package it up • Simple YAML configuration • Can submit to central build system – required for signing Packaging Tooling – fb-runtime packages
  • 21. • RPM: backported from Rawhide • YUM: CentOS + backported PRs • DNF: built from yum4 repos – soon to be Rawhide • RPM, yum and DNF managed by cookbooks • fb_rpm is open source Packaging Client side
  • 22. RPM and DNF (at scale)
  • 23. • I/O thrash fsync() on close() (PR#187 on rpm)→ • rpmdb corruption issues → dcrpm • Duplicate packages → package-cleanup wrapper • Scaling Yum → pkgtorrent (merged upstream) RPM and DNF at scale RPM and DNF/YUM at scale
  • 24. • Automate detection and remediation of common issues • rpmdb corruption, stuck processes, etc. • Works on Linux and OSX (!) • Runs before every Chef run • GitHub: facebookincubator/dcrpm RPM and DNF at scale dcrpm
  • 25. RPM and DNF at scale dcrpm – before and after • RPM-related failures over time • Baseline of errors still WIP
  • 26. • Merge package-cleanup wrapper into dcrpm • Test new database formats • Test DNF in production RPM and DNF at scale Work in progress
  • 28. • CentOS 5 6 and 6 7→ → • No in-place updates: reprovision the host from scratch • Easier to ensure a good state • Side effect: clean slate offers opportunity to deprecate unwanted features or tools OS updates Major releases
  • 29. • About a year from initial PoC to first production machine • About two years to migrate 100% of the fleet • Documentation and automation • Stateless vs stateful services • Prerequisites and hidden dependencies OS updates CentOS 7 migration
  • 30. • Rolling OS updates • Every two weeks we sync down the latest updates… • …and roll them out over two weeks • Easy stop button and opt out for individual packages OS updates Minor releases and rolling updates
  • 31. • /yum/centos/7.x/rollingupdates/YYYYMMDD • Tool to automate syncing and validation • ‘yum upgrade’* kicked off via fb_yum • Manual per-machine canary opt-in • Early canary 0.1% 1% 2% …→ → → → OS updates Rolling OS updates – implementation
  • 33. • RHEL as a preview of CentOS • Handful of non-prod testing hosts • No major blockers (yet) • Get a head start playing with modules, dnf, etc. Early Testing RHEL 8 Beta
  • 34. • Will also be shipped as Yum 4 • Fully supports modularity • Faster (as of last recent versions) • Chef fully supports it • Has better solutions for cleaning duplicates • We still need to port pkgtorrent DNF The new hotness
  • 35. • See https://docs.fedoraproject.org/en-US/modularity/ • Pick a “stream” from different modules • Where is my $foo package?! Oh... • Really exciting stuff! But... • Some pieces still being worked out Modularity The new hotness
  • 36. CentOS is our friend!
  • 37. • CentOS has a great community • It is part of the Fedora/Red Hat family • Modularity will enable much of our existing practices • Allows us to support ourselves and move faster/slower as necessary CentOS Facebook loves CentOS!
  • 39. • github.com/facebookincubator/rpm-backports • github.com/facebookincubator/systemd-compat-libs • github.com/facebookincubator/pystemd • github.com/facebookincubator/dcrpm • github.com/facebook/chef-cookbooks • github.com/fedora-sysv/initscripts • SCALE 15x (kernel): tinyurl.com/ybqgwn47 • DevConf.CZ 2017 (upstream): tinyurl.com/y7gx6nro • ASG 2018 (systemd): tinyurl.com/ycecofb9 Questions? Here’s all the links in the meantime!