SlideShare a Scribd company logo
1 of 54
Plone in the Cloud
                               A CMS hosted on Amazon EC2

                                     Nate Aune (Jazkarta.com)
                                  European Plone Symposium 2009
                                          Sorrento, Italy
                                           May 13, 2009
Thursday, November 5, 2009                                        1
In the next 45 min...
                    • Amazon Web Services (AWS)
                    • AWS with Python
                    • Plone with AWS
                    • Tools for launching & remote deployment
                    • Challenges of using AWS
                    • Monitoring and maintaining EC2 instances
                    • Admin dashboard for creating new Plone sites
Thursday, November 5, 2009                                           2
What is
                  Amazon Web Services?



Thursday, November 5, 2009               3
What is Amazon Web Services?

                               • Suite of elastic IT
                                 infrastructure services
                               • Requisition computing
                                 power and storage
                               • Run any application
                                 you want on any OS



Thursday, November 5, 2009                                 4
Benefits of AWS

                    • Metered pricing (per hour / per GB)
                         •   no large up-front capital investments

                         •   only pay for what you use

                    • Scaleable hosting architecture
                    • Redundancy for high availability

Thursday, November 5, 2009                                           5
AWS Architecture

                    • EC2 = Elastic Computing Cloud
                    • S3 = Simple Storage Solution
                    • EBS = Elastic Block Storage
                    • Elastic IP = Static IP addresses

Thursday, November 5, 2009                               6
Elastic Computing Cloud (EC2)
                                    amazon.com/ec2


                    • Use an existing AMI (Amazon Machine Image)
                             to launch a new instance
                    • Or create your own AMIs (even paid ones)
                    • Attach EBS volumes to your EC2 instance


Thursday, November 5, 2009                                         7
Elastic Block Storage
                                  (EBS)




Thursday, November 5, 2009                       8
So how does Python
                           play into all this?


Thursday, November 5, 2009                       9
Enter Boto
Thursday, November 5, 2009                10
What is Boto?
                    • Python package that provides interfaces to
                             Amazon Web Services
                    • Thanks to author Mitch Garnaat!
                    • Boto supports:
                     • S3 via the REST API
                     • EC2 via the Query API
                     • and more...
Thursday, November 5, 2009                                         11
Install Boto & Bototools
           $ sudo easy_install boto

           $ svn co http://bototools.googlecode.com/svn/trunk/ bototools

           $ cd bototools

           $ sudo python setup.py install

           $ sudo python ./src/bototools/postinstall.py -p /usr/local/bin




         • This will put these commands in /usr/local/bin:
          • ec2start, ec2stop, ec2ip, ec2ls, ec2img
          • s3ls, s3rm, s3cp
Thursday, November 5, 2009                                                  12
Using Bototools

                    • Set these environment variables:
                     • AWS_ACCESS_KEY
                     • AWS_SECRET_ACCESS_KEY
                     • EC2_SSH_KEY
                    • Can also put in ~/.boto or /etc/boto.cfg

Thursday, November 5, 2009                                       13
Find an AMI

          • We will use the Ubuntu 8.10 Intrepid (32-bit)
                 from Alestic.com - ami-7cfd1a15
          • More can be found at:
                 http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=171




Thursday, November 5, 2009                                                                       14
Launch an instance
                  $ ec2start -a ami-7cfd1a15 -k gsg-keypair

                  Reservation:r-0f26a666

                  [Instance:i-8e3154e7]

                  $ ec2ls

                  Reservation r-0f26a666

                  i-8e3154e7 pending None 2009-03-25T01:49:24.000Z

                  ...wait...

                  $ ec2ls

                  Reservation r-0f26a666

                  i-8e3154e7 running None 2009-03-25T01:49:24.000Z
                  ec2-174-129-238-8.compute-1.amazonaws.com


Thursday, November 5, 2009                                           15
Associate a static IP
                       $ ec2ip -g

                       Address:174.129.238.8

                       $ ec2ip -l

                       174.129.238.8 ->

                       $ ec2ip -a 174.129.238.8 i-8e3154e7

                       True

                       $ ec2ip -l

                       174.129.238.8 -> i-8e3154e7


            • Note: once you assign a static IP, you won't be
                   able to access the machine using the original IP.
Thursday, November 5, 2009                                             16
Log in
        $ ec2ls

        Reservation r-0f26a666

        i-8e3154e7 running None 2009-03-25T01:49:24.000Z
        ec2-174-129-238-8.compute-1.amazonaws.com

        $ ssh -i ~/id_rsa-gsg-keypair root@ec2-174-129-238-8.compute-1.amazonaws.com

        Linux domU-12-31-39-00-E5-14 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686

        root@domU-12-31-39-00-E5-14:~#




        • Time to play!
Thursday, November 5, 2009                                                                        17
Stop the instance
                         $ ec2stop i-8e3154e7

                         Stopping ['i-8e3154e7']

                         $ ec2ls

                         Reservation r-0f26a666

                         i-8e3154e7 terminated None 2009-03-25T01:49:24.000Z




                        • Be sure to stop the instance or
                             you will be charged!

Thursday, November 5, 2009                                                     18
Use the AWS Console




Thursday, November 5, 2009                 19
Or use ElasticFox
               •       Firefox extension to start/stop EC2 instances, assign
                       IPs, associate EBS volumes and create keypairs.




      http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609&categoryID=88



Thursday, November 5, 2009                                                                     20
Case study
                             Plone on EC2




Thursday, November 5, 2009                  21
Why Plone on EC2?

                                          +

                             • Too few Zope hosting providers
                             • Avoid renting rackspace in co-lo
                             • Flexible and scalable architecture
                             • Complete control of servers
Thursday, November 5, 2009                                      22
What is PondCMS?
                                   PondCMS = Plone On Demand


                              • Hosted and supported version of Plone
                              • Eliminate the complexities of hosting
                              • Turnkey - automated and repeatable
                              • Bundled with certified add-ons
                             www.jazkarta.com/pondcms
Thursday, November 5, 2009                                              23
PondCMS Technology stack
                               HTTP proxy


                              Caching proxy


                              Load Balancer     0%1&2

                                PondCMS         *#"+
                                                ,-./+        +   add-ons




                                                *#"+
                             Web App Server     ,-./+




                             Operating System   *#"+
                                                ,-./+




                              Virtual Servers   !"#$%&!'()




Thursday, November 5, 2009                                                 24
One server deployment
                                                  Apache
                                                                 HTTP
                                                  (HTTP)




                                                  Varnish
                                                 (Caching)




                                                   Pound
                                              (Load balancing)




                                   1                2                         n
                             Zope Client #1   Zope Client #1            Zope Client #n




                                                Zeo Server




                                               Zeo Backup




Thursday, November 5, 2009                                                               25
Add Zeo clients as
                             demand increases




Thursday, November 5, 2009                        26
Multi server deployment
                                                        Website visitor



                                                                                 HTTP
                                                                                                                       Elastic Block Storage

                                                                  public IP: 72.44.50.237
                                                                          Apache
                                               Frontend server                                                             Apache logs
                                                                          Varnish
                                                                           Pound




                             Application Servers



                                         1                                   2                              n
                             zope-1.web.private:8222             zope-2.web.private:8222        zope-n.web.private:8222
                                  Zope client #1                      Zope client #2                 Zope client #n




                                                                                                                     Elastic Block Storage
                                                   Database server


                                                                  zeo-1.web.private:8221
                                                                       Zeo server #1                                          Data.fs




                                                                                                                             Data
                                                                                                          Data.fs Backup     files


                                                                                            Simple Storage Solution (S3)


