SlideShare ist ein Scribd-Unternehmen logo
1 von 96
WebLion Hosting
Leveraging laziness,
impatience, and hubris



ErikRose@psu.edu
http://weblion.psu.edu/wiki/ErikRose
What is WebLion Hosting?
What is WebLion Hosting?
A Plone hosting appliance
The Dark Secret of WebLion
We don’t actually do anything.*
The Dark Secret of WebLion
We don’t actually do anything.*




                            *Ssh, don’t tell my boss.
A scalable solution
To save consulting effort
A scalable solution
To save consulting effort

              College of Business
              Dairy and Animal Science
              The Huck Institutes
              Teaching and Learning
              with Technology
A scalable solution
   To save consulting effort
                                                    Penn State ts
          nt of
     rtme gy
                         Operatio
                                   ns and               eral Ar
                                                    LibCampus
                                                   Erie
  pa
DeCollegeolo              Physica                     Outrea ch
   eteor of
 MScience                         l Plan
                    College of Business t
                                                 ITS Marketing
                                                           World a
                                                                    nd
                      Dairy and Animal Science Communications
                                                          Campus
          Inn of
      College ova                                      Group
                  tion
      Education rk The Huck Institutes ary
             Pa                                     Chemistry
                                     l Libr es
                                igita logi         Department and
                              D
                      TeachingTechno
                                and Learning             inary al
                                                   Veter edic
 College of
                      with Technology                Biom Solutions
                                                        IST es
Agricultural                                            cienc
                                                      S Institute
 Sciences e of Human
     Offic
         Res  ourcesConsulting and Support Services i Computer
                                                 Alumn
   College of                                  Associa
Communications
                      Population Research Institute tioScience and
                            Office of                       n
                         Peacock Care                      Engineering
Cookie cutter sites
Partners need different…
Partners need different…

 Plone versions
Partners need different…

 Plone versions
 Products
Partners need different…

 Plone versions
 Products
 Apache configs
Partners need different…

 Plone versions
 Products
 Apache configs
 Firewall settings
Partners need different…

 Plone versions
 Products
 Apache configs
 Firewall settings
 Other services
Mass-installation tools



 Disk images
 Fully Automatic Installation (FAI)
Mass-installation tools




                                      ☹
 Disk images
 Fully Automatic Installation (FAI)

                                      Upgrades?
Configuration management tools
Configuration management tools
Puppet and cfengine
Configuration management tools
Puppet and cfengine


☹ Command-and-control philosophy
Configuration management tools
Puppet and cfengine


☹ Command-and-control philosophy
☹ A new language
Configuration management tools
Puppet and cfengine


☹ Command-and-control philosophy
☹ A new language
☹ Non-concurrent with software updates
Buildout
Buildout
The right tool for the wrong job
Buildout
The right tool for the wrong job


 Redoes existing work…worse
Buildout
The right tool for the wrong job


 Redoes existing work…worse
 Every server is a point of failure.
Buildout
The right tool for the wrong job


 Redoes existing work…worse
 Every server is a point of failure.
 On failure, breaks the site
Buildout
The right tool for the wrong job


 Redoes existing work…worse
 Every server is a point of failure.
 On failure, breaks the site
 Package QA is lacking.
Buildout
The right tool for the wrong job


 Redoes existing work…worse
 Every server is a point of failure.
 On failure, breaks the site
                                “Publishing known good sets
 Package QA is lacking.         of versions is quite painful.”
                                —Martin Aspeli
Buildout
The right tool for the wrong job


 Redoes existing work…worse
 Every server is a point of failure.
 On failure, breaks the site
                                “Publishing known good sets
 Package QA is lacking.         of versions is quite painful.”
                                —Martin Aspeli
 Not repeatable
Advanced Packaging Tool
Or “APT”
Advanced Packaging Tool
Or “APT”

 We need them anyway.
Advanced Packaging Tool
Or “APT”

 We need them anyway.
 Excellent QA record
Advanced Packaging Tool
Or “APT”

 We need them anyway.
 Excellent QA record
 High-level, low-level, and
 config stuff are close to atomic.
Advanced Packaging Tool
Or “APT”

 We need them anyway.
 Excellent QA record
 High-level, low-level, and
 config stuff are close to atomic.
 Tolerance of local changes
