• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 

FreeBSD Unified Configuration

on

  • 991 views

The talk focuses on a new unified approach to deploying and managing modern versions of FreeBSD across a wide variety of technical and administrative circumstances: different countries, data centers, ...

The talk focuses on a new unified approach to deploying and managing modern versions of FreeBSD across a wide variety of technical and administrative circumstances: different countries, data centers, hardware, access policies, boot methods, networking, support contracts, machine roles, etc.

While avoiding any popular Linux-centric CM systems, such as Puppet, Chef, and CFEngine, we achieve very low complexity by leveraging rc(8), loader(8), glabel(8) and other existing instruments, such as pkgng, to their potential as necessary. The cornerstone is keeping configuration and deployment versioned and unified — same across all cases, with no duplication of common parts and very simple specification of per-role/per-case peculiarities. The approach spans everything from installation and booting to managing third-party and custom site-specific software. The method is being actively developed and applied in production environment of a popular online music service.

Statistics

Views

Total Views
991
Views on SlideShare
989
Embed Views
2

Actions

Likes
1
Downloads
8
Comments
0

1 Embed 2

http://coderwall.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    FreeBSD Unified Configuration FreeBSD Unified Configuration Presentation Transcript

    • FreeBSD Unified Configuration Andrew Pantyukhininfofarmer@FreeBSD.org
    • once upon a time a private cloud
    • petabytes of datadozens of gigabits of transfers teraflops of processing
    • 4 countries 10 cities13 data centers
    • 11 service providers 15 support contracts 5 SLA types
    • ~100 machines~20 hardware configurations ~1000 hard drives
    • 30 local networks 5 network types7 out-of-band console types
    • 1 operating system (potentially more) 5 boot types
    • 1 systems engineer 1 network engineer 1 field engineer
    • initial tactics owned -> clusterleased -> setup & forget
    • briefly considered puppet, chef, cfenginescripted per-node management
    • priorities extremely low ops load and complexityextremely high performance and flexibility
    • solutionunified configuration management unified deployment
    • unified?exactly same root fs everywhereexactly same configs everywhere
    • /.git/usr/local/project/.git /usr/home/*/.git
    • fully distributedflexible semi-auto master-master sync no symlinking, copying (almost)
    • concentrated complexitysmarter specialization role-aware configs
    • rolespasswd, group aware.map
    • role-aware boot who am I? what are my MACs?MAC -> aware.map -> host -> roles
    • rc.conf - role-aware shell script intricate evaluation
    • ntpd_enable="YES"role.www() { nginx_enable="YES" }role.host1() { hack_enable="YES" }
    • for i in $myroles role.$i
    • nginx.conf role- compatible{ server_name www1; }{ server_name www2; }
    • syslog.conf role- unaware syslog.conf - most nodessyslog.conf.collect - log collector
    • rc.conf-based work- around role.logcol() { syslog_flags="-c syslog.conf.collect" }
    • fstab role-unaware #empty loader.conf, scripts
    • boot drive/dev/ufs/root1 - 10G/dev/ufs/root2 - 10G
    • boot drive/dev/gpt/swapserial - 4G /dev/ufs/serial - leftover
    • loader.conf vfs.mountrootfalls back to NFS root
    • deploymentaware.map, configs adjustment dhcp, etc
    • deploymentfind & partition a suitable drive untar recent image into root1
    • full upgrade untar new image into root2pivot root1<->root2 (kernel!!)
    • full upgrade rsync? pkgng?freebsd-update?
    • pkg upgrade pkgng
    • continuous upgrade git pull
    • edit on any box commit, pushpowerful conflict resolution
    • pretty scalable
    • git is awful rsync is lackingneed more smart configs
    • pretty simple fool-proofsingle-view cloud-wide config
    • Q&A