Thursday, November 5, 2009                                                                                                                     27
Goal: automate everything
                       Scripts for repeatable deployment
               1. Bootstrap the server
               2. Install dependencies
               3. Install PondCMS (includes Plone + add-ons)
               4. Configure backups
               5. Create the Plone site and Apache vhosts


Thursday, November 5, 2009                                     28
1. Bootstrap server
               1. Create the EC2 instance
               2. Create an EBS volume
               3. Associate volume with EC2 instance
               4. Acquire IP address
               5. Associate IP with EC2 instance



Thursday, November 5, 2009                             29
2. Install dependencies
                1. Install packages with apt-get
                      • zope, python, varnish, apache2, pound, postfix
                2. Initialize EBS volume and mount as ext3 fs
                3. Store Apache log files on EBS volume
                4. Register server with Landscape
                5. Set up Pound to start automatically
                6. Set up Pound to point to Zeo clients

Thursday, November 5, 2009                                              30
3. Install PondCMS

                    1. Make a 'zope' user
                    2. Create a virtualenv
                    3. Make Zope data dirs on EBS volume
                    4. Download PondCMS tarball release (incl. Plone)
                    5. Install PondCMS into virtualenv


Thursday, November 5, 2009                                              31
4. Configure backups

                    • Configure logfile rotation
                    • Setup backup scripts (using repozo)
                    • Setup sync of backups to S3 (using Duplicity)
                    • Create cron jobs for backups (daily, weekly)

Thursday, November 5, 2009                                            32
5. Create Plone site & vhosts
            1. Use Fabric (remote deployment tool) to:
                 • Make Plone site incl. CacheFu setup
                 • Make vhost for accessing site on port 80

            2. Create rewrite rules for:
                 • domainname.com/supervisor (start/stop Zope)
                 • domainname.com/admin (ZMI access)

Thursday, November 5, 2009                                       33
What is Fabric?



Thursday, November 5, 2009                     34
What is Fabric?
                              http://www.nongnu.org/fab/




               • Simple remote deployment tool
               • Similar to Capistrano (Ruby on Rails)
               • Deploy applications to multiple similar hosts


Thursday, November 5, 2009                                       35
Setup site Fabric script
@require('host', 'site_id')

@fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename')

def createplonesite(host=None, user=None, key=None, site_id=None,

                              public_host=None):

         """Create a new plone site """

         if not site_id:

                  site_id = host

         installzcml(host=host, user=user, key=key, package='pondcms.basicapp')

         restart(host=host, user=user, key=key)

         put('createplonesite.py', '/tmp/createplonesite.py')

         s = SERVICE+'/bin/utility run /tmp/createplonesite.py -a
             pondcms.basicapp -s '+site_id

         if public_host:

                  s += ' --site-url='+public_host

         run(s)
Thursday, November 5, 2009                                                   36
Setup vhost Fabric script
       @require('host', 'vhost_name')
       @fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename')
       def setupvhost(host=None, user=None, key=None, vhost_name=None):
                """Setup an apache2 vhost"""
                site = VHOST_TEMPL % {'vhost_name': vhost_name}
                tmpfile = '/tmp/'+get('fab_timestamp')+'_vhost'
                f = open(tmpfile, 'w')
                f.write(site)
                f.close()
                targetf = vhost_name+'.conf'
                target = '/etc/apache2/sites-available/' + targetf
                put(tmpfile, target)
                run('a2ensite vhost_name')
                run('/etc/init.d/apache2 reload')


Thursday, November 5, 2009                                                 37
Running Fabric scripts
        $ cd fabric

        $ source bin/active

        (fabric)$ cd fabs/pondcms

        (fabric)$ fab
        createplonesite:host=test.pondcms.net,user=root,key=~/id_rsa-gsg-
        keypair,site_id=test.pondcms.net,public_host=http://
        test.pondcms.net

        ...

        (fabric)$ fab setupvhost:host=test.pondcms.net,user=root,key=~/
        id_rsa-gsg-keypair,vhost_name=test.pondcms.net




Thursday, November 5, 2009                                                  38
Challenges
                    • Persistent data must be stored on EBS
                    • Static IPs
                    • Mail sent from EC2 instances flagged as spam
                    • Monitoring and maintenance of VMs
                     • Landscape
                     • ZenOss
                     • Nagios
                     • Hyperic
Thursday, November 5, 2009                                          39
Thursday, November 5, 2009   40
AWS Status history




Thursday, November 5, 2009                        41
Landscape
                        monitoring / updates




                    • http://landscape.canonical.com
Thursday, November 5, 2009                             42
Landscape update pkgs




Thursday, November 5, 2009                 43
PondCMS v0.1- Dashboard


                    • JazOverseer



Thursday, November 5, 2009          44
PondCMS 1.0 (mockups)
                                                                                                                                           nate (logout) | Security Settings



                             Customers       EC2           Plone   Instance ID:      i-e3de598a                                      RUNNING
                                                                   Elastic IP:       75.101.161.152
                                                                   EBS:              vol-07ce2dfe                                     Supervisor
                        -         CMRLS                            S3 bucket:        cmrls.pondcms.net                                ZMI
                              +     staging.cmrls.org                                                                                 Landscape
                                                                       Refresh                   New EC2 instance
                                                                                                                                      SSH
                              +     production.cmrls.org
                                                                    EC2 Instances
                        -         Oxfam America
                                                                   Instance ID           State       Launch time                          Public DNS name
                              +     staging.oxfamamerica.org
                                                                    i-e3de598a           running         2009-01-08     ec2-75-101-161-152.compute-1.amazonaws.com
                              -     production.oxfamamerica.org     i-7d573e14           running         2009-01-08     ec2-75-174.129.208.compute-1.amazonaws.com

                                      www.oxfamamerica.org
                                      blog.oxfamamerica.org
                        -         Oxfam Canada
                        -         Harvard School of Engineering

                                                                       Refresh                     New Plone site

                         Customer: CMRLS                             Plone sites


                         Customer:         CMRLS                   Plone site                    Plone         PondCMS                        Custom eggs
                         Contact:          Rick Levine                ashbylibrary.net           3.1.7         0.4.1-20090505 (upgrade)                     Add egg

                         Phone:            (508) 555-1212             fobeslibrary.org           3.2.2         0.5.0-20090506                               Add egg
                         Email:            rick@cmrls.org             taftpubliclibrary.org      3.2.2         0.5.0-20090506                               Add egg

                        Package:           PondCMS Small
                        Start date:        01/01/2009
                        End date:          12/31/2009