Advanced Packaging Tool
Or “APT”
           Configuration file `/etc/my-bologna-conf.d/firstname'
            ==> File on system created by you or by a script.
 We need them anyway.
            ==> File also in package provided by package maintainer.
              What would you like to do about it ? Your options are:
               Y or I : install the package maintainer's version
 Excellent QA record
               N or O : keep your currently-installed version
                 D : show the differences between the versions
                 Z : background this process to examine the situation
 High-level, low-level, and
            The default action is to keep your current version.
 config stuff are close to atomic.
           *** firstname (Y/I/N/O/D/Z) [default=N] ?


 Tolerance of local changes
Advanced Packaging Tool
Or “APT”

 We need them anyway.
 Excellent QA record
 High-level, low-level, and
 config stuff are close to atomic.
 Tolerance of local changes
Advanced Packaging Tool
Or “APT”

 We need them anyway.
 Excellent QA record
 High-level, low-level, and
 config stuff are close to atomic.
 Tolerance of local changes
 Reliable. Reliablereliablereliable.
Advanced Packaging Tool
A case study in failing gracefully
1.     1. If a version of the package is already installed, call




                                                                                                      !
                 old-prerm upgrade new-version

       2. If the script runs but exits with a non-zero exit status, dpkg will attempt:




                                                                                                      !
                 new-prerm failed-upgrade old-version

          If this works, the upgrade continues. If this does not work, the error unwind:

                 old-postinst abort-upgrade new-version

          If this works, then the old-version is quot;Installedquot;, if not, the old version is in a quot;Failed-Configquot; state.

2. If a quot;conflictingquot; package is being removed at the same time, or if any package will be broken (due to Breaks):

       1. If --auto-deconfigure is specified, call, for each package to be deconfigured due to Breaks:

                 deconfigured's-prerm deconfigure 




                                                                                                      !
                   in-favour package-being-installed version

          Error unwind:

                 deconfigured's-postinst abort-deconfigure 
                   in-favour package-being-installed-but-failed version

          The deconfigured packages are marked as requiring configuration, so that if --install is used they will be configured again if possible.

       2. If any packages depended on a conflicting package being removed and --auto-deconfigure is specified, call, for each such package:

                 deconfigured's-prerm deconfigure 
                   in-favour package-being-installed version 




                                                                                                      !
                     removing conflicting-package version

          Error unwind:
2. If this fails, dpkg will attempt:
                                                                                                           !
                                                                                                           !
                   new-postrm failed-upgrade old-version

            If this works, installation continues. If not, Error unwind:




Advanced Packaging Tool
                   old-preinst abort-upgrade new-version

            If this fails, the old version is left in an quot;Half Installedquot; state. If it works, dpkg now calls:

                   new-postrm abort-upgrade old-version



A case study in failing gracefully
            If this fails, the old version is left in an quot;Half Installedquot; state. If it works, dpkg now calls:

                   old-postinst abort-upgrade new-version

            If this fails, the old version is in an quot;Unpackedquot; state.

    This is the point of no return - if dpkg gets this far, it won't back off past this point if an error occurs. This will leave the package in a fairly bad
    state, which will require a successful re-installation to clear up, but it's when dpkg starts doing things that are irreversible.

 6. Any files which were in the old version of the package but not in the new are removed.

 7. The new file list replaces the old.

 8. The new maintainer scripts replace the old.

 9. Any packages all of whose files have been overwritten during the installation, and which aren't required for dependencies, are considered to have
    been removed. For each such package

        1. dpkg calls:

                   disappearer's-postrm disappear 
                     overwriter overwriter-version

        2. The package's maintainer scripts are removed.

        3. It is noted in the status database as being in a sane state, namely not installed (any conffiles it may have are ignored, rather than being
           removed by dpkg). Note that disappearing packages do not have their prerm called, because dpkg doesn't know in advance that the
           package is going to vanish.

10. Any files in the package we're unpacking that are also listed in the file lists of other packages are removed from those lists. (This will lobotomize
    the file list of the quot;conflictingquot; package if there is one.)

11. The backup files made during installation, above, are deleted.

12. The new package's status is now sane, and recorded as quot;unpackedquot;.

    Here is another point of no return - if the conflicting package's removal fails we do not unwind the rest of the installation; the conflicting package
    is left in a half-removed limbo.

13. If there was a conflicting package we go and do the removal actions (described below), starting with the removal of the conflicting package's files
    (any that are also in the package being installed have already been removed from the conflicting package's file list, and so do not get removed
    now).
libsasl2-2



                                                                                                                                                                                                                                                                                                                                                                                              libldap2-tls



                                                                                                                                                                                                                                                                                                                                                                          <debconf> debconf | <debconf-2.0> debconf-2.0
                                                                                                                                                                                                                                                                                                     (>= 1.2.9)

                                                                                                                                                                                                                                                                                                       libdb4.4
                                                                                                                                                                                                                                                                                                                                                                                              libgnutls13




                     Package Hierarchy
                                                                                                                                                                                                                                                                                                                                              (>= 1.4.0-0)
                                                                                                                                                                                                                                                                                                       libldap2
                                                                                                                                                                                                                                                                                                                                               (>= 0.5)                                     libpam-runtime


                                                                                                                                                                                                                                                                                                      libpam0g
                                                                                                                                                                                                                                                            (>= 2.1.17-1)                                                                                                                       libpam

                                                                                                                                                                                                                                                               (>= 0.76)
                                                                                                                                                                                                                                                                                                       netbase
                                                                                                                                                                                                                                                                                                                                             (>= 0.6.4-4.9)
                                                                                                                                                                                                                                                                                                                                                                                               ifupdown
                                                                                                                                                                                                                      squid
                                                                                                                                                                                                                                                            (>= 3.5.4-1)
                                                                                                                                                  weblion-squid-config                                                                                                                                  logrotate                                             <openbsd-inetd> {openbsd-inetd} | <inet-superserver> {inet-superserver
                                                                                                                                                                                                                                                         (= 2.6.5-6etch1)
                                                                                                                                                                                                                                                                                                                                               (>= 3.0-6)
                                                                                                                                                                                                        configures-etc++squid++squid.conf
                                                                                                                                                                                                                                                                                                    squid-common                                                            <iputils-ping> {iputils-ping} | <ping> {ping}

                                                                                                                                                                                                                     apache2
                                                                                                                                                                                                                                                                                                       coreutils                                                                               lsb-base
                                                                                                                                                                                                                                                                                                                      (>= 0.5)
                                                                                                                                                                                                                                                                                                                      (>= 0.5)                (>= 2.2.11-1)
                                                                                                                                                                                                             libapache2-mod-cosign
                                                                                                                                                                                                                                                                                                     squid-novm       (>= 0.5)                  (>= 1.32)                                        libacl1


                                                                                                                                                 weblion-apache-config                                             ca-certificates
                                                                                                                                                                                                                                                                                                                                                                                              libselinux1


                                                                                                                                                                                                                     ssl-cert
                                                                                                                                                                                                                                                                                                                                                                                                  stat
                                                                                                                                                                                                                                                               (>= 0.5)
                                                                                                                                                                                                       configures-etc++apache2++ports.conf                                                        apache2.2-common
                                                                                                                                                                                                                                                                                                                                                                                               net-tools

                                                                                                                                            (>= 0.5.38)                                                                                                                                                openssl
ne-3.1-stack                                                    weblion-plone-3.1-site                                                                                                                                                                                                                                                                                                       apache2-utils


                                                                                                                                                                                                                  zope-common                                                                          adduser
                                                                                                                                                                                                                                                                                                                                                                                               libmagic1
                                                                                                                           plone3-site
                                                                                                                                                                       (>= 0.5.38)
                                                                                            (= 3.1.5.1-3)                                (>= 0.5.38)                     (>= 0.5.38)                                                                                  <mime-support> {mime-support} | <python-imaging-tk> {python-imaging-tk}
                                                                                                            (>= 0.5.38)                   (>= 0.5.38)                                                                                                                                                                                                                                       mime-support

                                                                                                                                                                                        (>= 0.5.18)                                                                                                                                            (>= 0.9.8c-1)
                                                                                                                                                                                                                                                                                                     libfreetype6
                                                                                                                                                                                                                                                                                                                                                                                                procps
                                                                                                                     weblion-plone-3.1                                                                                                                                                                                                          (>= 5.6.0)
                                                                                                                                             (>= 0.5.38)                               <zope2.9> {zope2.9} | <zope2.8> {zope2.8} | <zope2.7> {zope2.7}     (>= 2.2)                              libjpeg62
                                                                                                                                   (>= 0.9.3-2~bpo40+2)                                                                                                                                                                                        (>= 1:4.0.12)
               weblion-zope-hosting-policy                                                                                                                                                                                                                                                                                                                                                apache2-common
                                                                 weblion-zope-cachefu                                                             zope-externaleditor
                                                                                                                                                                                                                 python-imaging                                 (>= 2.4)                                  pil
                                                                                                                                                                                                                                                                                                                                                                                               libssl0.9.8
                                                             weblion-zope-webserverauth                                   zope-cachefu
                                                                                                                                                                                                                                                                                                      python-pil
                                                                                                                                                                                                                    libbz2-1.0                                                                                                                                                                 perl-base
                weblion-plone-site-config            configures-etc++zope2.10++plone-site++zope.conf
                                                                                                                                                                                                                                                                 (<< 2.5)
                                                                                                                                                                                                                                                                 (>= 2.3)                         python2.3-imaging 1.4.0-0)
                                                                                                                                                                                                                                                                                                                  (>=
                                                                                                                                                            lynx                       (>= 5.4-5)                  libncursesw5                                                                                                                                                                 passwd
                                             configures-var++lib++zope2.10++zeo++plone-site++etc++zeo.conf                                                                                                                                                       (>= 0.5)
                                                                                                                                                                                                                                                                                                  python2.4-imaging
                                                                                                                                                                                                                     lynx-ssl

                                                                                                                                                                                                                                                                                                        python
                                                                                                                                                 (>= 0.3.3)
                                                                                                                                                       pdftohtml                                                        gs
                                                                                                                                                                                                                                                                 (>= 2.3)
                                                                                                                                                                                                                                                                                                    python-central
                                                                                                                                                                                                                                                               (>= 0.5)
                                                                                                                                                                                                                 python-docutils



                                                                                                                                                                                                                     libpaper1                                                                      python-roman
                                                                                                                                                                                        (>= 0.5.21)


                                                                                                                                                          xpdf-utils              (= 3.01-9.1+etch4)               xpdf-common



                                                                                                                                                                                                                   poppler-utils



                                                                                                                                                                                                                    libgcrypt11


                                                                                                                                                                                         (>= 1.2.2)
                                                                                                                                                                                                                   libgpg-error0              (>= 2.3)
                                                                                                                                                                                         (>= 1.4)
                                                                                                                                                          xsltproc
                                                                                                                                                                                        (>= 1.1.18)
                                                                                                                                                                                                                     libxslt1.1
                                                                                                                                                                                         (>= 2.6.27)

                                                                                                                                                                                                                                                (<< 2.5)
                                                                                                                                                                                                                      libxml2                   (>= 2.4)
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth




                        massdeploy
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth
Package Hierarchy
 weblion-hosting-node        weblion-squid-config                   squid



                                                                 apache2

                            weblion-apache-config

                                                          libapache2-mod-cosign
weblion-plone-3.1-stack


                           weblion-plone-site-config        weblion-plone-3.1-site



                                                           weblion-zope-cachefu

 weblion-auto-update      weblion-zope-hosting-policy

                                                        weblion-zope-webserverauth




       config-package-dev
config-package-dev
conffile packaging for Debian
config-package-dev
conffile packaging for Debian


 Override bundled confs by divert-and-symlink
config-package-dev
conffile packaging for Debian


 Override bundled confs by divert-and-symlink
 Supports local changes
config-package-dev
conffile packaging for Debian


 Override bundled confs by divert-and-symlink
 Supports local changes
 Unattended upgrade-safe
config-package-dev
conffile packaging for Debian


 Override bundled confs by divert-and-symlink
 Supports local changes
 Unattended upgrade-safe       aptitude dist-upgrade
                               -y -o Dpkg::Options::=
                               --force-confold
config-package-dev
conffile packaging for Debian


 Override bundled confs by divert-and-symlink
 Supports local changes
 Unattended upgrade-safe       aptitude dist-upgrade
                               -y -o Dpkg::Options::=
 Completes dependency          --force-confold
 unification!
config-package-dev
Examples

    weblion-hosting-node        weblion-squid-config                   squid



                                                                    apache2

                               weblion-apache-config

                                                             libapache2-mod-cosign
   weblion-plone-3.1-stack


                              weblion-plone-site-config        weblion-plone-3.1-site



                                                              weblion-zope-cachefu

    weblion-auto-update      weblion-zope-hosting-policy

                                                           weblion-zope-webserverauth
weblion-apache-config
Crown jewel of config-package-dev-ery
 1   # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read!
 2   # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.!
 3   #!
 4   # We intend that you can perform the customizations you need without editing!
 5   # this file. Instead, edit any of the files in /etc/weblion-apache-config!
 6   # Included herein. This way, we can update this file unattended without paving!
 7   # over your work.!
 8   #!
 9   # If you find you need even more flexibility, please file a ticket, and we'll!
10   # revise the design or advise you to use an entirely custom vhost and include!
11   # what files you can from!
12   # /usr/share/weblion-apache-config/config-snippets/public.!
13   !
14   # We don't put this in conf.d because, if dpkg puts a global.conf.dpkg-new or!
15   # something there, Apache will load it, too. This isn't a problem in other!
16   # folders, where Apache is careful to load only files with the extension!
17   # quot;.confquot;.!
18   Include /etc/weblion-apache-config/global.conf!
19   !
20   <VirtualHost *:80>!
21       Include /etc/weblion-apache-config/servername.conf!
22       !
23       # If you want your site to answer to more than one domain (for example,!
24       # www.example.com and example.com), don't use ServerAlias. Instead, make a!
25       # new virtual host, following the directions in!
26       # /usr/share/doc/weblion-apache-config/examples/alias-vhost.!
27       !
28       Include /etc/weblion-apache-config/serveradmin.conf!
weblion-apache-config
Crown jewel of config-package-dev-ery
 1   # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read!
 2   # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.!
 3   #!
 4   # We intend that you can perform the customizations you need without editing!
 5   # this file. Instead, edit any of the files in /etc/weblion-apache-config!
 6   # Included herein. This way, we can update this file unattended without paving!
 7   # over your work.!
 8   #!
 9   # If you find you need even more flexibility, please file a ticket, and we'll!
10   # revise the design or advise you to use an entirely custom vhost and include!
11   # what files you can from!
12   # /usr/share/weblion-apache-config/config-snippets/public.!
13   !
14   # We don't put this in conf.d because, if dpkg puts a global.conf.dpkg-new or!
15   # something there, Apache will load it, too. This isn't a problem in other!
16   # folders, where Apache is careful to load only files with the extension!
17   # quot;.confquot;.!
18   Include /etc/weblion-apache-config/global.conf!
19   !
20   <VirtualHost *:80>!
21       Include /etc/weblion-apache-config/servername.conf!
22       !
23       # If you want your site to answer to more than one domain (for example,!
24       # www.example.com and example.com), don't use ServerAlias. Instead, make a!
25       # new virtual host, following the directions in!
26       # /usr/share/doc/weblion-apache-config/examples/alias-vhost.!
27       !
28       Include /etc/weblion-apache-config/serveradmin.conf!
weblion-apache-config
Crown jewel of config-package-dev-ery
 1   # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read!
 2   # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.!
 3   #!
 4   # We intend that you can perform the customizations you need without editing!
 5   # this file. Instead, edit any of the files in /etc/weblion-apache-config!
 6   # Included herein. This way, we can update this file unattended without paving!
 7
 8
     # over your work.!
     #!
                             servername.conf:
 9   # If you find you need even more flexibility, please file a ticket, and we'll!
10   # revise the design or advise you to use an entirely custom vhost and include!
11   # what files you can from!   # This file should consist of a single
12                                # ServerName directive specifying the
     # /usr/share/weblion-apache-config/config-snippets/public.!
13   !
14   # We don't put this in conf.d# FQDN if dpkg puts a global.conf.dpkg-new or!
                                   because, of the primary vhost.
15   # something there, Apache will load it, too. This isn't a problem in other!
16
                                  ServerName #example.psu.edu#
     # folders, where Apache is careful to load only files with the extension!
17   # quot;.confquot;.!
18   Include /etc/weblion-apache-config/global.conf!
19   !
20   <VirtualHost *:80>!
21       Include /etc/weblion-apache-config/servername.conf!
22       !
23       # If you want your site to answer to more than one domain (for example,!
24       # www.example.com and example.com), don't use ServerAlias. Instead, make a!
25       # new virtual host, following the directions in!
26       # /usr/share/doc/weblion-apache-config/examples/alias-vhost.!
27       !
28       Include /etc/weblion-apache-config/serveradmin.conf!
weblion-apache-config
Crown jewel of config-package-dev-ery
 1   # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read!
 2   # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.!
 3   #!
 4   # We intend that you can perform the customizations you need without editing!
 5   # this file. Instead, edit any of the files in /etc/weblion-apache-config!
 6   # Included herein. This way, we can update this file unattended without paving!
 7   # over your work.!
 8   #!
 9   # If you find you need even more flexibility, please file a ticket, and we'll!
10   # revise the design or advise you to use an entirely custom vhost and include!
11   # what files you can from!
12   # /usr/share/weblion-apache-config/config-snippets/public.!
13   !
14   # We don't put this in conf.d because, if dpkg puts a global.conf.dpkg-new or!
15   # something there, Apache will load it, too. This isn't a problem in other!
16   # folders, where Apache is careful to load only files with the extension!
17   # quot;.confquot;.!
18   Include /etc/weblion-apache-config/global.conf!
19   !
20   <VirtualHost *:80>!
21       Include /etc/weblion-apache-config/servername.conf!
22       !
23       # If you want your site to answer to more than one domain (for example,!
24       # www.example.com and example.com), don't use ServerAlias. Instead, make a!
25       # new virtual host, following the directions in!
26       # /usr/share/doc/weblion-apache-config/examples/alias-vhost.!
27       !
28       Include /etc/weblion-apache-config/serveradmin.conf!
19   !
20   <VirtualHost *:80>!
21       Include /etc/weblion-apache-config/servername.conf!
22       !
23       # If you want your site to answer to more than one domain (for example,!



weblion-apache-config
24       # www.example.com and example.com), don't use ServerAlias. Instead, make a!
25       # new virtual host, following the directions in!
26       # /usr/share/doc/weblion-apache-config/examples/alias-vhost.!
27       !
28       Include /etc/weblion-apache-config/serveradmin.conf!

Crown jewel of config-package-dev-ery
29
30
31
         Include /etc/weblion-apache-config/log.conf!
         Include /usr/share/weblion-apache-config/config-snippets/public/prepare-to-proxy.conf!
         !
32       # Most of your custom configuration, including rewrites, should go in this!
33       # file and in before-proxy-to-plone-https.conf, below:!
34       Include /etc/weblion-apache-config/before-proxy-to-plone.conf!
35       !
36       Include /etc/weblion-apache-config/proxy-to-plone.conf!
37   </VirtualHost>!
38   !
39   <VirtualHost *:443>!
40       Include /etc/weblion-apache-config/servername.conf!
41       Include /etc/weblion-apache-config/serveradmin.conf!
42       Include /etc/weblion-apache-config/log.conf!
43       !
44       Include /etc/weblion-apache-config/enable-ssl.conf!
45       Include /etc/weblion-apache-config/ssl-certificate-files.conf!
46       !
47   !   # Require authN for SSL access to the Plone site:!
48   !   <Location />!
49   !       Include /usr/share/weblion-apache-config/config-snippets/public/require-cosign-auth.conf!
50   !       Include /etc/weblion-apache-config/cosign-host-parameters.conf!
51   !   </Location>!
52   !   !
53       Include /usr/share/weblion-apache-config/config-snippets/public/prepare-to-proxy-https.conf!
54       !
55       # Most of your custom configuration, including rewrites, should go in this!
56       # file and in before-proxy-to-plone.conf, above:!
57       Include /etc/weblion-apache-config/before-proxy-to-plone-https.conf!
58       !
59       Include /etc/weblion-apache-config/proxy-to-plone-https.conf!
60   </VirtualHost>!
Updation
O(1) for the fun of it
Updation
O(1) for the fun of it

  Update the package repository
Updation
O(1) for the fun of it

  Update the package repository
  Visit each machine
Updation
O(1) for the fun of it

  Update the package repository
  Visit each machine
  Spin the chamber with buildout
Updation
O(1) for the fun of it

  Update the package repository
  Visit each machine
  Spin the chamber with buildout
  Go home
Release Process
Distributions
Release Process
Distributions


 etch-unstable
Release Process
Distributions


 etch-unstable
 etch-testing
Release Process
Distributions


 etch-unstable
 etch-testing
 etch
Release Process
Distributions


 etch-unstable
 etch-testing
 etch
 lenny-unstable
Release Process
Distributions


 etch-unstable
 etch-testing
 etch
 lenny-unstable
 lenny-testing
Release Process
Distributions


 etch-unstable
 etch-testing
 etch
 lenny-unstable
 lenny-testing
 lenny
Release Process
Project Management
Release Process
 Project Management




http://weblion.psu.edu/wiki/WebLionHosting
Release Process
 Documentation




http://weblion.psu.edu/wiki/WebLionHostingAdminGuide
Try it
Hardware options
Try it
Hardware options


 Dedicated
Try it
Hardware options


 Dedicated
 Homegrown virtualization
Try it
Hardware options


 Dedicated
 Homegrown virtualization
 EC2
Try it
Hardware options


 Dedicated
 Homegrown virtualization
 EC2
 Toasters
Try it
I’m so rone-ry




Details: http://weblion.psu.edu/wiki/BootstrapServers
Try it
I’m so rone-ry

1. echo quot;deb http://deb.weblion.psu.edu/debian etch main
   non-free contribquot; >> /etc/apt/sources.list




Details: http://weblion.psu.edu/wiki/BootstrapServers
Try it
I’m so rone-ry

1. echo quot;deb http://deb.weblion.psu.edu/debian etch main
   non-free contribquot; >> /etc/apt/sources.list
2. aptitude update




Details: http://weblion.psu.edu/wiki/BootstrapServers
Try it
I’m so rone-ry

1. echo quot;deb http://deb.weblion.psu.edu/debian etch main
   non-free contribquot; >> /etc/apt/sources.list
2. aptitude update
3. aptitude install --without-recommends -y
   weblion-hosting-vmware-node weblion-auto-update
   weblion-plone-3.1-stack



Details: http://weblion.psu.edu/wiki/BootstrapServers
Future
Future

Newer Plones
Future

Newer Plones
Factor out Penn-State–specific stuff
Future

Newer Plones
Factor out Penn-State–specific stuff
Monitor Zope
Future

Newer Plones
Factor out Penn-State–specific stuff
Monitor Zope
Try WebLion Hosting
http://weblion.psu.edu/wiki/
BootstrapServers




                               ErikRose@psu.edu
                      #weblion on irc.freenode.net
Try WebLion Hosting
http://weblion.psu.edu/wiki/
BootstrapServers




                               ErikRose@psu.edu
                      #weblion on irc.freenode.net

Weitere ähnliche Inhalte

Andere mochten auch

East Algarve Magazine - NOVEMBER 2010
East Algarve Magazine - NOVEMBER 2010East Algarve Magazine - NOVEMBER 2010
East Algarve Magazine - NOVEMBER 2010Nick Eamag
 
Be2Awards and Be2Talks 2013 - event slides
Be2Awards and Be2Talks 2013 - event slidesBe2Awards and Be2Talks 2013 - event slides
Be2Awards and Be2Talks 2013 - event slidesBe2camp Admin
 
Cookies
CookiesCookies
Cookiesepo273
 
Securing the e health cloud
Securing the e health cloudSecuring the e health cloud
Securing the e health cloudBong Young Sung
 
saic annual reports 2003
saic annual reports 2003saic annual reports 2003
saic annual reports 2003finance42
 
2345014 unix-linux-bsd-cheat-sheets-i
2345014 unix-linux-bsd-cheat-sheets-i2345014 unix-linux-bsd-cheat-sheets-i
2345014 unix-linux-bsd-cheat-sheets-iLogesh Kumar Anandhan
 
ISC West 2014 Korea Pavilion Directory
ISC West 2014 Korea Pavilion DirectoryISC West 2014 Korea Pavilion Directory
ISC West 2014 Korea Pavilion DirectoryCindy Moon
 
Adobe Marketing Cloud Integration with Adobe AEM
Adobe Marketing Cloud Integration with Adobe AEMAdobe Marketing Cloud Integration with Adobe AEM
Adobe Marketing Cloud Integration with Adobe AEMDeepak Narisety
 
Dedo talk-2014-flat
Dedo talk-2014-flatDedo talk-2014-flat
Dedo talk-2014-flat23rd & 5th
 
120000 trang edu urls
120000 trang edu urls120000 trang edu urls
120000 trang edu urlssieuthi68
 
Data Mining With R
Data Mining With RData Mining With R
Data Mining With RAjay Ohri
 
Kony - End-to-End Proof of Technology
Kony - End-to-End Proof of TechnologyKony - End-to-End Proof of Technology
Kony - End-to-End Proof of TechnologyDipesh Mukerji
 
RailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesRailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesBenoit Bénézech
 

Andere mochten auch (16)

East Algarve Magazine - NOVEMBER 2010
East Algarve Magazine - NOVEMBER 2010East Algarve Magazine - NOVEMBER 2010
East Algarve Magazine - NOVEMBER 2010
 
Be2Awards and Be2Talks 2013 - event slides
Be2Awards and Be2Talks 2013 - event slidesBe2Awards and Be2Talks 2013 - event slides
Be2Awards and Be2Talks 2013 - event slides
 
Cookies
CookiesCookies
Cookies
 
Securing the e health cloud
Securing the e health cloudSecuring the e health cloud
Securing the e health cloud
 
Discover the Baltic states for studies
Discover the Baltic states for studiesDiscover the Baltic states for studies
Discover the Baltic states for studies
 
saic annual reports 2003
saic annual reports 2003saic annual reports 2003
saic annual reports 2003
 
2345014 unix-linux-bsd-cheat-sheets-i
2345014 unix-linux-bsd-cheat-sheets-i2345014 unix-linux-bsd-cheat-sheets-i
2345014 unix-linux-bsd-cheat-sheets-i
 
ISC West 2014 Korea Pavilion Directory
ISC West 2014 Korea Pavilion DirectoryISC West 2014 Korea Pavilion Directory
ISC West 2014 Korea Pavilion Directory
 
Uk norway ib directory
Uk norway ib directoryUk norway ib directory
Uk norway ib directory
 
Adobe Marketing Cloud Integration with Adobe AEM
Adobe Marketing Cloud Integration with Adobe AEMAdobe Marketing Cloud Integration with Adobe AEM
Adobe Marketing Cloud Integration with Adobe AEM
 
Dedo talk-2014-flat
Dedo talk-2014-flatDedo talk-2014-flat
Dedo talk-2014-flat
 
120000 trang edu urls
120000 trang edu urls120000 trang edu urls
120000 trang edu urls
 
Data Mining With R
Data Mining With RData Mining With R
Data Mining With R
 
Kony - End-to-End Proof of Technology
Kony - End-to-End Proof of TechnologyKony - End-to-End Proof of Technology
Kony - End-to-End Proof of Technology
 
RailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practicesRailsAdmin - Overview and Best practices
RailsAdmin - Overview and Best practices
 
2009 04.s10-admin-topics1
2009 04.s10-admin-topics12009 04.s10-admin-topics1
2009 04.s10-admin-topics1
 

Ähnlich wie WebLion Hosting: Leveraging Laziness, Impatience, and Hubris

testing for people who hate testing
testing for people who hate testingtesting for people who hate testing
testing for people who hate testingBram Vogelaar
 
SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)TelecomValley
 
Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...
Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...
Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...ScyllaDB
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in DjangoKevin Harvey
 
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Cωνσtantίnoς Giannoulis
 
Build Quality In: Stop the Line - Peter Antman
Build Quality In: Stop the Line - Peter AntmanBuild Quality In: Stop the Line - Peter Antman
Build Quality In: Stop the Line - Peter AntmanSmartBear
 
Stress Test & Chaos Engineering
Stress Test & Chaos EngineeringStress Test & Chaos Engineering
Stress Test & Chaos EngineeringDiego Pacheco
 
MAVEN - Short documentation
MAVEN - Short documentationMAVEN - Short documentation
MAVEN - Short documentationHolasz Kati
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...Eric Smalling
 
DevOps - Chaos Engineering on Kubernetes
DevOps - Chaos Engineering on KubernetesDevOps - Chaos Engineering on Kubernetes
DevOps - Chaos Engineering on KubernetesDavid Hsu
 
Sling health Checks by Bertrand Delacretaz
Sling health Checks by Bertrand DelacretazSling health Checks by Bertrand Delacretaz
Sling health Checks by Bertrand DelacretazAEM HUB
 
Taming your CQ/AEM instances with the Apache Sling Health Checks
Taming your CQ/AEM instances with the Apache Sling Health ChecksTaming your CQ/AEM instances with the Apache Sling Health Checks
Taming your CQ/AEM instances with the Apache Sling Health ChecksBertrand Delacretaz
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019RackN
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareLaura Frank Tacho
 
Test driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and MoleculeTest driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and MoleculeSerena Lorenzini
 

Ähnlich wie WebLion Hosting: Leveraging Laziness, Impatience, and Hubris (20)

testing for people who hate testing
testing for people who hate testingtesting for people who hate testing
testing for people who hate testing
 
Wndows Phone 7 Marketplace testing
Wndows Phone 7 Marketplace testingWndows Phone 7 Marketplace testing
Wndows Phone 7 Marketplace testing
 
Ug. marketplace testing
Ug. marketplace testingUg. marketplace testing
Ug. marketplace testing
 
SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)SophiaConf 2018 - P. Urso (Activeeon)
SophiaConf 2018 - P. Urso (Activeeon)
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Unit Testing Lots of Perl
Unit Testing Lots of PerlUnit Testing Lots of Perl
Unit Testing Lots of Perl
 
Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...
Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...
Project Gemini - a fuzzing tool used by Scylla to guarantee that data, once w...
 
Test
TestTest
Test
 
Continuous Integration Testing in Django
Continuous Integration Testing in DjangoContinuous Integration Testing in Django
Continuous Integration Testing in Django
 
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
 
Build Quality In: Stop the Line - Peter Antman
Build Quality In: Stop the Line - Peter AntmanBuild Quality In: Stop the Line - Peter Antman
Build Quality In: Stop the Line - Peter Antman
 
Stress Test & Chaos Engineering
Stress Test & Chaos EngineeringStress Test & Chaos Engineering
Stress Test & Chaos Engineering
 
MAVEN - Short documentation
MAVEN - Short documentationMAVEN - Short documentation
MAVEN - Short documentation
 
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...So. many. vulnerabilities. Why are containers such a mess and what to do abou...
So. many. vulnerabilities. Why are containers such a mess and what to do abou...
 
DevOps - Chaos Engineering on Kubernetes
DevOps - Chaos Engineering on KubernetesDevOps - Chaos Engineering on Kubernetes
DevOps - Chaos Engineering on Kubernetes
 
Sling health Checks by Bertrand Delacretaz
Sling health Checks by Bertrand DelacretazSling health Checks by Bertrand Delacretaz
Sling health Checks by Bertrand Delacretaz
 
Taming your CQ/AEM instances with the Apache Sling Health Checks
Taming your CQ/AEM instances with the Apache Sling Health ChecksTaming your CQ/AEM instances with the Apache Sling Health Checks
Taming your CQ/AEM instances with the Apache Sling Health Checks
 
Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019Immutable Infrastructure & Rethinking Configuration - Interop 2019
Immutable Infrastructure & Rethinking Configuration - Interop 2019
 
Stop Being Lazy and Test Your Software
Stop Being Lazy and Test Your SoftwareStop Being Lazy and Test Your Software
Stop Being Lazy and Test Your Software
 
Test driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and MoleculeTest driven Infrastructure development with Ansible and Molecule
Test driven Infrastructure development with Ansible and Molecule
 

Mehr von Erik Rose

Fathom Overview and Future, San Francisco 2018
Fathom Overview and Future, San Francisco 2018Fathom Overview and Future, San Francisco 2018
Fathom Overview and Future, San Francisco 2018Erik Rose
 
What happens when firefox crashes?
What happens when firefox crashes?What happens when firefox crashes?
What happens when firefox crashes?Erik Rose
 
Es part 2 pdf no build
Es part 2 pdf no buildEs part 2 pdf no build
Es part 2 pdf no buildErik Rose
 
Fluid, Fluent APIs
Fluid, Fluent APIsFluid, Fluent APIs
Fluid, Fluent APIsErik Rose
 
Django’s nasal passage
Django’s nasal passageDjango’s nasal passage
Django’s nasal passageErik Rose
 
WebLion Hosting Lightning Talk
WebLion Hosting Lightning TalkWebLion Hosting Lightning Talk
WebLion Hosting Lightning TalkErik Rose
 
Protecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad InternetProtecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad InternetErik Rose
 

Mehr von Erik Rose (9)

Fathom Overview and Future, San Francisco 2018
Fathom Overview and Future, San Francisco 2018Fathom Overview and Future, San Francisco 2018
Fathom Overview and Future, San Francisco 2018
 
What happens when firefox crashes?
What happens when firefox crashes?What happens when firefox crashes?
What happens when firefox crashes?
 
Poetic APIs
Poetic APIsPoetic APIs
Poetic APIs
 
Es part 2 pdf no build
Es part 2 pdf no buildEs part 2 pdf no build
Es part 2 pdf no build
 
Fluid, Fluent APIs
Fluid, Fluent APIsFluid, Fluent APIs
Fluid, Fluent APIs
 
Django’s nasal passage
Django’s nasal passageDjango’s nasal passage
Django’s nasal passage
 
Stackful
StackfulStackful
Stackful
 
WebLion Hosting Lightning Talk
WebLion Hosting Lightning TalkWebLion Hosting Lightning Talk
WebLion Hosting Lightning Talk
 
Protecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad InternetProtecting Plone from the Big, Bad Internet
Protecting Plone from the Big, Bad Internet
 

Kürzlich hochgeladen

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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 Takeoffsammart93
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
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 WorkerThousandEyes
 
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 Processorsdebabhi2
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

WebLion Hosting: Leveraging Laziness, Impatience, and Hubris

  • 1. WebLion Hosting Leveraging laziness, impatience, and hubris ErikRose@psu.edu http://weblion.psu.edu/wiki/ErikRose
  • 2. What is WebLion Hosting?
  • 3. What is WebLion Hosting? A Plone hosting appliance
  • 4. The Dark Secret of WebLion We don’t actually do anything.*
  • 5. The Dark Secret of WebLion We don’t actually do anything.* *Ssh, don’t tell my boss.
  • 6. A scalable solution To save consulting effort
  • 7. A scalable solution To save consulting effort College of Business Dairy and Animal Science The Huck Institutes Teaching and Learning with Technology
  • 8. A scalable solution To save consulting effort Penn State ts nt of rtme gy Operatio ns and eral Ar LibCampus Erie pa DeCollegeolo Physica Outrea ch eteor of MScience l Plan College of Business t ITS Marketing World a nd Dairy and Animal Science Communications Campus Inn of College ova Group tion Education rk The Huck Institutes ary Pa Chemistry l Libr es igita logi Department and D TeachingTechno and Learning inary al Veter edic College of with Technology Biom Solutions IST es Agricultural cienc S Institute Sciences e of Human Offic Res ourcesConsulting and Support Services i Computer Alumn College of Associa Communications Population Research Institute tioScience and Office of n Peacock Care Engineering
  • 10.
  • 12. Partners need different… Plone versions
  • 13. Partners need different… Plone versions Products
  • 14. Partners need different… Plone versions Products Apache configs
  • 15. Partners need different… Plone versions Products Apache configs Firewall settings
  • 16. Partners need different… Plone versions Products Apache configs Firewall settings Other services
  • 17. Mass-installation tools Disk images Fully Automatic Installation (FAI)
  • 18. Mass-installation tools ☹ Disk images Fully Automatic Installation (FAI) Upgrades?
  • 21. Configuration management tools Puppet and cfengine ☹ Command-and-control philosophy
  • 22. Configuration management tools Puppet and cfengine ☹ Command-and-control philosophy ☹ A new language
  • 23. Configuration management tools Puppet and cfengine ☹ Command-and-control philosophy ☹ A new language ☹ Non-concurrent with software updates
  • 25. Buildout The right tool for the wrong job
  • 26. Buildout The right tool for the wrong job Redoes existing work…worse
  • 27. Buildout The right tool for the wrong job Redoes existing work…worse Every server is a point of failure.
  • 28. Buildout The right tool for the wrong job Redoes existing work…worse Every server is a point of failure. On failure, breaks the site
  • 29. Buildout The right tool for the wrong job Redoes existing work…worse Every server is a point of failure. On failure, breaks the site Package QA is lacking.
  • 30. Buildout The right tool for the wrong job Redoes existing work…worse Every server is a point of failure. On failure, breaks the site “Publishing known good sets Package QA is lacking. of versions is quite painful.” —Martin Aspeli
  • 31. Buildout The right tool for the wrong job Redoes existing work…worse Every server is a point of failure. On failure, breaks the site “Publishing known good sets Package QA is lacking. of versions is quite painful.” —Martin Aspeli Not repeatable
  • 33. Advanced Packaging Tool Or “APT” We need them anyway.
  • 34. Advanced Packaging Tool Or “APT” We need them anyway. Excellent QA record
  • 35. Advanced Packaging Tool Or “APT” We need them anyway. Excellent QA record High-level, low-level, and config stuff are close to atomic.
  • 36. Advanced Packaging Tool Or “APT” We need them anyway. Excellent QA record High-level, low-level, and config stuff are close to atomic. Tolerance of local changes
  • 37. Advanced Packaging Tool Or “APT” Configuration file `/etc/my-bologna-conf.d/firstname'  ==> File on system created by you or by a script. We need them anyway.  ==> File also in package provided by package maintainer.    What would you like to do about it ? Your options are:     Y or I : install the package maintainer's version Excellent QA record     N or O : keep your currently-installed version       D : show the differences between the versions       Z : background this process to examine the situation High-level, low-level, and  The default action is to keep your current version. config stuff are close to atomic. *** firstname (Y/I/N/O/D/Z) [default=N] ? Tolerance of local changes
  • 38. Advanced Packaging Tool Or “APT” We need them anyway. Excellent QA record High-level, low-level, and config stuff are close to atomic. Tolerance of local changes
  • 39. Advanced Packaging Tool Or “APT” We need them anyway. Excellent QA record High-level, low-level, and config stuff are close to atomic. Tolerance of local changes Reliable. Reliablereliablereliable.
  • 40. Advanced Packaging Tool A case study in failing gracefully 1. 1. If a version of the package is already installed, call ! old-prerm upgrade new-version 2. If the script runs but exits with a non-zero exit status, dpkg will attempt: ! new-prerm failed-upgrade old-version If this works, the upgrade continues. If this does not work, the error unwind: old-postinst abort-upgrade new-version If this works, then the old-version is quot;Installedquot;, if not, the old version is in a quot;Failed-Configquot; state. 2. If a quot;conflictingquot; package is being removed at the same time, or if any package will be broken (due to Breaks): 1. If --auto-deconfigure is specified, call, for each package to be deconfigured due to Breaks: deconfigured's-prerm deconfigure ! in-favour package-being-installed version Error unwind: deconfigured's-postinst abort-deconfigure in-favour package-being-installed-but-failed version The deconfigured packages are marked as requiring configuration, so that if --install is used they will be configured again if possible. 2. If any packages depended on a conflicting package being removed and --auto-deconfigure is specified, call, for each such package: deconfigured's-prerm deconfigure in-favour package-being-installed version ! removing conflicting-package version Error unwind:
  • 41. 2. If this fails, dpkg will attempt: ! ! new-postrm failed-upgrade old-version If this works, installation continues. If not, Error unwind: Advanced Packaging Tool old-preinst abort-upgrade new-version If this fails, the old version is left in an quot;Half Installedquot; state. If it works, dpkg now calls: new-postrm abort-upgrade old-version A case study in failing gracefully If this fails, the old version is left in an quot;Half Installedquot; state. If it works, dpkg now calls: old-postinst abort-upgrade new-version If this fails, the old version is in an quot;Unpackedquot; state. This is the point of no return - if dpkg gets this far, it won't back off past this point if an error occurs. This will leave the package in a fairly bad state, which will require a successful re-installation to clear up, but it's when dpkg starts doing things that are irreversible. 6. Any files which were in the old version of the package but not in the new are removed. 7. The new file list replaces the old. 8. The new maintainer scripts replace the old. 9. Any packages all of whose files have been overwritten during the installation, and which aren't required for dependencies, are considered to have been removed. For each such package 1. dpkg calls: disappearer's-postrm disappear overwriter overwriter-version 2. The package's maintainer scripts are removed. 3. It is noted in the status database as being in a sane state, namely not installed (any conffiles it may have are ignored, rather than being removed by dpkg). Note that disappearing packages do not have their prerm called, because dpkg doesn't know in advance that the package is going to vanish. 10. Any files in the package we're unpacking that are also listed in the file lists of other packages are removed from those lists. (This will lobotomize the file list of the quot;conflictingquot; package if there is one.) 11. The backup files made during installation, above, are deleted. 12. The new package's status is now sane, and recorded as quot;unpackedquot;. Here is another point of no return - if the conflicting package's removal fails we do not unwind the rest of the installation; the conflicting package is left in a half-removed limbo. 13. If there was a conflicting package we go and do the removal actions (described below), starting with the removal of the conflicting package's files (any that are also in the package being installed have already been removed from the conflicting package's file list, and so do not get removed now).
  • 42. libsasl2-2 libldap2-tls <debconf> debconf | <debconf-2.0> debconf-2.0 (>= 1.2.9) libdb4.4 libgnutls13 Package Hierarchy (>= 1.4.0-0) libldap2 (>= 0.5) libpam-runtime libpam0g (>= 2.1.17-1) libpam (>= 0.76) netbase (>= 0.6.4-4.9) ifupdown squid (>= 3.5.4-1) weblion-squid-config logrotate <openbsd-inetd> {openbsd-inetd} | <inet-superserver> {inet-superserver (= 2.6.5-6etch1) (>= 3.0-6) configures-etc++squid++squid.conf squid-common <iputils-ping> {iputils-ping} | <ping> {ping} apache2 coreutils lsb-base (>= 0.5) (>= 0.5) (>= 2.2.11-1) libapache2-mod-cosign squid-novm (>= 0.5) (>= 1.32) libacl1 weblion-apache-config ca-certificates libselinux1 ssl-cert stat (>= 0.5) configures-etc++apache2++ports.conf apache2.2-common net-tools (>= 0.5.38) openssl ne-3.1-stack weblion-plone-3.1-site apache2-utils zope-common adduser libmagic1 plone3-site (>= 0.5.38) (= 3.1.5.1-3) (>= 0.5.38) (>= 0.5.38) <mime-support> {mime-support} | <python-imaging-tk> {python-imaging-tk} (>= 0.5.38) (>= 0.5.38) mime-support (>= 0.5.18) (>= 0.9.8c-1) libfreetype6 procps weblion-plone-3.1 (>= 5.6.0) (>= 0.5.38) <zope2.9> {zope2.9} | <zope2.8> {zope2.8} | <zope2.7> {zope2.7} (>= 2.2) libjpeg62 (>= 0.9.3-2~bpo40+2) (>= 1:4.0.12) weblion-zope-hosting-policy apache2-common weblion-zope-cachefu zope-externaleditor python-imaging (>= 2.4) pil libssl0.9.8 weblion-zope-webserverauth zope-cachefu python-pil libbz2-1.0 perl-base weblion-plone-site-config configures-etc++zope2.10++plone-site++zope.conf (<< 2.5) (>= 2.3) python2.3-imaging 1.4.0-0) (>= lynx (>= 5.4-5) libncursesw5 passwd configures-var++lib++zope2.10++zeo++plone-site++etc++zeo.conf (>= 0.5) python2.4-imaging lynx-ssl python (>= 0.3.3) pdftohtml gs (>= 2.3) python-central (>= 0.5) python-docutils libpaper1 python-roman (>= 0.5.21) xpdf-utils (= 3.01-9.1+etch4) xpdf-common poppler-utils libgcrypt11 (>= 1.2.2) libgpg-error0 (>= 2.3) (>= 1.4) xsltproc (>= 1.1.18) libxslt1.1 (>= 2.6.27) (<< 2.5) libxml2 (>= 2.4)
  • 43. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth
  • 44. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth
  • 45. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth
  • 46. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth
  • 47. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth
  • 48. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth massdeploy
  • 49. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth
  • 50. Package Hierarchy weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth config-package-dev
  • 52. config-package-dev conffile packaging for Debian Override bundled confs by divert-and-symlink
  • 53. config-package-dev conffile packaging for Debian Override bundled confs by divert-and-symlink Supports local changes
  • 54. config-package-dev conffile packaging for Debian Override bundled confs by divert-and-symlink Supports local changes Unattended upgrade-safe
  • 55. config-package-dev conffile packaging for Debian Override bundled confs by divert-and-symlink Supports local changes Unattended upgrade-safe aptitude dist-upgrade -y -o Dpkg::Options::= --force-confold
  • 56. config-package-dev conffile packaging for Debian Override bundled confs by divert-and-symlink Supports local changes Unattended upgrade-safe aptitude dist-upgrade -y -o Dpkg::Options::= Completes dependency --force-confold unification!
  • 57. config-package-dev Examples weblion-hosting-node weblion-squid-config squid apache2 weblion-apache-config libapache2-mod-cosign weblion-plone-3.1-stack weblion-plone-site-config weblion-plone-3.1-site weblion-zope-cachefu weblion-auto-update weblion-zope-hosting-policy weblion-zope-webserverauth
  • 58. weblion-apache-config Crown jewel of config-package-dev-ery 1 # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read! 2 # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.! 3 #! 4 # We intend that you can perform the customizations you need without editing! 5 # this file. Instead, edit any of the files in /etc/weblion-apache-config! 6 # Included herein. This way, we can update this file unattended without paving! 7 # over your work.! 8 #! 9 # If you find you need even more flexibility, please file a ticket, and we'll! 10 # revise the design or advise you to use an entirely custom vhost and include! 11 # what files you can from! 12 # /usr/share/weblion-apache-config/config-snippets/public.! 13 ! 14 # We don't put this in conf.d because, if dpkg puts a global.conf.dpkg-new or! 15 # something there, Apache will load it, too. This isn't a problem in other! 16 # folders, where Apache is careful to load only files with the extension! 17 # quot;.confquot;.! 18 Include /etc/weblion-apache-config/global.conf! 19 ! 20 <VirtualHost *:80>! 21 Include /etc/weblion-apache-config/servername.conf! 22 ! 23 # If you want your site to answer to more than one domain (for example,! 24 # www.example.com and example.com), don't use ServerAlias. Instead, make a! 25 # new virtual host, following the directions in! 26 # /usr/share/doc/weblion-apache-config/examples/alias-vhost.! 27 ! 28 Include /etc/weblion-apache-config/serveradmin.conf!
  • 59. weblion-apache-config Crown jewel of config-package-dev-ery 1 # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read! 2 # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.! 3 #! 4 # We intend that you can perform the customizations you need without editing! 5 # this file. Instead, edit any of the files in /etc/weblion-apache-config! 6 # Included herein. This way, we can update this file unattended without paving! 7 # over your work.! 8 #! 9 # If you find you need even more flexibility, please file a ticket, and we'll! 10 # revise the design or advise you to use an entirely custom vhost and include! 11 # what files you can from! 12 # /usr/share/weblion-apache-config/config-snippets/public.! 13 ! 14 # We don't put this in conf.d because, if dpkg puts a global.conf.dpkg-new or! 15 # something there, Apache will load it, too. This isn't a problem in other! 16 # folders, where Apache is careful to load only files with the extension! 17 # quot;.confquot;.! 18 Include /etc/weblion-apache-config/global.conf! 19 ! 20 <VirtualHost *:80>! 21 Include /etc/weblion-apache-config/servername.conf! 22 ! 23 # If you want your site to answer to more than one domain (for example,! 24 # www.example.com and example.com), don't use ServerAlias. Instead, make a! 25 # new virtual host, following the directions in! 26 # /usr/share/doc/weblion-apache-config/examples/alias-vhost.! 27 ! 28 Include /etc/weblion-apache-config/serveradmin.conf!
  • 60. weblion-apache-config Crown jewel of config-package-dev-ery 1 # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read! 2 # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.! 3 #! 4 # We intend that you can perform the customizations you need without editing! 5 # this file. Instead, edit any of the files in /etc/weblion-apache-config! 6 # Included herein. This way, we can update this file unattended without paving! 7 8 # over your work.! #! servername.conf: 9 # If you find you need even more flexibility, please file a ticket, and we'll! 10 # revise the design or advise you to use an entirely custom vhost and include! 11 # what files you can from! # This file should consist of a single 12 # ServerName directive specifying the # /usr/share/weblion-apache-config/config-snippets/public.! 13 ! 14 # We don't put this in conf.d# FQDN if dpkg puts a global.conf.dpkg-new or! because, of the primary vhost. 15 # something there, Apache will load it, too. This isn't a problem in other! 16 ServerName #example.psu.edu# # folders, where Apache is careful to load only files with the extension! 17 # quot;.confquot;.! 18 Include /etc/weblion-apache-config/global.conf! 19 ! 20 <VirtualHost *:80>! 21 Include /etc/weblion-apache-config/servername.conf! 22 ! 23 # If you want your site to answer to more than one domain (for example,! 24 # www.example.com and example.com), don't use ServerAlias. Instead, make a! 25 # new virtual host, following the directions in! 26 # /usr/share/doc/weblion-apache-config/examples/alias-vhost.! 27 ! 28 Include /etc/weblion-apache-config/serveradmin.conf!
  • 61. weblion-apache-config Crown jewel of config-package-dev-ery 1 # AUTOMATIC UPDATES MIGHT BREAK YOUR MACHINE if you don't read! 2 # https://weblion.psu.edu/wiki/ConfigPackageOverrides before editing this file.! 3 #! 4 # We intend that you can perform the customizations you need without editing! 5 # this file. Instead, edit any of the files in /etc/weblion-apache-config! 6 # Included herein. This way, we can update this file unattended without paving! 7 # over your work.! 8 #! 9 # If you find you need even more flexibility, please file a ticket, and we'll! 10 # revise the design or advise you to use an entirely custom vhost and include! 11 # what files you can from! 12 # /usr/share/weblion-apache-config/config-snippets/public.! 13 ! 14 # We don't put this in conf.d because, if dpkg puts a global.conf.dpkg-new or! 15 # something there, Apache will load it, too. This isn't a problem in other! 16 # folders, where Apache is careful to load only files with the extension! 17 # quot;.confquot;.! 18 Include /etc/weblion-apache-config/global.conf! 19 ! 20 <VirtualHost *:80>! 21 Include /etc/weblion-apache-config/servername.conf! 22 ! 23 # If you want your site to answer to more than one domain (for example,! 24 # www.example.com and example.com), don't use ServerAlias. Instead, make a! 25 # new virtual host, following the directions in! 26 # /usr/share/doc/weblion-apache-config/examples/alias-vhost.! 27 ! 28 Include /etc/weblion-apache-config/serveradmin.conf!
  • 62. 19 ! 20 <VirtualHost *:80>! 21 Include /etc/weblion-apache-config/servername.conf! 22 ! 23 # If you want your site to answer to more than one domain (for example,! weblion-apache-config 24 # www.example.com and example.com), don't use ServerAlias. Instead, make a! 25 # new virtual host, following the directions in! 26 # /usr/share/doc/weblion-apache-config/examples/alias-vhost.! 27 ! 28 Include /etc/weblion-apache-config/serveradmin.conf! Crown jewel of config-package-dev-ery 29 30 31 Include /etc/weblion-apache-config/log.conf! Include /usr/share/weblion-apache-config/config-snippets/public/prepare-to-proxy.conf! ! 32 # Most of your custom configuration, including rewrites, should go in this! 33 # file and in before-proxy-to-plone-https.conf, below:! 34 Include /etc/weblion-apache-config/before-proxy-to-plone.conf! 35 ! 36 Include /etc/weblion-apache-config/proxy-to-plone.conf! 37 </VirtualHost>! 38 ! 39 <VirtualHost *:443>! 40 Include /etc/weblion-apache-config/servername.conf! 41 Include /etc/weblion-apache-config/serveradmin.conf! 42 Include /etc/weblion-apache-config/log.conf! 43 ! 44 Include /etc/weblion-apache-config/enable-ssl.conf! 45 Include /etc/weblion-apache-config/ssl-certificate-files.conf! 46 ! 47 ! # Require authN for SSL access to the Plone site:! 48 ! <Location />! 49 ! Include /usr/share/weblion-apache-config/config-snippets/public/require-cosign-auth.conf! 50 ! Include /etc/weblion-apache-config/cosign-host-parameters.conf! 51 ! </Location>! 52 ! ! 53 Include /usr/share/weblion-apache-config/config-snippets/public/prepare-to-proxy-https.conf! 54 ! 55 # Most of your custom configuration, including rewrites, should go in this! 56 # file and in before-proxy-to-plone.conf, above:! 57 Include /etc/weblion-apache-config/before-proxy-to-plone-https.conf! 58 ! 59 Include /etc/weblion-apache-config/proxy-to-plone-https.conf! 60 </VirtualHost>!
  • 64. Updation O(1) for the fun of it Update the package repository
  • 65. Updation O(1) for the fun of it Update the package repository Visit each machine
  • 66. Updation O(1) for the fun of it Update the package repository Visit each machine Spin the chamber with buildout
  • 67. Updation O(1) for the fun of it Update the package repository Visit each machine Spin the chamber with buildout Go home
  • 68.
  • 69.
  • 70.
  • 75. Release Process Distributions etch-unstable etch-testing etch lenny-unstable
  • 76. Release Process Distributions etch-unstable etch-testing etch lenny-unstable lenny-testing
  • 77. Release Process Distributions etch-unstable etch-testing etch lenny-unstable lenny-testing lenny
  • 79. Release Process Project Management http://weblion.psu.edu/wiki/WebLionHosting
  • 83. Try it Hardware options Dedicated Homegrown virtualization
  • 84. Try it Hardware options Dedicated Homegrown virtualization EC2
  • 85. Try it Hardware options Dedicated Homegrown virtualization EC2 Toasters
  • 86. Try it I’m so rone-ry Details: http://weblion.psu.edu/wiki/BootstrapServers
  • 87. Try it I’m so rone-ry 1. echo quot;deb http://deb.weblion.psu.edu/debian etch main non-free contribquot; >> /etc/apt/sources.list Details: http://weblion.psu.edu/wiki/BootstrapServers
  • 88. Try it I’m so rone-ry 1. echo quot;deb http://deb.weblion.psu.edu/debian etch main non-free contribquot; >> /etc/apt/sources.list 2. aptitude update Details: http://weblion.psu.edu/wiki/BootstrapServers
  • 89. Try it I’m so rone-ry 1. echo quot;deb http://deb.weblion.psu.edu/debian etch main non-free contribquot; >> /etc/apt/sources.list 2. aptitude update 3. aptitude install --without-recommends -y weblion-hosting-vmware-node weblion-auto-update weblion-plone-3.1-stack Details: http://weblion.psu.edu/wiki/BootstrapServers
  • 92. Future Newer Plones Factor out Penn-State–specific stuff
  • 93. Future Newer Plones Factor out Penn-State–specific stuff Monitor Zope
  • 94. Future Newer Plones Factor out Penn-State–specific stuff Monitor Zope
  • 95. Try WebLion Hosting http://weblion.psu.edu/wiki/ BootstrapServers ErikRose@psu.edu #weblion on irc.freenode.net
  • 96. Try WebLion Hosting http://weblion.psu.edu/wiki/ BootstrapServers ErikRose@psu.edu #weblion on irc.freenode.net

Hinweis der Redaktion

  1. (Don&#x2019;t say anything; this is just a splash slide.) You can think of WL Hosting as&#x2026;
  2. a Plone hosting appliance came out of 2 realizations: lots more to a Plone deployment than Zope & Plone. \\ Python, Apache, Squid, cron jobs for DB maint & backups, SNMP for remote monitoring, &#x2026;. Then kernel, libs, etc. 2nd thing: I realized there&#x2019;s a strangeness in WebLion&#x2019;s business model&#x2026;
  3. clients vs. partners: don&#x2019;t do stuff for them (except multi-dept usefulnesses) \\ advantages: scalability, distribution of knowledge across the organization, keeping our own team lean and agile. Didn&#x2019;t realize: Plone apparently hard to sysadmin
  4. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  5. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  6. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  7. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  8. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  9. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  10. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  11. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  12. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  13. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  14. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  15. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  16. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  17. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  18. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  19. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  20. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  21. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  22. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  23. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  24. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  25. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  26. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  27. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  28. started w/just a few partner departments \\ teach individually how to set up production-worthy Plone stack \\ wiki multipled our efforts \\ {CentOS, Ubuntu, Solaris, Red Hat}, strange problems w/SELinux, slight differences take all day to figure out However, as we accumulated more and more partners, this didn&#x2019;t scale. We don&#x2019;t have any dedicated sysadmins on the team, and I was spending a huge chunk of my time teaching and debugging people&#x2019;s setups and not enough coding. I&#x2019;m really a programmer, after all, and only a sysadmin by necessity. So, bringing a programmer&#x2019;s point of view to the problem, I thought &#x201C;How I do all this stuff once instead of repeating it for every partner?&#x201D; It was evident we&#x2019;d have to change our don&#x2019;t-do-anything business model, but how to do it? Well, in an ideal world, everybody&#x2019;d have&#x2026;
  29. &#x2026;cookie cutter sites \\ few enormous servers \\ sharing Zope instances (same Products) But that ain&#x2019;t gonna happen. They&#x2019;re gonna need different&#x2026; 1 2 (and versions of products) 3 4 5. So the question became not &#x201C;How do we build a gigantic megaserver that can take care of everybody?&#x201D; but &#x201C;How do we deploy a bunch of similar-but-not-identical servers&#x201D;
  30. &#x2026;cookie cutter sites \\ few enormous servers \\ sharing Zope instances (same Products) But that ain&#x2019;t gonna happen. They&#x2019;re gonna need different&#x2026; 1 2 (and versions of products) 3 4 5. So the question became not &#x201C;How do we build a gigantic megaserver that can take care of everybody?&#x201D; but &#x201C;How do we deploy a bunch of similar-but-not-identical servers&#x201D;
  31. &#x2026;cookie cutter sites \\ few enormous servers \\ sharing Zope instances (same Products) But that ain&#x2019;t gonna happen. They&#x2019;re gonna need different&#x2026; 1 2 (and versions of products) 3 4 5. So the question became not &#x201C;How do we build a gigantic megaserver that can take care of everybody?&#x201D; but &#x201C;How do we deploy a bunch of similar-but-not-identical servers&#x201D;
  32. &#x2026;cookie cutter sites \\ few enormous servers \\ sharing Zope instances (same Products) But that ain&#x2019;t gonna happen. They&#x2019;re gonna need different&#x2026; 1 2 (and versions of products) 3 4 5. So the question became not &#x201C;How do we build a gigantic megaserver that can take care of everybody?&#x201D; but &#x201C;How do we deploy a bunch of similar-but-not-identical servers&#x201D;
  33. &#x2026;cookie cutter sites \\ few enormous servers \\ sharing Zope instances (same Products) But that ain&#x2019;t gonna happen. They&#x2019;re gonna need different&#x2026; 1 2 (and versions of products) 3 4 5. So the question became not &#x201C;How do we build a gigantic megaserver that can take care of everybody?&#x201D; but &#x201C;How do we deploy a bunch of similar-but-not-identical servers&#x201D;
  34. &#x2026;cookie cutter sites \\ few enormous servers \\ sharing Zope instances (same Products) But that ain&#x2019;t gonna happen. They&#x2019;re gonna need different&#x2026; 1 2 (and versions of products) 3 4 5. So the question became not &#x201C;How do we build a gigantic megaserver that can take care of everybody?&#x201D; but &#x201C;How do we deploy a bunch of similar-but-not-identical servers&#x201D;
  35. &#x2026;cookie cutter sites \\ few enormous servers \\ sharing Zope instances (same Products) But that ain&#x2019;t gonna happen. They&#x2019;re gonna need different&#x2026; 1 2 (and versions of products) 3 4 5. So the question became not &#x201C;How do we build a gigantic megaserver that can take care of everybody?&#x201D; but &#x201C;How do we deploy a bunch of similar-but-not-identical servers&#x201D;
  36. Gets the stuff on there. Upgrades?
  37. Puppet & cfengine definitely contenders \\ couple things I didn&#x2019;t like Command-&-control philosophy. assume every machine updates in lockstep: cluster-oriented. \\ I want the option of telling control freak sysadmins &#x201C;Sure, you can use our stuff. Just set up your own box, and hit &#x2018;update&#x2019; manually when you see fit.&#x201D; without running into situations where a config file assumes a certain version of the software and is surprised. Cross-OS abstraction: major feature: manage Windows & UNIXes & Mac from 1 conf file \\ invent own language \\ we&#x2019;ll pick 1 OS \\ Don&#x2019;t need cross-OS abstraction. \\ Don&#x2019;t pay for another language in learning time. \\ Want people to hack on this system as easily as possible. Non-concurrent: updates to config not synced with updates to the software it configures, which could conceivably cause problems, for example if a new version of a package changes the meaning of a config directive.
  38. Puppet & cfengine definitely contenders \\ couple things I didn&#x2019;t like Command-&-control philosophy. assume every machine updates in lockstep: cluster-oriented. \\ I want the option of telling control freak sysadmins &#x201C;Sure, you can use our stuff. Just set up your own box, and hit &#x2018;update&#x2019; manually when you see fit.&#x201D; without running into situations where a config file assumes a certain version of the software and is surprised. Cross-OS abstraction: major feature: manage Windows & UNIXes & Mac from 1 conf file \\ invent own language \\ we&#x2019;ll pick 1 OS \\ Don&#x2019;t need cross-OS abstraction. \\ Don&#x2019;t pay for another language in learning time. \\ Want people to hack on this system as easily as possible. Non-concurrent: updates to config not synced with updates to the software it configures, which could conceivably cause problems, for example if a new version of a package changes the meaning of a config directive.
  39. Puppet & cfengine definitely contenders \\ couple things I didn&#x2019;t like Command-&-control philosophy. assume every machine updates in lockstep: cluster-oriented. \\ I want the option of telling control freak sysadmins &#x201C;Sure, you can use our stuff. Just set up your own box, and hit &#x2018;update&#x2019; manually when you see fit.&#x201D; without running into situations where a config file assumes a certain version of the software and is surprised. Cross-OS abstraction: major feature: manage Windows & UNIXes & Mac from 1 conf file \\ invent own language \\ we&#x2019;ll pick 1 OS \\ Don&#x2019;t need cross-OS abstraction. \\ Don&#x2019;t pay for another language in learning time. \\ Want people to hack on this system as easily as possible. Non-concurrent: updates to config not synced with updates to the software it configures, which could conceivably cause problems, for example if a new version of a package changes the meaning of a config directive.
  40. Puppet & cfengine definitely contenders \\ couple things I didn&#x2019;t like Command-&-control philosophy. assume every machine updates in lockstep: cluster-oriented. \\ I want the option of telling control freak sysadmins &#x201C;Sure, you can use our stuff. Just set up your own box, and hit &#x2018;update&#x2019; manually when you see fit.&#x201D; without running into situations where a config file assumes a certain version of the software and is surprised. Cross-OS abstraction: major feature: manage Windows & UNIXes & Mac from 1 conf file \\ invent own language \\ we&#x2019;ll pick 1 OS \\ Don&#x2019;t need cross-OS abstraction. \\ Don&#x2019;t pay for another language in learning time. \\ Want people to hack on this system as easily as possible. Non-concurrent: updates to config not synced with updates to the software it configures, which could conceivably cause problems, for example if a new version of a package changes the meaning of a config directive.
  41. Considered buildout. Popular in Plone because Jim Fulton (Zope fame) wrote it. For building and configuring Zope instances. But people extended to build & config Apache, Squid, Varnish, cron jobs. buildout&#x2019;s a fine development tool. I use it myself all the time. But it doesn&#x2019;t work in my mass-deployment situation. Redoes existing work. There are already excellent packages of these, QA&#x2019;d by thousands of Debian users. And wherever you stop, you&#x2019;re going to have some kind of dependency impedence mismatch&#x2014;are you going to repackage the kernel? At least 3 network points of failure for a default Plone buildout. About half a dozen times a week, I rescue some poor user who can&#x2019;t run buildout because PyPI is down, plone.org is down, zope.org is down, or PSC is broken. You can mirror it all yourself, but geez. On failure, breaks the site. If any of the above&#x2014;or any other kind of error&#x2014;happens after buildout&#x2019;s begun to change things, there&#x2019;s no turning back. You can&#x2019;t let local admins write to buildout.cfg, because they can make it run arbitrary, crashing code during nightly unattended updates. Package QA is lacking. There&#x2019;s no vetting process for putting up new versions either; all the QA is the developer&#x2019;s responsibility. Martin Aspeli recognizes this problem, saying &#x201C;publishing known good sets of versions is quite painful&#x201D;. (Ironically, he solved this problem by introducing yet another network service, good-py, which went down several days later.) Not truly repeatable. Seen people put up new versions on PyPI with the same version numbers as old. So even if you pin your versions, you&#x2019;re hosed. So buildout wasn&#x2019;t really suitable for unattended deployment. But what about&#x2026;
  42. Considered buildout. Popular in Plone because Jim Fulton (Zope fame) wrote it. For building and configuring Zope instances. But people extended to build & config Apache, Squid, Varnish, cron jobs. buildout&#x2019;s a fine development tool. I use it myself all the time. But it doesn&#x2019;t work in my mass-deployment situation. Redoes existing work. There are already excellent packages of these, QA&#x2019;d by thousands of Debian users. And wherever you stop, you&#x2019;re going to have some kind of dependency impedence mismatch&#x2014;are you going to repackage the kernel? At least 3 network points of failure for a default Plone buildout. About half a dozen times a week, I rescue some poor user who can&#x2019;t run buildout because PyPI is down, plone.org is down, zope.org is down, or PSC is broken. You can mirror it all yourself, but geez. On failure, breaks the site. If any of the above&#x2014;or any other kind of error&#x2014;happens after buildout&#x2019;s begun to change things, there&#x2019;s no turning back. You can&#x2019;t let local admins write to buildout.cfg, because they can make it run arbitrary, crashing code during nightly unattended updates. Package QA is lacking. There&#x2019;s no vetting process for putting up new versions either; all the QA is the developer&#x2019;s responsibility. Martin Aspeli recognizes this problem, saying &#x201C;publishing known good sets of versions is quite painful&#x201D;. (Ironically, he solved this problem by introducing yet another network service, good-py, which went down several days later.) Not truly repeatable. Seen people put up new versions on PyPI with the same version numbers as old. So even if you pin your versions, you&#x2019;re hosed. So buildout wasn&#x2019;t really suitable for unattended deployment. But what about&#x2026;
  43. Considered buildout. Popular in Plone because Jim Fulton (Zope fame) wrote it. For building and configuring Zope instances. But people extended to build & config Apache, Squid, Varnish, cron jobs. buildout&#x2019;s a fine development tool. I use it myself all the time. But it doesn&#x2019;t work in my mass-deployment situation. Redoes existing work. There are already excellent packages of these, QA&#x2019;d by thousands of Debian users. And wherever you stop, you&#x2019;re going to have some kind of dependency impedence mismatch&#x2014;are you going to repackage the kernel? At least 3 network points of failure for a default Plone buildout. About half a dozen times a week, I rescue some poor user who can&#x2019;t run buildout because PyPI is down, plone.org is down, zope.org is down, or PSC is broken. You can mirror it all yourself, but geez. On failure, breaks the site. If any of the above&#x2014;or any other kind of error&#x2014;happens after buildout&#x2019;s begun to change things, there&#x2019;s no turning back. You can&#x2019;t let local admins write to buildout.cfg, because they can make it run arbitrary, crashing code during nightly unattended updates. Package QA is lacking. There&#x2019;s no vetting process for putting up new versions either; all the QA is the developer&#x2019;s responsibility. Martin Aspeli recognizes this problem, saying &#x201C;publishing known good sets of versions is quite painful&#x201D;. (Ironically, he solved this problem by introducing yet another network service, good-py, which went down several days later.) Not truly repeatable. Seen people put up new versions on PyPI with the same version numbers as old. So even if you pin your versions, you&#x2019;re hosed. So buildout wasn&#x2019;t really suitable for unattended deployment. But what about&#x2026;
  44. Considered buildout. Popular in Plone because Jim Fulton (Zope fame) wrote it. For building and configuring Zope instances. But people extended to build & config Apache, Squid, Varnish, cron jobs. buildout&#x2019;s a fine development tool. I use it myself all the time. But it doesn&#x2019;t work in my mass-deployment situation. Redoes existing work. There are already excellent packages of these, QA&#x2019;d by thousands of Debian users. And wherever you stop, you&#x2019;re going to have some kind of dependency impedence mismatch&#x2014;are you going to repackage the kernel? At least 3 network points of failure for a default Plone buildout. About half a dozen times a week, I rescue some poor user who can&#x2019;t run buildout because PyPI is down, plone.org is down, zope.org is down, or PSC is broken. You can mirror it all yourself, but geez. On failure, breaks the site. If any of the above&#x2014;or any other kind of error&#x2014;happens after buildout&#x2019;s begun to change things, there&#x2019;s no turning back. You can&#x2019;t let local admins write to buildout.cfg, because they can make it run arbitrary, crashing code during nightly unattended updates. Package QA is lacking. There&#x2019;s no vetting process for putting up new versions either; all the QA is the developer&#x2019;s responsibility. Martin Aspeli recognizes this problem, saying &#x201C;publishing known good sets of versions is quite painful&#x201D;. (Ironically, he solved this problem by introducing yet another network service, good-py, which went down several days later.) Not truly repeatable. Seen people put up new versions on PyPI with the same version numbers as old. So even if you pin your versions, you&#x2019;re hosed. So buildout wasn&#x2019;t really suitable for unattended deployment. But what about&#x2026;
  45. Considered buildout. Popular in Plone because Jim Fulton (Zope fame) wrote it. For building and configuring Zope instances. But people extended to build & config Apache, Squid, Varnish, cron jobs. buildout&#x2019;s a fine development tool. I use it myself all the time. But it doesn&#x2019;t work in my mass-deployment situation. Redoes existing work. There are already excellent packages of these, QA&#x2019;d by thousands of Debian users. And wherever you stop, you&#x2019;re going to have some kind of dependency impedence mismatch&#x2014;are you going to repackage the kernel? At least 3 network points of failure for a default Plone buildout. About half a dozen times a week, I rescue some poor user who can&#x2019;t run buildout because PyPI is down, plone.org is down, zope.org is down, or PSC is broken. You can mirror it all yourself, but geez. On failure, breaks the site. If any of the above&#x2014;or any other kind of error&#x2014;happens after buildout&#x2019;s begun to change things, there&#x2019;s no turning back. You can&#x2019;t let local admins write to buildout.cfg, because they can make it run arbitrary, crashing code during nightly unattended updates. Package QA is lacking. There&#x2019;s no vetting process for putting up new versions either; all the QA is the developer&#x2019;s responsibility. Martin Aspeli recognizes this problem, saying &#x201C;publishing known good sets of versions is quite painful&#x201D;. (Ironically, he solved this problem by introducing yet another network service, good-py, which went down several days later.) Not truly repeatable. Seen people put up new versions on PyPI with the same version numbers as old. So even if you pin your versions, you&#x2019;re hosed. So buildout wasn&#x2019;t really suitable for unattended deployment. But what about&#x2026;
  46. Considered buildout. Popular in Plone because Jim Fulton (Zope fame) wrote it. For building and configuring Zope instances. But people extended to build & config Apache, Squid, Varnish, cron jobs. buildout&#x2019;s a fine development tool. I use it myself all the time. But it doesn&#x2019;t work in my mass-deployment situation. Redoes existing work. There are already excellent packages of these, QA&#x2019;d by thousands of Debian users. And wherever you stop, you&#x2019;re going to have some kind of dependency impedence mismatch&#x2014;are you going to repackage the kernel? At least 3 network points of failure for a default Plone buildout. About half a dozen times a week, I rescue some poor user who can&#x2019;t run buildout because PyPI is down, plone.org is down, zope.org is down, or PSC is broken. You can mirror it all yourself, but geez. On failure, breaks the site. If any of the above&#x2014;or any other kind of error&#x2014;happens after buildout&#x2019;s begun to change things, there&#x2019;s no turning back. You can&#x2019;t let local admins write to buildout.cfg, because they can make it run arbitrary, crashing code during nightly unattended updates. Package QA is lacking. There&#x2019;s no vetting process for putting up new versions either; all the QA is the developer&#x2019;s responsibility. Martin Aspeli recognizes this problem, saying &#x201C;publishing known good sets of versions is quite painful&#x201D;. (Ironically, he solved this problem by introducing yet another network service, good-py, which went down several days later.) Not truly repeatable. Seen people put up new versions on PyPI with the same version numbers as old. So even if you pin your versions, you&#x2019;re hosed. So buildout wasn&#x2019;t really suitable for unattended deployment. But what about&#x2026;
  47. Considered buildout. Popular in Plone because Jim Fulton (Zope fame) wrote it. For building and configuring Zope instances. But people extended to build & config Apache, Squid, Varnish, cron jobs. buildout&#x2019;s a fine development tool. I use it myself all the time. But it doesn&#x2019;t work in my mass-deployment situation. Redoes existing work. There are already excellent packages of these, QA&#x2019;d by thousands of Debian users. And wherever you stop, you&#x2019;re going to have some kind of dependency impedence mismatch&#x2014;are you going to repackage the kernel? At least 3 network points of failure for a default Plone buildout. About half a dozen times a week, I rescue some poor user who can&#x2019;t run buildout because PyPI is down, plone.org is down, zope.org is down, or PSC is broken. You can mirror it all yourself, but geez. On failure, breaks the site. If any of the above&#x2014;or any other kind of error&#x2014;happens after buildout&#x2019;s begun to change things, there&#x2019;s no turning back. You can&#x2019;t let local admins write to buildout.cfg, because they can make it run arbitrary, crashing code during nightly unattended updates. Package QA is lacking. There&#x2019;s no vetting process for putting up new versions either; all the QA is the developer&#x2019;s responsibility. Martin Aspeli recognizes this problem, saying &#x201C;publishing known good sets of versions is quite painful&#x201D;. (Ironically, he solved this problem by introducing yet another network service, good-py, which went down several days later.) Not truly repeatable. Seen people put up new versions on PyPI with the same version numbers as old. So even if you pin your versions, you&#x2019;re hosed. So buildout wasn&#x2019;t really suitable for unattended deployment. But what about&#x2026;
  48. &#x2026;Debian packages? We need them anyway to manage the kernel, libraries, and basic services. Unbeatable QA. Just outrageous. Debian has 3 QA tiers: unstable, testing, stable. Immediate, 10 days, once every year and a half. We run stable. Actually, we&#x2019;re one behind, but we still get another year of full security support. Nearly atomic. High-level stuff like Apache gets updated at darn close to the same time as low-level stuff like the libraries it depends on, making for fewer states. And fewer states means fewer unexpected behaviors. Tolerance of local changes. APT has been around since 1998 and is very mature. It has this sophisticated framework for tolerating local config changes during upgrades. No paving \\ asks Reliable. Downloads everything before changing anything. If something&#x2019;s unreachable, the stuff that depends on it doesn&#x2019;t happen. And if anything unexpected happens during installation&#x2026;
  49. &#x2026;Debian packages? We need them anyway to manage the kernel, libraries, and basic services. Unbeatable QA. Just outrageous. Debian has 3 QA tiers: unstable, testing, stable. Immediate, 10 days, once every year and a half. We run stable. Actually, we&#x2019;re one behind, but we still get another year of full security support. Nearly atomic. High-level stuff like Apache gets updated at darn close to the same time as low-level stuff like the libraries it depends on, making for fewer states. And fewer states means fewer unexpected behaviors. Tolerance of local changes. APT has been around since 1998 and is very mature. It has this sophisticated framework for tolerating local config changes during upgrades. No paving \\ asks Reliable. Downloads everything before changing anything. If something&#x2019;s unreachable, the stuff that depends on it doesn&#x2019;t happen. And if anything unexpected happens during installation&#x2026;
  50. &#x2026;Debian packages? We need them anyway to manage the kernel, libraries, and basic services. Unbeatable QA. Just outrageous. Debian has 3 QA tiers: unstable, testing, stable. Immediate, 10 days, once every year and a half. We run stable. Actually, we&#x2019;re one behind, but we still get another year of full security support. Nearly atomic. High-level stuff like Apache gets updated at darn close to the same time as low-level stuff like the libraries it depends on, making for fewer states. And fewer states means fewer unexpected behaviors. Tolerance of local changes. APT has been around since 1998 and is very mature. It has this sophisticated framework for tolerating local config changes during upgrades. No paving \\ asks Reliable. Downloads everything before changing anything. If something&#x2019;s unreachable, the stuff that depends on it doesn&#x2019;t happen. And if anything unexpected happens during installation&#x2026;
  51. &#x2026;Debian packages? We need them anyway to manage the kernel, libraries, and basic services. Unbeatable QA. Just outrageous. Debian has 3 QA tiers: unstable, testing, stable. Immediate, 10 days, once every year and a half. We run stable. Actually, we&#x2019;re one behind, but we still get another year of full security support. Nearly atomic. High-level stuff like Apache gets updated at darn close to the same time as low-level stuff like the libraries it depends on, making for fewer states. And fewer states means fewer unexpected behaviors. Tolerance of local changes. APT has been around since 1998 and is very mature. It has this sophisticated framework for tolerating local config changes during upgrades. No paving \\ asks Reliable. Downloads everything before changing anything. If something&#x2019;s unreachable, the stuff that depends on it doesn&#x2019;t happen. And if anything unexpected happens during installation&#x2026;
  52. &#x2026;Debian packages? We need them anyway to manage the kernel, libraries, and basic services. Unbeatable QA. Just outrageous. Debian has 3 QA tiers: unstable, testing, stable. Immediate, 10 days, once every year and a half. We run stable. Actually, we&#x2019;re one behind, but we still get another year of full security support. Nearly atomic. High-level stuff like Apache gets updated at darn close to the same time as low-level stuff like the libraries it depends on, making for fewer states. And fewer states means fewer unexpected behaviors. Tolerance of local changes. APT has been around since 1998 and is very mature. It has this sophisticated framework for tolerating local config changes during upgrades. No paving \\ asks Reliable. Downloads everything before changing anything. If something&#x2019;s unreachable, the stuff that depends on it doesn&#x2019;t happen. And if anything unexpected happens during installation&#x2026;
  53. &#x2026;Debian packages? We need them anyway to manage the kernel, libraries, and basic services. Unbeatable QA. Just outrageous. Debian has 3 QA tiers: unstable, testing, stable. Immediate, 10 days, once every year and a half. We run stable. Actually, we&#x2019;re one behind, but we still get another year of full security support. Nearly atomic. High-level stuff like Apache gets updated at darn close to the same time as low-level stuff like the libraries it depends on, making for fewer states. And fewer states means fewer unexpected behaviors. Tolerance of local changes. APT has been around since 1998 and is very mature. It has this sophisticated framework for tolerating local config changes during upgrades. No paving \\ asks Reliable. Downloads everything before changing anything. If something&#x2019;s unreachable, the stuff that depends on it doesn&#x2019;t happen. And if anything unexpected happens during installation&#x2026;
  54. &#x2026;Debian packages? We need them anyway to manage the kernel, libraries, and basic services. Unbeatable QA. Just outrageous. Debian has 3 QA tiers: unstable, testing, stable. Immediate, 10 days, once every year and a half. We run stable. Actually, we&#x2019;re one behind, but we still get another year of full security support. Nearly atomic. High-level stuff like Apache gets updated at darn close to the same time as low-level stuff like the libraries it depends on, making for fewer states. And fewer states means fewer unexpected behaviors. Tolerance of local changes. APT has been around since 1998 and is very mature. It has this sophisticated framework for tolerating local config changes during upgrades. No paving \\ asks Reliable. Downloads everything before changing anything. If something&#x2019;s unreachable, the stuff that depends on it doesn&#x2019;t happen. And if anything unexpected happens during installation&#x2026;
  55. &#x2026;there are a whole bunch of bailout points that return things to a working state. This is a breakdown of how the APT system installs or upgrades a package. Each smiley face marks a point where something might go wrong, and there&#x2019;s a remediation step to return things to a working state. And it&#x2019;s not until way down here at this big red line that you&#x2019;re committed to the upgrade; it can roll back at any point before that. Imagine if buildout did this! Imagine how many fewer people we&#x2019;d have showing up in the #plone channel screaming about how it broke their install!
  56. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  57. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  58. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  59. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  60. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  61. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  62. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  63. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  64. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  65. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  66. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  67. So, we went with Debian packages \\ University mirror \\ Local repo for our own stuff \\ GPG signed \\ Bootstrapping: hosting-node: Everything that should be on every box \\ Kerberos, ssh, ntp, kernel upgrader, sudo, snmpd \\ Want something on all the boxes? Add it to this thing&#x2019;s dependencies. auto-update: Don&#x2019;t want it? Don&#x2019;t install it. Nightly automatics 4-5am. plone-3.1-stack: All the rest \\ Packaged Plone. center: &#x201C;config packages&#x201D; \\ shiny new way to package config using framework \\ Tim Abbott @ MIT massdeploy \\ I mean&#x2026; config-package-dev 0:20
  68. framework for building Debian packages that replace existing configuration safely \\ for example, override stock Squid conf \\ divert-and-symlink \\ supports local changes (but you give up auto updates) \\ even if you try to keep auto updates, unattended upgrade fails safe \\ Diverted file can then continue to receive upstream updates from Debian Stable so that, if we were to remove a config package, operations would resume with an up-to-date upstream config. \\ In Lenny at least. \\ dpkg bug before that. wanted common caretaking system for Plone, Apache, Squid; kernel, libraries\\ buildout power users worked toward but couldn&#x2019;t take the whole way \\ config-package-dev brings final piece Frankly, starting with Debian \\ already packages everything \\ adding Plone \\ easier than starting with buildout \\ packages Plone \\ trying to add everything else in the world.
  69. framework for building Debian packages that replace existing configuration safely \\ for example, override stock Squid conf \\ divert-and-symlink \\ supports local changes (but you give up auto updates) \\ even if you try to keep auto updates, unattended upgrade fails safe \\ Diverted file can then continue to receive upstream updates from Debian Stable so that, if we were to remove a config package, operations would resume with an up-to-date upstream config. \\ In Lenny at least. \\ dpkg bug before that. wanted common caretaking system for Plone, Apache, Squid; kernel, libraries\\ buildout power users worked toward but couldn&#x2019;t take the whole way \\ config-package-dev brings final piece Frankly, starting with Debian \\ already packages everything \\ adding Plone \\ easier than starting with buildout \\ packages Plone \\ trying to add everything else in the world.
  70. framework for building Debian packages that replace existing configuration safely \\ for example, override stock Squid conf \\ divert-and-symlink \\ supports local changes (but you give up auto updates) \\ even if you try to keep auto updates, unattended upgrade fails safe \\ Diverted file can then continue to receive upstream updates from Debian Stable so that, if we were to remove a config package, operations would resume with an up-to-date upstream config. \\ In Lenny at least. \\ dpkg bug before that. wanted common caretaking system for Plone, Apache, Squid; kernel, libraries\\ buildout power users worked toward but couldn&#x2019;t take the whole way \\ config-package-dev brings final piece Frankly, starting with Debian \\ already packages everything \\ adding Plone \\ easier than starting with buildout \\ packages Plone \\ trying to add everything else in the world.
  71. framework for building Debian packages that replace existing configuration safely \\ for example, override stock Squid conf \\ divert-and-symlink \\ supports local changes (but you give up auto updates) \\ even if you try to keep auto updates, unattended upgrade fails safe \\ Diverted file can then continue to receive upstream updates from Debian Stable so that, if we were to remove a config package, operations would resume with an up-to-date upstream config. \\ In Lenny at least. \\ dpkg bug before that. wanted common caretaking system for Plone, Apache, Squid; kernel, libraries\\ buildout power users worked toward but couldn&#x2019;t take the whole way \\ config-package-dev brings final piece Frankly, starting with Debian \\ already packages everything \\ adding Plone \\ easier than starting with buildout \\ packages Plone \\ trying to add everything else in the world.
  72. framework for building Debian packages that replace existing configuration safely \\ for example, override stock Squid conf \\ divert-and-symlink \\ supports local changes (but you give up auto updates) \\ even if you try to keep auto updates, unattended upgrade fails safe \\ Diverted file can then continue to receive upstream updates from Debian Stable so that, if we were to remove a config package, operations would resume with an up-to-date upstream config. \\ In Lenny at least. \\ dpkg bug before that. wanted common caretaking system for Plone, Apache, Squid; kernel, libraries\\ buildout power users worked toward but couldn&#x2019;t take the whole way \\ config-package-dev brings final piece Frankly, starting with Debian \\ already packages everything \\ adding Plone \\ easier than starting with buildout \\ packages Plone \\ trying to add everything else in the world.
  73. overview of what we use it for auto-update: screwing with cron-apt squid-config: one conf file to rule them all plone-site-config: listen on localhost, hook up to ZEO, restart leaky Zope, pack DB Not on this diagram: weblion-krb5-config weblion-snmpd-config weblion-ssh-server-config Crown jewel: apache-config
  74. Not cuz it uses config-package-dev fancily \\ fancy IOC framework \\ while Squid and zope.conf stay static, Apache is custom &#x201C;primary&#x201D; vhost \\ full of includes \\ fill out tiny conffiles included by the vhost \\ contracts \\ all made out of includes Example fixes so far: HTTP_REMOTE_USER hole, route auth&#x2019;d stuff through Squid. \\ pattern worked really well. recommend. additional vhosts \\ alias vhosts
  75. Not cuz it uses config-package-dev fancily \\ fancy IOC framework \\ while Squid and zope.conf stay static, Apache is custom &#x201C;primary&#x201D; vhost \\ full of includes \\ fill out tiny conffiles included by the vhost \\ contracts \\ all made out of includes Example fixes so far: HTTP_REMOTE_USER hole, route auth&#x2019;d stuff through Squid. \\ pattern worked really well. recommend. additional vhosts \\ alias vhosts
  76. Not cuz it uses config-package-dev fancily \\ fancy IOC framework \\ while Squid and zope.conf stay static, Apache is custom &#x201C;primary&#x201D; vhost \\ full of includes \\ fill out tiny conffiles included by the vhost \\ contracts \\ all made out of includes Example fixes so far: HTTP_REMOTE_USER hole, route auth&#x2019;d stuff through Squid. \\ pattern worked really well. recommend. additional vhosts \\ alias vhosts
  77. Not cuz it uses config-package-dev fancily \\ fancy IOC framework \\ while Squid and zope.conf stay static, Apache is custom &#x201C;primary&#x201D; vhost \\ full of includes \\ fill out tiny conffiles included by the vhost \\ contracts \\ all made out of includes Example fixes so far: HTTP_REMOTE_USER hole, route auth&#x2019;d stuff through Squid. \\ pattern worked really well. recommend. additional vhosts \\ alias vhosts
  78. and wait for Zenoss&#x2026;
  79. and wait for Zenoss&#x2026;
  80. and wait for Zenoss&#x2026;
  81. and wait for Zenoss&#x2026;
  82. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  83. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  84. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  85. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  86. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  87. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  88. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  89. &#x2026;which totally rocks as a monitoring and trend-graphing system, btw \\ to send you a mail screaming about how the servers are down \\ I swear, that thing has ponies everywhere.
  90. 3 dists on server \\ mirror Debian structure, except all Etch new stuff enters @ unstable after as much testing as possible \\ test for clean upgrade \\ move to testing \\ testing moves as whole to stable When we get to lenny \\ etch -> lenny-unstable \\ work its way up
  91. 3 dists on server \\ mirror Debian structure, except all Etch new stuff enters @ unstable after as much testing as possible \\ test for clean upgrade \\ move to testing \\ testing moves as whole to stable When we get to lenny \\ etch -> lenny-unstable \\ work its way up
  92. 3 dists on server \\ mirror Debian structure, except all Etch new stuff enters @ unstable after as much testing as possible \\ test for clean upgrade \\ move to testing \\ testing moves as whole to stable When we get to lenny \\ etch -> lenny-unstable \\ work its way up
  93. 3 dists on server \\ mirror Debian structure, except all Etch new stuff enters @ unstable after as much testing as possible \\ test for clean upgrade \\ move to testing \\ testing moves as whole to stable When we get to lenny \\ etch -> lenny-unstable \\ work its way up
  94. 3 dists on server \\ mirror Debian structure, except all Etch new stuff enters @ unstable after as much testing as possible \\ test for clean upgrade \\ move to testing \\ testing moves as whole to stable When we get to lenny \\ etch -> lenny-unstable \\ work its way up
  95. 3 dists on server \\ mirror Debian structure, except all Etch new stuff enters @ unstable after as much testing as possible \\ test for clean upgrade \\ move to testing \\ testing moves as whole to stable When we get to lenny \\ etch -> lenny-unstable \\ work its way up
  96. how we manage project: Trac \\ 1 milestone per release of stable