Thursday, November 5, 2009                                                                                                                                                     45
Reports if Zope is down
                                                                                                                                           nate (logout) | Security Settings



                             Customers       EC2           Plone   Instance ID:      i-e3de598a                                      RUNNING NOT RUNNING
                                                                   Elastic IP:       75.101.161.152
                                                                   EBS:              vol-07ce2dfe                                     Supervisor
                        -         CMRLS                            S3 bucket:        cmrls.pondcms.net                                ZMI
                              +     staging.cmrls.org                                                                                 Landscape
                                                                       Refresh                   New EC2 instance
                                                                                                                                      SSH
                              +     production.cmrls.org
                                                                    EC2 Instances
                        -         Oxfam America
                                                                   Instance ID           State       Launch time                          Public DNS name
                              +     staging.oxfamamerica.org
                                                                    i-e3de598a           running         2009-01-08     ec2-75-101-161-152.compute-1.amazonaws.com
                              -     production.oxfamamerica.org     i-7d573e14           running         2009-01-08     ec2-75-174.129.208.compute-1.amazonaws.com

                                      www.oxfamamerica.org
                                      blog.oxfamamerica.org
                        -         Oxfam Canada
                        -         Harvard School of Engineering

                                                                       Refresh                     New Plone site

                         Customer: CMRLS                             Plone sites


                         Customer:         CMRLS                   Plone site                    Plone         PondCMS                        Custom eggs
                         Contact:          Rick Levine                ashbylibrary.net           3.1.7         0.4.1-20090505 (upgrade)                     Add egg

                         Phone:            (508) 555-1212             fobeslibrary.org           3.2.2         0.5.0-20090506                               Add egg
                         Email:            rick@cmrls.org             taftpubliclibrary.org      3.2.2         0.5.0-20090506                               Add egg

                        Package:           PondCMS Small
                        Start date:        01/01/2009
                        End date:          12/31/2009




Thursday, November 5, 2009                                                                                                                                                     46
Launch new EC2 instance
                                                                                                                                              nate (logout) | Security Settings



                             Customers       EC2           Plone       Instance ID:       i-e3de598a                                    RUNNING
                                                                       Elastic IP:        75.101.161.152
                                                                       EBS:               vol-07ce2dfe                                   Supervisor
                        -         CMRLS                                S3 bucket:         cmrls.pondcms.net                              ZMI
                              +     staging.cmrls.org                                                                          2         Landscape
                                                                            Refresh                 New EC2 instance
                                                                                                                                         SSH
                              +     production.cmrls.org
                                                                        EC2 Instances
                                                                   New EC2 Instance
                        -         Oxfam America
                                                                        Instance IDKeypair:
                                                                                       State             gsg-keypair
                                                                                                          Launch time                        Public DNS name
                              +     staging.oxfamamerica.org
                                                                        i-e3de598a            running       2009-01-08     ec2-75-101-161-152.compute-1.amazonaws.com
                                                                                   Elastic IP:              Assign a static IP?
                              -     production.oxfamamerica.org         i-7d573e14            running       2009-01-08     ec2-75-174.129.208.compute-1.amazonaws.com
                                                                         Instance type:                  - Small -
                                      www.oxfamamerica.org
                                      blog.oxfamamerica.org           Availability zone:                 - us-east-1 -

                        -         Oxfam Canada                                                            Launch instance
                        -         Harvard School of Engineering

                                                                            Refresh                     New Plone site

                         Customer: CMRLS                                 Plone sites


                         Customer:         CMRLS                        Plone site                  Plone         PondCMS                        Custom eggs
                         Contact:          Rick Levine                     ashbylibrary.net         3.1.7         0.4.1-20090505 (upgrade)                     Add egg

                         Phone:            (508) 555-1212                  fobeslibrary.org         3.2.2         0.5.0-20090506                               Add egg
                         Email:            rick@cmrls.org                  taftpubliclibrary.org    3.2.2         0.5.0-20090506                               Add egg

                        Package:           PondCMS Small
                        Start date:        01/01/2009
                        End date:          12/31/2009




Thursday, November 5, 2009                                                                                                                                                        47
Create new Plone site
                                                                                                                                                    nate (logout) | Security Settings



                             Customers       EC2           Plone             Instance ID:     i-e3de598a                                      RUNNING
                                                                             Elastic IP:      75.101.161.152
                                                              New Plone site EBS:             vol-07ce2dfe                              Supervisor
                        -         CMRLS                                      S3 bucket:       cmrls.pondcms.net                         ZMI
                                                                   Site title/host:
                              +     staging.cmrls.org                                                                                   Landscape
                                                                                Refresh This essentially maps to the "zope id" for the site which
                                                                                                   New EC2 instance
                                                                                                                                        SSH
                                                                                        should also match the public host name that will be used
                              +     production.cmrls.org                                    to access this Plone site.
                                                                            EC2 Instances
                        -         Oxfam America              Manager password:
                                                                            Instance ID           State       Launch time                          Public DNS name
                              +     staging.oxfamamerica.org                                Each Plone site gets initiated with a new manager
                                                                            i-e3de598a      account with user2009-01-08 This fields sets the
                                                                                               running        "ploneadmin".      ec2-75-101-161-152.compute-1.amazonaws.com
                                                                                            password for that account.
                              -     production.oxfamamerica.org             i-7d573e14            running         2009-01-08     ec2-75-174.129.208.compute-1.amazonaws.com

                                      www.oxfamamerica.org            Plone theme:             - Select One -                                                  (theme
                                                                                                                                                             thumbnail)
                                      blog.oxfamamerica.org
                        -         Oxfam Canada                                                    Create Plone site

                        -         Harvard School of Engineering

                                                                                                                                 3
                                                                                Refresh                     New Plone site

                         Customer: CMRLS                                      Plone sites


                         Customer:         CMRLS                            Plone site                    Plone         PondCMS                        Custom eggs
                         Contact:          Rick Levine                         ashbylibrary.net           3.1.7         0.4.1-20090505 (upgrade)                     Add egg

                         Phone:            (508) 555-1212                      fobeslibrary.org           3.2.2         0.5.0-20090506                               Add egg
                         Email:            rick@cmrls.org                      taftpubliclibrary.org      3.2.2         0.5.0-20090506                               Add egg

                        Package:           PondCMS Small
                        Start date:        01/01/2009
                        End date:          12/31/2009




Thursday, November 5, 2009                                                                                                                                                              48
Add eggs to Plone site
                                                                                                                                                   nate (logout) | Security Settings



                             Customers       EC2           Plone          Instance ID:      i-e3de598a                                       RUNNING
                                                                          Elastic IP:       75.101.161.152
                                                                          EBS:              vol-07ce2dfe                                      Supervisor
                        -         CMRLS                                   S3 bucket:        cmrls.pondcms.net                                 ZMI
                              +     staging.cmrls.org                                                                                         Landscape
                                                                               Refresh                   New EC2 instance
                                                                                                                                              SSH
                              +     production.cmrls.org
                                                                            EC2 Instances
                        -         Oxfam America
                                                                          Instance ID            State       Launch time                          Public DNS name
                              +     staging.oxfamamerica.org
                                                                            i-e3de598a           running         2009-01-08     ec2-75-101-161-152.compute-1.amazonaws.com
                              -     production.oxfamamerica.org             i-7d573e14           running         2009-01-08     ec2-75-174.129.208.compute-1.amazonaws.com

                                      www.oxfamamerica.org
                                      blog.oxfamamerica.org
                        -         Oxfam Canada                 Add eggs

                        -         Harvard School of Engineering
                                                             Available eggs                                      To install
                                                              PloneFlashUpload
                                                                           Refresh                            Ploneboard
                                                                                                           New Plone site
                                                                                                     >
                                                              ImageEditor
                         Customer: CMRLS                                     Plone sites
                                                              slideshowfolder                        <
                         Customer:         CMRLS              PloneFormGenPlone site                     Plone         PondCMS                        Custom eggs
                                                                                                                                                                              4
                         Contact:          Rick Levine                        ashbylibrary.net           3.1.7         0.4.1-20090505 (upgrade)                     Add egg

                         Phone:            (508) 555-1212     Egg URL:        fobeslibrary.org           3.2.2         0.5.0-20090506                               Add egg
                         Email:            rick@cmrls.org                   URL to an egg hosted on the cheeseshop.
                                                                             taftpubliclibrary.org 3.2.2 0.5.0-20090506                                             Add egg

                        Package:           PondCMS Small
                        Start date:        01/01/2009    Quickinstall:          Install the egg in the Plone site.
                        End date:          12/31/2009
                                                                                 Add eggs




Thursday, November 5, 2009                                                                                                                                                             49
Eucalyptus

                    • Build your own private cloud
                    • Compatible with Amazon EC2 API
                    • Included with Ubuntu 9.0.4 Server
                             http://www.ubuntu.com/products/whatisubuntu/serveredition/cloud/uec
                             http://open.eucalyptus.com/
                             https://help.ubuntu.com/community/Eucalyptus




Thursday, November 5, 2009                                                                         50
Thank you!
                                     Questions?

                                Follow me on Twitter:
                                       natea

                                    Or email me at:
                             natea (at) jazkarta (dot) com

Thursday, November 5, 2009                                   51
More info
            • Amazon EC2: http://amazon.com/ec2
            • Boto: http://code.google.com/p/boto
            • Bototools: http://code.google.com/p/bototools/
            • Fabric: http://www.nongnu.org/fabric
            • Fabulatr: http://code.google.com/p/fabulatr/
            • Plone: http://plone.org
            • PondCMS: http://jazkarta.com/pondcms
Thursday, November 5, 2009                                     52
Other resources
         • Ubuntu on EC2:
                http://groups.google.com/group/ec2ubuntu
         • Ubuntu AMIs: http://www.alestic.com
         • Beta program: http://www.ubuntu.com/ec2
         • Landscape: http://landscape.canonical.com
         • vm-builder-ec2:
                http://packages.ubuntu.com/intrepid-updates/utils/python-vm-builder-ec2


         • Enomaly's Elastic Computing Platform:
                http://src.enomaly.com/
Thursday, November 5, 2009                                                                53
Photo credits
   • http://www.flickr.com/photos/docman/66137352/
   • http://www.flickr.com/photos/thomashawk/126534906/
   • http://www.flickr.com/photos/moeview/498544386/
   • http://www.flickr.com/photos/shellysblogger/
          2464969383/
   • http://www.flickr.com/photos/mhw/56386662/
   • http://www.flickr.com/photos/mrtopf/1541527579/
Thursday, November 5, 2009                            54

More Related Content

What's hot

A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy Systemadrian_nye
 
Fast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserFast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserAndreas Bovens
 
How automated cloud infrastructure setups can help with Continuous Delivery
How automated cloud infrastructure setups can help with Continuous DeliveryHow automated cloud infrastructure setups can help with Continuous Delivery
How automated cloud infrastructure setups can help with Continuous DeliveryEdmund Siegfried Haselwanter
 
Travel with your mock server
Travel with your mock serverTravel with your mock server
Travel with your mock serverJorge Ortiz
 
Running Asterisk on virtualized environments
Running Asterisk on virtualized environmentsRunning Asterisk on virtualized environments
Running Asterisk on virtualized environmentsSaúl Ibarra Corretgé
 
Automated Deployment with Fabric
Automated Deployment with FabricAutomated Deployment with Fabric
Automated Deployment with Fabrictanihito
 
UNM Tech Day 2018 - Ansible: 
Server and Network Device Automation
UNM Tech Day 2018 - Ansible: 
Server and Network Device AutomationUNM Tech Day 2018 - Ansible: 
Server and Network Device Automation
UNM Tech Day 2018 - Ansible: 
Server and Network Device AutomationKlaus Mueller
 
Foreman presentation
Foreman presentationForeman presentation
Foreman presentationGlen Ogilvie
 
Microarmy - by J2 Labs
Microarmy - by J2 LabsMicroarmy - by J2 Labs
Microarmy - by J2 LabsJames Dennis
 
Spacebrew: The Overview
Spacebrew: The OverviewSpacebrew: The Overview
Spacebrew: The OverviewBrett Renfer
 
Testing Ansible with Jenkins and Docker
Testing Ansible with Jenkins and DockerTesting Ansible with Jenkins and Docker
Testing Ansible with Jenkins and DockerDennis Rowe
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby ConferenceJohn Woodell
 
Ansible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel AvivAnsible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel AvivAmazon Web Services
 
Kubernetes for HCL Connections Component Pack - Build or Buy?
Kubernetes for HCL Connections Component Pack - Build or Buy?Kubernetes for HCL Connections Component Pack - Build or Buy?
Kubernetes for HCL Connections Component Pack - Build or Buy?Martin Schmidt
 
Django Deployment with Fabric
Django Deployment with FabricDjango Deployment with Fabric
Django Deployment with FabricJonas Nockert
 
Capistrano, Puppet, and Chef
Capistrano, Puppet, and ChefCapistrano, Puppet, and Chef
Capistrano, Puppet, and ChefDavid Benjamin
 

What's hot (20)

A Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy SystemA Fabric/Puppet Build/Deploy System
A Fabric/Puppet Build/Deploy System
 
Fast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browserFast & Furious: Speed in the Opera browser
Fast & Furious: Speed in the Opera browser
 
How automated cloud infrastructure setups can help with Continuous Delivery
How automated cloud infrastructure setups can help with Continuous DeliveryHow automated cloud infrastructure setups can help with Continuous Delivery
How automated cloud infrastructure setups can help with Continuous Delivery
 
Infrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / PuppetInfrastructure as Code with Chef / Puppet
Infrastructure as Code with Chef / Puppet
 
London Hug 19/5 - Terraform in Production
London Hug 19/5 - Terraform in ProductionLondon Hug 19/5 - Terraform in Production
London Hug 19/5 - Terraform in Production
 
Travel with your mock server
Travel with your mock serverTravel with your mock server
Travel with your mock server
 
Running Asterisk on virtualized environments
Running Asterisk on virtualized environmentsRunning Asterisk on virtualized environments
Running Asterisk on virtualized environments
 
Automated Deployment with Fabric
Automated Deployment with FabricAutomated Deployment with Fabric
Automated Deployment with Fabric
 
Vagrant at LA Ruby
Vagrant at LA RubyVagrant at LA Ruby
Vagrant at LA Ruby
 
UNM Tech Day 2018 - Ansible: 
Server and Network Device Automation
UNM Tech Day 2018 - Ansible: 
Server and Network Device AutomationUNM Tech Day 2018 - Ansible: 
Server and Network Device Automation
UNM Tech Day 2018 - Ansible: 
Server and Network Device Automation
 
Foreman presentation
Foreman presentationForeman presentation
Foreman presentation
 
Microarmy - by J2 Labs
Microarmy - by J2 LabsMicroarmy - by J2 Labs
Microarmy - by J2 Labs
 
Spacebrew: The Overview
Spacebrew: The OverviewSpacebrew: The Overview
Spacebrew: The Overview
 
Testing Ansible with Jenkins and Docker
Testing Ansible with Jenkins and DockerTesting Ansible with Jenkins and Docker
Testing Ansible with Jenkins and Docker
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
 
Ansible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel AvivAnsible on aws - Pop-up Loft Tel Aviv
Ansible on aws - Pop-up Loft Tel Aviv
 
Kubernetes for HCL Connections Component Pack - Build or Buy?
Kubernetes for HCL Connections Component Pack - Build or Buy?Kubernetes for HCL Connections Component Pack - Build or Buy?
Kubernetes for HCL Connections Component Pack - Build or Buy?
 
Django Deployment with Fabric
Django Deployment with FabricDjango Deployment with Fabric
Django Deployment with Fabric
 
Capistrano, Puppet, and Chef
Capistrano, Puppet, and ChefCapistrano, Puppet, and Chef
Capistrano, Puppet, and Chef
 
Docker on a Diet
Docker on a DietDocker on a Diet
Docker on a Diet
 

Similar to Plone on Amazon EC2

One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009Philippe Gamache
 
Aloha on-rails-2009
Aloha on-rails-2009Aloha on-rails-2009
Aloha on-rails-2009John Woodell
 
How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...
How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...
How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...Amazon Web Services
 
Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Nate Murray
 
Comprehensive Monitoring for Docker
Comprehensive Monitoring for DockerComprehensive Monitoring for Docker
Comprehensive Monitoring for DockerChristian Beedgen
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsCameron Dutro
 
Lightning overview of creating custom AMIs
Lightning overview of creating custom AMIsLightning overview of creating custom AMIs
Lightning overview of creating custom AMIsunixorn
 
Ansible at work
Ansible at workAnsible at work
Ansible at workBas Meijer
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...
DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...
DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...DevSecCon
 
Next Generation Browser Add-Ons
Next Generation Browser Add-OnsNext Generation Browser Add-Ons
Next Generation Browser Add-OnsAnant Narayanan
 
AWS Lambda from the trenches
AWS Lambda from the trenchesAWS Lambda from the trenches
AWS Lambda from the trenchesYan Cui
 

Similar to Plone on Amazon EC2 (20)

One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009One hour application - PHP Quebec Conference 2009
One hour application - PHP Quebec Conference 2009
 
Don Schwarz App Engine Talk
Don Schwarz App Engine TalkDon Schwarz App Engine Talk
Don Schwarz App Engine Talk
 
Exceptable
ExceptableExceptable
Exceptable
 
Aloha on-rails-2009
Aloha on-rails-2009Aloha on-rails-2009
Aloha on-rails-2009
 
Rubypalooza 2009
Rubypalooza 2009Rubypalooza 2009
Rubypalooza 2009
 
How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...
How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...
How Parse Built a Mobile Backend as a Service on AWS (MBL307) | AWS re:Invent...
 
Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2Getting Started with PoolParty and EC2
Getting Started with PoolParty and EC2
 
Comprehensive Monitoring for Docker
Comprehensive Monitoring for DockerComprehensive Monitoring for Docker
Comprehensive Monitoring for Docker
 
Elasticwulf Pycon Talk
Elasticwulf Pycon TalkElasticwulf Pycon Talk
Elasticwulf Pycon Talk
 
Kuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails AppsKuby, ActiveDeployment for Rails Apps
Kuby, ActiveDeployment for Rails Apps
 
Lightning overview of creating custom AMIs
Lightning overview of creating custom AMIsLightning overview of creating custom AMIs
Lightning overview of creating custom AMIs
 
Debian on EC2
Debian on EC2Debian on EC2
Debian on EC2
 
Ansible at work
Ansible at workAnsible at work
Ansible at work
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...
DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...
DevSecCon Boston 2018: My rage quit journey: configuring Netflix tools by Sar...
 
Logging & Docker - Season 2
Logging & Docker - Season 2Logging & Docker - Season 2
Logging & Docker - Season 2
 
reBuy on Kubernetes
reBuy on KubernetesreBuy on Kubernetes
reBuy on Kubernetes
 
Next Generation Browser Add-Ons
Next Generation Browser Add-OnsNext Generation Browser Add-Ons
Next Generation Browser Add-Ons
 
AWS Lambda from the trenches
AWS Lambda from the trenchesAWS Lambda from the trenches
AWS Lambda from the trenches
 

More from Jazkarta, Inc.

Traveling through time and place with Plone
Traveling through time and place with PloneTraveling through time and place with Plone
Traveling through time and place with PloneJazkarta, Inc.
 
Questions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendQuestions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendJazkarta, Inc.
 
The User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondThe User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondJazkarta, Inc.
 
WTA and Plone After 13 Years
WTA and Plone After 13 YearsWTA and Plone After 13 Years
WTA and Plone After 13 YearsJazkarta, Inc.
 
Collaborating With Orchid Data
Collaborating With Orchid DataCollaborating With Orchid Data
Collaborating With Orchid DataJazkarta, Inc.
 
Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Jazkarta, Inc.
 
Plone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifePlone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifeJazkarta, Inc.
 
Accessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyAccessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyJazkarta, Inc.
 
Getting Paid Without GetPaid
Getting Paid Without GetPaidGetting Paid Without GetPaid
Getting Paid Without GetPaidJazkarta, Inc.
 
An Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchAn Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchJazkarta, Inc.
 
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...Jazkarta, Inc.
 
Anatomy of a Large Website Project
Anatomy of a Large Website ProjectAnatomy of a Large Website Project
Anatomy of a Large Website ProjectJazkarta, Inc.
 
Anatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesAnatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesJazkarta, Inc.
 
The Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneThe Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneJazkarta, Inc.
 
Academic Websites in Plone
Academic Websites in PloneAcademic Websites in Plone
Academic Websites in PloneJazkarta, Inc.
 
Online Exhibits in Plone
Online Exhibits in PloneOnline Exhibits in Plone
Online Exhibits in PloneJazkarta, Inc.
 
Online exhibits in Plone
Online exhibits in PloneOnline exhibits in Plone
Online exhibits in PloneJazkarta, Inc.
 

More from Jazkarta, Inc. (20)

Traveling through time and place with Plone
Traveling through time and place with PloneTraveling through time and place with Plone
Traveling through time and place with Plone
 
Questions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS FrontendQuestions: A Form Library for Python with SurveyJS Frontend
Questions: A Form Library for Python with SurveyJS Frontend
 
The User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and BeyondThe User Experience: Editing Composite Pages in Plone 6 and Beyond
The User Experience: Editing Composite Pages in Plone 6 and Beyond
 
WTA and Plone After 13 Years
WTA and Plone After 13 YearsWTA and Plone After 13 Years
WTA and Plone After 13 Years
 
Collaborating With Orchid Data
Collaborating With Orchid DataCollaborating With Orchid Data
Collaborating With Orchid Data
 
Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!Spend a Week Hacking in Sorrento!
Spend a Week Hacking in Sorrento!
 
Plone 5 Upgrades In Real Life
Plone 5 Upgrades In Real LifePlone 5 Upgrades In Real Life
Plone 5 Upgrades In Real Life
 
Accessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the UglyAccessibility in Plone: The Good, the Bad, and the Ugly
Accessibility in Plone: The Good, the Bad, and the Ugly
 
Getting Paid Without GetPaid
Getting Paid Without GetPaidGetting Paid Without GetPaid
Getting Paid Without GetPaid
 
An Open Source Platform for Social Science Research
An Open Source Platform for Social Science ResearchAn Open Source Platform for Social Science Research
An Open Source Platform for Social Science Research
 
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
For the Love of Volunteers! How Do You Choose the Right Technology to Manage ...
 
Anatomy of a Large Website Project
Anatomy of a Large Website ProjectAnatomy of a Large Website Project
Anatomy of a Large Website Project
 
Anatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter NotesAnatomy of a Large Website Project - With Presenter Notes
Anatomy of a Large Website Project - With Presenter Notes
 
The Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with PloneThe Mountaineers: Scaling the Heights with Plone
The Mountaineers: Scaling the Heights with Plone
 
Plone+Salesforce
Plone+SalesforcePlone+Salesforce
Plone+Salesforce
 
Academic Websites in Plone
Academic Websites in PloneAcademic Websites in Plone
Academic Websites in Plone
 
Plone
PlonePlone
Plone
 
Online Exhibits in Plone
Online Exhibits in PloneOnline Exhibits in Plone
Online Exhibits in Plone
 
Online exhibits in Plone
Online exhibits in PloneOnline exhibits in Plone
Online exhibits in Plone
 
ZODB Tips and Tricks
ZODB Tips and TricksZODB Tips and Tricks
ZODB Tips and Tricks
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
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
 
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
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
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
 
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
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 

Plone on Amazon EC2

  • 1. Plone in the Cloud A CMS hosted on Amazon EC2 Nate Aune (Jazkarta.com) European Plone Symposium 2009 Sorrento, Italy May 13, 2009 Thursday, November 5, 2009 1
  • 2. In the next 45 min... • Amazon Web Services (AWS) • AWS with Python • Plone with AWS • Tools for launching & remote deployment • Challenges of using AWS • Monitoring and maintaining EC2 instances • Admin dashboard for creating new Plone sites Thursday, November 5, 2009 2
  • 3. What is Amazon Web Services? Thursday, November 5, 2009 3
  • 4. What is Amazon Web Services? • Suite of elastic IT infrastructure services • Requisition computing power and storage • Run any application you want on any OS Thursday, November 5, 2009 4
  • 5. Benefits of AWS • Metered pricing (per hour / per GB) • no large up-front capital investments • only pay for what you use • Scaleable hosting architecture • Redundancy for high availability Thursday, November 5, 2009 5
  • 6. AWS Architecture • EC2 = Elastic Computing Cloud • S3 = Simple Storage Solution • EBS = Elastic Block Storage • Elastic IP = Static IP addresses Thursday, November 5, 2009 6
  • 7. Elastic Computing Cloud (EC2) amazon.com/ec2 • Use an existing AMI (Amazon Machine Image) to launch a new instance • Or create your own AMIs (even paid ones) • Attach EBS volumes to your EC2 instance Thursday, November 5, 2009 7
  • 8. Elastic Block Storage (EBS) Thursday, November 5, 2009 8
  • 9. So how does Python play into all this? Thursday, November 5, 2009 9
  • 11. What is Boto? • Python package that provides interfaces to Amazon Web Services • Thanks to author Mitch Garnaat! • Boto supports: • S3 via the REST API • EC2 via the Query API • and more... Thursday, November 5, 2009 11
  • 12. Install Boto & Bototools $ sudo easy_install boto $ svn co http://bototools.googlecode.com/svn/trunk/ bototools $ cd bototools $ sudo python setup.py install $ sudo python ./src/bototools/postinstall.py -p /usr/local/bin • This will put these commands in /usr/local/bin: • ec2start, ec2stop, ec2ip, ec2ls, ec2img • s3ls, s3rm, s3cp Thursday, November 5, 2009 12
  • 13. Using Bototools • Set these environment variables: • AWS_ACCESS_KEY • AWS_SECRET_ACCESS_KEY • EC2_SSH_KEY • Can also put in ~/.boto or /etc/boto.cfg Thursday, November 5, 2009 13
  • 14. Find an AMI • We will use the Ubuntu 8.10 Intrepid (32-bit) from Alestic.com - ami-7cfd1a15 • More can be found at: http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=171 Thursday, November 5, 2009 14
  • 15. Launch an instance $ ec2start -a ami-7cfd1a15 -k gsg-keypair Reservation:r-0f26a666 [Instance:i-8e3154e7] $ ec2ls Reservation r-0f26a666 i-8e3154e7 pending None 2009-03-25T01:49:24.000Z ...wait... $ ec2ls Reservation r-0f26a666 i-8e3154e7 running None 2009-03-25T01:49:24.000Z ec2-174-129-238-8.compute-1.amazonaws.com Thursday, November 5, 2009 15
  • 16. Associate a static IP $ ec2ip -g Address:174.129.238.8 $ ec2ip -l 174.129.238.8 -> $ ec2ip -a 174.129.238.8 i-8e3154e7 True $ ec2ip -l 174.129.238.8 -> i-8e3154e7 • Note: once you assign a static IP, you won't be able to access the machine using the original IP. Thursday, November 5, 2009 16
  • 17. Log in $ ec2ls Reservation r-0f26a666 i-8e3154e7 running None 2009-03-25T01:49:24.000Z ec2-174-129-238-8.compute-1.amazonaws.com $ ssh -i ~/id_rsa-gsg-keypair root@ec2-174-129-238-8.compute-1.amazonaws.com Linux domU-12-31-39-00-E5-14 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 root@domU-12-31-39-00-E5-14:~# • Time to play! Thursday, November 5, 2009 17
  • 18. Stop the instance $ ec2stop i-8e3154e7 Stopping ['i-8e3154e7'] $ ec2ls Reservation r-0f26a666 i-8e3154e7 terminated None 2009-03-25T01:49:24.000Z • Be sure to stop the instance or you will be charged! Thursday, November 5, 2009 18
  • 19. Use the AWS Console Thursday, November 5, 2009 19
  • 20. Or use ElasticFox • Firefox extension to start/stop EC2 instances, assign IPs, associate EBS volumes and create keypairs. http://developer.amazonwebservices.com/connect/entry.jspa?externalID=609&categoryID=88 Thursday, November 5, 2009 20
  • 21. Case study Plone on EC2 Thursday, November 5, 2009 21
  • 22. Why Plone on EC2? + • Too few Zope hosting providers • Avoid renting rackspace in co-lo • Flexible and scalable architecture • Complete control of servers Thursday, November 5, 2009 22
  • 23. What is PondCMS? PondCMS = Plone On Demand • Hosted and supported version of Plone • Eliminate the complexities of hosting • Turnkey - automated and repeatable • Bundled with certified add-ons www.jazkarta.com/pondcms Thursday, November 5, 2009 23
  • 24. PondCMS Technology stack HTTP proxy Caching proxy Load Balancer 0%1&2 PondCMS *#"+ ,-./+ + add-ons *#"+ Web App Server ,-./+ Operating System *#"+ ,-./+ Virtual Servers !"#$%&!'() Thursday, November 5, 2009 24
  • 25. One server deployment Apache HTTP (HTTP) Varnish (Caching) Pound (Load balancing) 1 2 n Zope Client #1 Zope Client #1 Zope Client #n Zeo Server Zeo Backup Thursday, November 5, 2009 25
  • 26. Add Zeo clients as demand increases Thursday, November 5, 2009 26
  • 27. Multi server deployment Website visitor HTTP Elastic Block Storage public IP: 72.44.50.237 Apache Frontend server Apache logs Varnish Pound Application Servers 1 2 n zope-1.web.private:8222 zope-2.web.private:8222 zope-n.web.private:8222 Zope client #1 Zope client #2 Zope client #n Elastic Block Storage Database server zeo-1.web.private:8221 Zeo server #1 Data.fs Data Data.fs Backup files Simple Storage Solution (S3) Thursday, November 5, 2009 27
  • 28. Goal: automate everything Scripts for repeatable deployment 1. Bootstrap the server 2. Install dependencies 3. Install PondCMS (includes Plone + add-ons) 4. Configure backups 5. Create the Plone site and Apache vhosts Thursday, November 5, 2009 28
  • 29. 1. Bootstrap server 1. Create the EC2 instance 2. Create an EBS volume 3. Associate volume with EC2 instance 4. Acquire IP address 5. Associate IP with EC2 instance Thursday, November 5, 2009 29
  • 30. 2. Install dependencies 1. Install packages with apt-get • zope, python, varnish, apache2, pound, postfix 2. Initialize EBS volume and mount as ext3 fs 3. Store Apache log files on EBS volume 4. Register server with Landscape 5. Set up Pound to start automatically 6. Set up Pound to point to Zeo clients Thursday, November 5, 2009 30
  • 31. 3. Install PondCMS 1. Make a 'zope' user 2. Create a virtualenv 3. Make Zope data dirs on EBS volume 4. Download PondCMS tarball release (incl. Plone) 5. Install PondCMS into virtualenv Thursday, November 5, 2009 31
  • 32. 4. Configure backups • Configure logfile rotation • Setup backup scripts (using repozo) • Setup sync of backups to S3 (using Duplicity) • Create cron jobs for backups (daily, weekly) Thursday, November 5, 2009 32
  • 33. 5. Create Plone site & vhosts 1. Use Fabric (remote deployment tool) to: • Make Plone site incl. CacheFu setup • Make vhost for accessing site on port 80 2. Create rewrite rules for: • domainname.com/supervisor (start/stop Zope) • domainname.com/admin (ZMI access) Thursday, November 5, 2009 33
  • 34. What is Fabric? Thursday, November 5, 2009 34
  • 35. What is Fabric? http://www.nongnu.org/fab/ • Simple remote deployment tool • Similar to Capistrano (Ruby on Rails) • Deploy applications to multiple similar hosts Thursday, November 5, 2009 35
  • 36. Setup site Fabric script @require('host', 'site_id') @fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename') def createplonesite(host=None, user=None, key=None, site_id=None, public_host=None): """Create a new plone site """ if not site_id: site_id = host installzcml(host=host, user=user, key=key, package='pondcms.basicapp') restart(host=host, user=user, key=key) put('createplonesite.py', '/tmp/createplonesite.py') s = SERVICE+'/bin/utility run /tmp/createplonesite.py -a pondcms.basicapp -s '+site_id if public_host: s += ' --site-url='+public_host run(s) Thursday, November 5, 2009 36
  • 37. Setup vhost Fabric script @require('host', 'vhost_name') @fabricset(host='fab_hosts', user='fab_user', key='fab_key_filename') def setupvhost(host=None, user=None, key=None, vhost_name=None): """Setup an apache2 vhost""" site = VHOST_TEMPL % {'vhost_name': vhost_name} tmpfile = '/tmp/'+get('fab_timestamp')+'_vhost' f = open(tmpfile, 'w') f.write(site) f.close() targetf = vhost_name+'.conf' target = '/etc/apache2/sites-available/' + targetf put(tmpfile, target) run('a2ensite vhost_name') run('/etc/init.d/apache2 reload') Thursday, November 5, 2009 37
  • 38. Running Fabric scripts $ cd fabric $ source bin/active (fabric)$ cd fabs/pondcms (fabric)$ fab createplonesite:host=test.pondcms.net,user=root,key=~/id_rsa-gsg- keypair,site_id=test.pondcms.net,public_host=http:// test.pondcms.net ... (fabric)$ fab setupvhost:host=test.pondcms.net,user=root,key=~/ id_rsa-gsg-keypair,vhost_name=test.pondcms.net Thursday, November 5, 2009 38
  • 39. Challenges • Persistent data must be stored on EBS • Static IPs • Mail sent from EC2 instances flagged as spam • Monitoring and maintenance of VMs • Landscape • ZenOss • Nagios • Hyperic Thursday, November 5, 2009 39
  • 41. AWS Status history Thursday, November 5, 2009 41
  • 42. Landscape monitoring / updates • http://landscape.canonical.com Thursday, November 5, 2009 42
  • 43. Landscape update pkgs Thursday, November 5, 2009 43
  • 44. PondCMS v0.1- Dashboard • JazOverseer Thursday, November 5, 2009 44
  • 45. PondCMS 1.0 (mockups) nate (logout) | Security Settings Customers EC2 Plone Instance ID: i-e3de598a RUNNING Elastic IP: 75.101.161.152 EBS: vol-07ce2dfe Supervisor - CMRLS S3 bucket: cmrls.pondcms.net ZMI + staging.cmrls.org Landscape Refresh New EC2 instance SSH + production.cmrls.org EC2 Instances - Oxfam America Instance ID State Launch time Public DNS name + staging.oxfamamerica.org i-e3de598a running 2009-01-08 ec2-75-101-161-152.compute-1.amazonaws.com - production.oxfamamerica.org i-7d573e14 running 2009-01-08 ec2-75-174.129.208.compute-1.amazonaws.com www.oxfamamerica.org blog.oxfamamerica.org - Oxfam Canada - Harvard School of Engineering Refresh New Plone site Customer: CMRLS Plone sites Customer: CMRLS Plone site Plone PondCMS Custom eggs Contact: Rick Levine ashbylibrary.net 3.1.7 0.4.1-20090505 (upgrade) Add egg Phone: (508) 555-1212 fobeslibrary.org 3.2.2 0.5.0-20090506 Add egg Email: rick@cmrls.org taftpubliclibrary.org 3.2.2 0.5.0-20090506 Add egg Package: PondCMS Small Start date: 01/01/2009 End date: 12/31/2009 Thursday, November 5, 2009 45
  • 46. Reports if Zope is down nate (logout) | Security Settings Customers EC2 Plone Instance ID: i-e3de598a RUNNING NOT RUNNING Elastic IP: 75.101.161.152 EBS: vol-07ce2dfe Supervisor - CMRLS S3 bucket: cmrls.pondcms.net ZMI + staging.cmrls.org Landscape Refresh New EC2 instance SSH + production.cmrls.org EC2 Instances - Oxfam America Instance ID State Launch time Public DNS name + staging.oxfamamerica.org i-e3de598a running 2009-01-08 ec2-75-101-161-152.compute-1.amazonaws.com - production.oxfamamerica.org i-7d573e14 running 2009-01-08 ec2-75-174.129.208.compute-1.amazonaws.com www.oxfamamerica.org blog.oxfamamerica.org - Oxfam Canada - Harvard School of Engineering Refresh New Plone site Customer: CMRLS Plone sites Customer: CMRLS Plone site Plone PondCMS Custom eggs Contact: Rick Levine ashbylibrary.net 3.1.7 0.4.1-20090505 (upgrade) Add egg Phone: (508) 555-1212 fobeslibrary.org 3.2.2 0.5.0-20090506 Add egg Email: rick@cmrls.org taftpubliclibrary.org 3.2.2 0.5.0-20090506 Add egg Package: PondCMS Small Start date: 01/01/2009 End date: 12/31/2009 Thursday, November 5, 2009 46
  • 47. Launch new EC2 instance nate (logout) | Security Settings Customers EC2 Plone Instance ID: i-e3de598a RUNNING Elastic IP: 75.101.161.152 EBS: vol-07ce2dfe Supervisor - CMRLS S3 bucket: cmrls.pondcms.net ZMI + staging.cmrls.org 2 Landscape Refresh New EC2 instance SSH + production.cmrls.org EC2 Instances New EC2 Instance - Oxfam America Instance IDKeypair: State gsg-keypair Launch time Public DNS name + staging.oxfamamerica.org i-e3de598a running 2009-01-08 ec2-75-101-161-152.compute-1.amazonaws.com Elastic IP: Assign a static IP? - production.oxfamamerica.org i-7d573e14 running 2009-01-08 ec2-75-174.129.208.compute-1.amazonaws.com Instance type: - Small - www.oxfamamerica.org blog.oxfamamerica.org Availability zone: - us-east-1 - - Oxfam Canada Launch instance - Harvard School of Engineering Refresh New Plone site Customer: CMRLS Plone sites Customer: CMRLS Plone site Plone PondCMS Custom eggs Contact: Rick Levine ashbylibrary.net 3.1.7 0.4.1-20090505 (upgrade) Add egg Phone: (508) 555-1212 fobeslibrary.org 3.2.2 0.5.0-20090506 Add egg Email: rick@cmrls.org taftpubliclibrary.org 3.2.2 0.5.0-20090506 Add egg Package: PondCMS Small Start date: 01/01/2009 End date: 12/31/2009 Thursday, November 5, 2009 47
  • 48. Create new Plone site nate (logout) | Security Settings Customers EC2 Plone Instance ID: i-e3de598a RUNNING Elastic IP: 75.101.161.152 New Plone site EBS: vol-07ce2dfe Supervisor - CMRLS S3 bucket: cmrls.pondcms.net ZMI Site title/host: + staging.cmrls.org Landscape Refresh This essentially maps to the "zope id" for the site which New EC2 instance SSH should also match the public host name that will be used + production.cmrls.org to access this Plone site. EC2 Instances - Oxfam America Manager password: Instance ID State Launch time Public DNS name + staging.oxfamamerica.org Each Plone site gets initiated with a new manager i-e3de598a account with user2009-01-08 This fields sets the running "ploneadmin". ec2-75-101-161-152.compute-1.amazonaws.com password for that account. - production.oxfamamerica.org i-7d573e14 running 2009-01-08 ec2-75-174.129.208.compute-1.amazonaws.com www.oxfamamerica.org Plone theme: - Select One - (theme thumbnail) blog.oxfamamerica.org - Oxfam Canada Create Plone site - Harvard School of Engineering 3 Refresh New Plone site Customer: CMRLS Plone sites Customer: CMRLS Plone site Plone PondCMS Custom eggs Contact: Rick Levine ashbylibrary.net 3.1.7 0.4.1-20090505 (upgrade) Add egg Phone: (508) 555-1212 fobeslibrary.org 3.2.2 0.5.0-20090506 Add egg Email: rick@cmrls.org taftpubliclibrary.org 3.2.2 0.5.0-20090506 Add egg Package: PondCMS Small Start date: 01/01/2009 End date: 12/31/2009 Thursday, November 5, 2009 48
  • 49. Add eggs to Plone site nate (logout) | Security Settings Customers EC2 Plone Instance ID: i-e3de598a RUNNING Elastic IP: 75.101.161.152 EBS: vol-07ce2dfe Supervisor - CMRLS S3 bucket: cmrls.pondcms.net ZMI + staging.cmrls.org Landscape Refresh New EC2 instance SSH + production.cmrls.org EC2 Instances - Oxfam America Instance ID State Launch time Public DNS name + staging.oxfamamerica.org i-e3de598a running 2009-01-08 ec2-75-101-161-152.compute-1.amazonaws.com - production.oxfamamerica.org i-7d573e14 running 2009-01-08 ec2-75-174.129.208.compute-1.amazonaws.com www.oxfamamerica.org blog.oxfamamerica.org - Oxfam Canada Add eggs - Harvard School of Engineering Available eggs To install PloneFlashUpload Refresh Ploneboard New Plone site > ImageEditor Customer: CMRLS Plone sites slideshowfolder < Customer: CMRLS PloneFormGenPlone site Plone PondCMS Custom eggs 4 Contact: Rick Levine ashbylibrary.net 3.1.7 0.4.1-20090505 (upgrade) Add egg Phone: (508) 555-1212 Egg URL: fobeslibrary.org 3.2.2 0.5.0-20090506 Add egg Email: rick@cmrls.org URL to an egg hosted on the cheeseshop. taftpubliclibrary.org 3.2.2 0.5.0-20090506 Add egg Package: PondCMS Small Start date: 01/01/2009 Quickinstall: Install the egg in the Plone site. End date: 12/31/2009 Add eggs Thursday, November 5, 2009 49
  • 50. Eucalyptus • Build your own private cloud • Compatible with Amazon EC2 API • Included with Ubuntu 9.0.4 Server http://www.ubuntu.com/products/whatisubuntu/serveredition/cloud/uec http://open.eucalyptus.com/ https://help.ubuntu.com/community/Eucalyptus Thursday, November 5, 2009 50
  • 51. Thank you! Questions? Follow me on Twitter: natea Or email me at: natea (at) jazkarta (dot) com Thursday, November 5, 2009 51
  • 52. More info • Amazon EC2: http://amazon.com/ec2 • Boto: http://code.google.com/p/boto • Bototools: http://code.google.com/p/bototools/ • Fabric: http://www.nongnu.org/fabric • Fabulatr: http://code.google.com/p/fabulatr/ • Plone: http://plone.org • PondCMS: http://jazkarta.com/pondcms Thursday, November 5, 2009 52
  • 53. Other resources • Ubuntu on EC2: http://groups.google.com/group/ec2ubuntu • Ubuntu AMIs: http://www.alestic.com • Beta program: http://www.ubuntu.com/ec2 • Landscape: http://landscape.canonical.com • vm-builder-ec2: http://packages.ubuntu.com/intrepid-updates/utils/python-vm-builder-ec2 • Enomaly's Elastic Computing Platform: http://src.enomaly.com/ Thursday, November 5, 2009 53
  • 54. Photo credits • http://www.flickr.com/photos/docman/66137352/ • http://www.flickr.com/photos/thomashawk/126534906/ • http://www.flickr.com/photos/moeview/498544386/ • http://www.flickr.com/photos/shellysblogger/ 2464969383/ • http://www.flickr.com/photos/mhw/56386662/ • http://www.flickr.com/photos/mrtopf/1541527579/ Thursday, November 5, 2009 54