Setting Up a Single Node OpenStack Storage Server - Part 1

 

 

We’re pleased to publish this guide to walk you through the process of installing OpenStack Object Storage (aka Swift to the cool kids). While a lot of people are comfortable using public cloud for testing and development, some folks like setting up a simple environment on their own local servers, first. Most of the OpenStack documentation is pretty good, but it’s always good to have a more detailed, step by step guide. At the end of this tutorial, you should have a stable, local OpenStack Storage server where you can create users and store and retrieve files. Your local server will have the same API interface as HP Cloud Services, and you can use this interface for API testing.

 

What Is OpenStack Storage

OpenStack Storage, also known as Swift, is a python-based, open source cloud storage platform. It's generally set up with several front end proxy nodes talking to a collection of back end storage nodes, though for this article we'll be installing both on the same machine. You access the storage system through HTTP calls to the proxy server, which then talks to the storage nodes and figures out where your files are stored and returns them to you.

 

Swift has a concept of zones, which are groups of servers which store copies of data for fault tolerance. Swift by default stores copies of each file in three different zones, so you'll have as much capacity as 1/3rd of the drive space you allocate. If you have a 1.5 TB drive for Swift, you'll be able to store 500 Gigabytes of data. If you have a 30 Gigabyte VM drive, you'll be able to store 10 Gigabytes. We'll be setting up four zones on our server so you can see the system balance itself.

 

This article shows how to install the Diablo-4 version of Swift, aka Swift 1.4.3, and setting it up with swauth. There are new versions of Swift coming out all the time, but this is the last of the Diablo releases and the code is mature and stable.

 

If you'd like to learn more about how Swift works, check out the Swift Architectural Overview on the Swift Wiki. This article is heavily indebted to it's great instructions for setting up a Swift All In One (SAIO) development environment. If you're interested in building the latest trunk code yourself, be sure to check it out.

 

What You'll Need

We're going to walk through setting up a 2 disk server, one drive for the OS and Swift software, and the other drive dedicated to Swift's data storage. If you're setting up a physical server we'll need two hard drives, if you're setting up a virtual machine in VirtualBox or VMware Workstation you'll need to create a second virtual disk.

 

You can setup a server with both OS and swift storage on the same drive, just make sure you leave free space for your second partition when you install Ubuntu. In that case, you can replace 'sdb1' in these instructions with 'sda2'. If you have a more complex partition scheme, well, you can probably figure out your partition mapping yourself.

 

You'll need a copy of Ubuntu 11.04 Server for this, you can get the ISOs from Ubuntu:

 

http://releases.ubuntu.com/natty/

 

If you're creating a VM I'd suggest allocating at least 1 Gig of RAM, and an 8 gig boot drive. For the second disk I'd suggest at least 30 gig, since you'll probably want to be able to test storing large files. Creating a dynamically allocated disk will use less space but will be slightly slower in use.

 

For a VM you'll want to set the network to bridged mode so you can access the server from your computer and other VMs or machines on your network. You want to configure the server with a static IP address so you can tell swift it's address (the authentication system is 2-step, first you authenticate and get a token and a reference to the storage server, then you use your token to talk to the storage server).

 

System Installation

Install Ubuntu 11.04 Server on your first drive and configure the network. I'd suggest installing OpenSSH during setup so you can remotely administer your server. At this point you should be able to SSH into your server from another machine on the network. If you can do that, we should be ready to go.

 

 

First, let's update our package lists and make sure we have any available security updates installed. All of the following should be done as root, so:

 

sudo bash 

 

And then:

 

apt-get update
apt-get upgrade -y 

 

We'll also install memcached and xfsprogs now, as well as curl to download files with, python-setuptools to install the swauth code with and python-software-properties to allow us to talk to PPA servers.

 

apt-get install -y curl memcached xfsprogs python-setuptools python-software-properties

 

We'll also add the PPA (python package archive) server for swift and install it. In this tutorial we're using the ppa: openstack-release/2011.3 PPA, which should have the latest version of the Diablo milestone. This will also create a swift user for us.

 

add-apt-repository ppa:openstack-release/2011.3
apt-get update
apt-get install -y swift swift-account swift-container swift-object swift-proxy 

 

And then set our user info for later commands. If you want to change this to some other user, set it here.

 

export SWIFT_USER=swift
export SWIFT_GROUP=swift

 

Since we're using the swauth authentication scheme, we need a static IP address for the swift server. If you're only going to try out swift within the VM itself you can set this to 127.0.0.1, otherwise you should set it to the machine's public IP address!!! If you need to figure out your public IP address, ifconfig is your friend.

 

export SWIFT_PUBLIC_IP=127.0.0.1 

 

Create a single partition on your second drive. (The routine here is probably 'n', 'p', '1', enter, enter, 'w'.)

 

NOTE: If you're installing everything on one drive, you'll need to setup the second partition on your drive here, instead, and you'll want to replace sdb1 with sda2 in all the following commands.

 

fdisk /dev/sdb 

 

Format the partition as an XFS partition. XFS, or the X File System supports storing metadata on files in the file system, a feature which swift uses.

 

mkfs.xfs -i size=1024 /dev/sdb1 

 

Next we modify /etc/fstab, so the file system will be mounted on boot.

 

cat >>/etc/fstab << EOF
/dev/sdb1 /mnt/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0
EOF

 

Make the mount directory for our file system and mount it. Once it's mounted, make the four directories where we store our four different zones, and change their ownership to our swift user. Next we create a /srv directory and soft-link the directories we just created to it, for easy reference.

 

mkdir /mnt/sdb1
mount /mnt/sdb1
mkdir /mnt/sdb1/1 /mnt/sdb1/2 /mnt/sdb1/3 /mnt/sdb1/4
chown $SWIFT_USER:$SWIFT_GROUP /mnt/sdb1/*
mkdir -p /srv
for x in {1..4}; do ln -s /mnt/sdb1/$x /srv/$x; done 

 

Now we make the directories to store our config files and zone data in, and change the ownership to our Swift user.

 

mkdir -p /etc/swift/object-server /etc/swift/container-server /etc/swift/account-server /srv/1/node/sdb1 /srv/2/node/sdb2/srv/3/node/sdb3 /srv/4/node/sdb4 /var/run/swift
chown -R $SWIFT_USER:$SWIFT_GROUP /etc/swift /srv/[1-4]/ /var/run/swift

 

Next we'll create an rsyncd config file. We use rsync to keep our storage servers directories in sync.

 

cat >/etc/rsyncd.conf <<EOF
uid = $SWIFT_USER
gid = $SWIFT_GROUP
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
address = 127.0.0.1

[account6012]
max connections = 25
path = /srv/1/node/
read only = false
lock file = /var/lock/account6012.lock

[account6022]
max connections = 25
path = /srv/2/node/
read only = false
lock file = /var/lock/account6022.lock

[account6032]
max connections = 25
path = /srv/3/node/
read only = false
lock file = /var/lock/account6032.lock

[account6042] max connections = 25
path = /srv/4/node/
read only = false
lock file = /var/lock/account6042.lock

[container6011]
max connections = 25
path = /srv/1/node/
read only = false
lock file = /var/lock/container6011.lock

[container6021]
max connections = 25
path = /srv/2/node/
read only = false
lock file = /var/lock/container6021.lock

[container6031]
max connections = 25
path = /srv/3/node/
read only = false
lock file = /var/lock/container6031.lock

[container6041]
max connections = 25
path = /srv/4/node/
read only = false
lock file = /var/lock/container6041.lock

[object6010]
max connections = 25
path = /srv/1/node/
read only = false
lock file = /var/lock/object6010.lock

[object6020]
max connections = 25
path = /srv/2/node/
read only = false
lock file = /var/lock/object6020.lock

[object6030]
max connections = 25
path = /srv/3/node/
read only = false
lock file = /var/lock/object6030.lock

[object6040]
max connections = 25
path = /srv/4/node/
read only = false
lock file = /var/lock/object6040.lock
EOF

 

Next, we'll enable rsync:

 

perl -i.bak -p -e's/RSYNC_ENABLE=false/RSYNC_ENABLE=true/g' /etc/default/rsync 

 

And restart it:

 

service rsync restart 

 

To use the swauth authentication module, you'll need to download it from GitHub, as it's been removed from the core swift project. It lives at:

 

https://github.com/gholt/swauth

 

curl https://nodeload.github.com/gholt/swauth/tarball/master > swauth.tgz
tar fxvz swauth.tgz 

 

You'll end up with a version-tagged directory containing the swauth codebase. It'll be something like 'gholt-swauth-4755a33'. Lets rename that and install it.

 

mv gholt-swauth-* swauth
cd swauth
python setup.py install

 

Swift Configuration

 

Next we'll create the proxy server configuration. This configuration doesn't use SSL and has a default super_admin_key of 'swauthkey'. If you'd like to secure your swift install a bit more, change that to something else.

 

cat >/etc/swift/proxy-server.conf <<EOF
[DEFAULT]
bind_port = 8080
user = $SWIFT_USER
log_facility = LOG_LOCAL1

[pipeline:main]
pipeline = healthcheck cache swauth proxy-server

[app:proxy-server]
use = egg:swift#proxy
allow_account_management = true
account_autocreate = true

[filter:swauth]
use = egg:swauth#swauth
set log_name = swauth
super_admin_key = swauthkey
default_swift_cluster = local#http://$SWIFT_PUBLIC_IP:8080/v1

[filter:healthcheck]
use = egg:swift#healthcheck

[filter:cache]
use = egg:swift#memcache
EOF

 

Next create /etc/swift/swift.conf, this file includes your unique hash string, if you lose it you'll lose all the data in your swift server.

 

cat >/etc/swift/swift.conf <<EOF
[swift-hash]
# random unique string that can never change (DO NOT LOSE)
swift_hash_path_suffix = changeme
EOF

 

Next create the 4 account server, container server and object server config files:

 

 

cat >/etc/swift/account-server/1.conf <<EOF
[DEFAULT]
devices = /srv/1/node
mount_check = false
bind_port = 6012
user = $SWIFT_USER
log_facility = LOG_LOCAL2

[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account

[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
cat >/etc/swift/account-server/2.conf <<EOF
[DEFAULT]
devices = /srv/2/node
mount_check = false
bind_port = 6022
user = $SWIFT_USER
log_facility = LOG_LOCAL3

[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account

[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
cat >/etc/swift/account-server/3.conf <<EOF
[DEFAULT]
devices = /srv/3/node
mount_check = false
bind_port = 6032
user = $SWIFT_USER
log_facility = LOG_LOCAL4

[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account

[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
cat >/etc/swift/account-server/4.conf <<EOF
[DEFAULT]
devices = /srv/4/node
mount_check = false
bind_port = 6042
user = $SWIFT_USER
log_facility = LOG_LOCAL5

[pipeline:main]
pipeline = account-server

[app:account-server]
use = egg:swift#account

[account-replicator]
vm_test_mode = yes

[account-auditor]

[account-reaper]
EOF
cat >/etc/swift/container-server/1.conf <<EOF
[DEFAULT]
devices = /srv/1/node
mount_check = false
bind_port = 6011
user = $SWIFT_USER
log_facility = LOG_LOCAL2

[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF
cat >/etc/swift/container-server/2.conf <<EOF
[DEFAULT]
devices = /srv/2/node
mount_check = false
bind_port = 6021
user = $SWIFT_USER
log_facility = LOG_LOCAL3

[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF
cat >/etc/swift/container-server/3.conf <<EOF
[DEFAULT]
devices = /srv/3/node
mount_check = false
bind_port = 6031
user = $SWIFT_USER
log_facility = LOG_LOCAL4

[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF
cat >/etc/swift/container-server/4.conf <<EOF
[DEFAULT]
devices = /srv/4/node
mount_check = false
bind_port = 6041
user = $SWIFT_USER
log_facility = LOG_LOCAL5

[pipeline:main]
pipeline = container-server

[app:container-server]
use = egg:swift#container

[container-replicator]
vm_test_mode = yes

[container-updater]

[container-auditor]

[container-sync]
EOF
cat >/etc/swift/object-server/1.conf <<EOF
[DEFAULT]
devices = /srv/1/node
mount_check = false
bind_port = 6010
user = $SWIFT_USER
log_facility = LOG_LOCAL2

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF
cat >/etc/swift/object-server/2.conf <<EOF
[DEFAULT]
devices = /srv/2/node
mount_check = false
bind_port = 6020
user = $SWIFT_USER
log_facility = LOG_LOCAL3

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF
cat >/etc/swift/object-server/3.conf <<EOF
[DEFAULT]
devices = /srv/3/node
mount_check = false
bind_port = 6030
user = $SWIFT_USER
log_facility = LOG_LOCAL4

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF
cat >/etc/swift/object-server/4.conf <<EOF
[DEFAULT]
devices = /srv/4/node
mount_check = false
bind_port = 6040
user = $SWIFT_USER
log_facility = LOG_LOCAL5

[pipeline:main]
pipeline = object-server

[app:object-server]
use = egg:swift#object

[object-replicator]
vm_test_mode = yes

[object-updater]

[object-auditor]
EOF

 

Now that all our files are in place, we're going to make our ring files. Rings store the mapping to where files are actually stored. When the servers need to figure out who has what, they check the ring files. There are separate rings for accounts, containers and objects. When you add a new server to a Swift cluster or take a server out, you have to update your ring files, also known as rebalancing.

 

cd /etc/swift
swift-ring-builder object.builder create 18 3 1
swift-ring-builder object.builder add z1-127.0.0.1:6010/sdb1 1
swift-ring-builder object.builder add z2-127.0.0.1:6020/sdb2 1
swift-ring-builder object.builder add z3-127.0.0.1:6030/sdb3 1
swift-ring-builder object.builder add z4-127.0.0.1:6040/sdb4 1
swift-ring-builder object.builder rebalance
swift-ring-builder container.builder create 18 3 1
swift-ring-builder container.builder add z1-127.0.0.1:6011/sdb1 1
swift-ring-builder container.builder add z2-127.0.0.1:6021/sdb2 1
swift-ring-builder container.builder add z3-127.0.0.1:6031/sdb3 1
swift-ring-builder container.builder add z4-127.0.0.1:6041/sdb4 1
swift-ring-builder container.builder rebalance
swift-ring-builder account.builder create 18 3 1
swift-ring-builder account.builder add z1-127.0.0.1:6012/sdb1 1
swift-ring-builder account.builder add z2-127.0.0.1:6022/sdb2 1
swift-ring-builder account.builder add z3-127.0.0.1:6032/sdb3 1
swift-ring-builder account.builder add z4-127.0.0.1:6042/sdb4 1
swift-ring-builder account.builder rebalance

 

And then start up Swift:

 

swift-init restart all

Swift should now be running. You should see 75 or so Swift processes if you run:

 

ps ax | grep swift

 

And there should be messages from replicators in /var/log/syslog:

 

tail /var/log/syslog

We should now have Swift installed and running.  In Part 2 we'll cover creating accounts, configuring SSL and some suggestions about reverse proxies and troubleshooting.

 

Continue to Part 2

0 comments
Post a Comment
Be sure to enter a unique name. You can't reuse a name that's already in use.
Be sure to enter a unique email address. You can't reuse an email address that's already in use.
Type the characters you see in the picture above.Type the words you hear.
About the Author
  • Zorawar Biri Singh is senior vice president and general manager for Cloud Services at HP. He has global responsibility for HP’s public cloud infrastructure, platform services, cloud solutions and cloud ecosystem for developers, independent software vendors, service providers and enterprises. Singh has more than 20 years of global leadership experience as an executive and serial entrepreneur in enterprise IT, online advertising, e-commerce and telecommunications. He has an extensive products background in infrastructure software, cloud computing services, data center and internet scale-out infrastructure, and networking. Prior to joining HP, Singh was vice president of Cloud Computing at IBM, where he helped lead corporate-wide strategy and solutions for cloud computing. He joined IBM in 2008 through the acquisition of Encentuate, Inc., an identity and access management security company, where he served as chief executive officer. Singh also previously served as CEO of Pivia, a network acceleration appliance company acquired by F5 Networks; JRG, a Consumer Packaged Goods-focused software-as-a-service company acquired by CDC; and e-commerce startup Idapta. Earlier, he was chief operating officer of RelevantKnowledge / MediaMetrix, a pioneer in online advertising ratings and Internet audience measurement, which today is part of comScore Inc. Singh started his career at NORTEL as a product line manager. Singh holds an MBA from the University of North Carolina, Chapel Hill and a Bachelor of Arts in economics from North Carolina State University.
  • Blake is a Product Manager in HP's emerging Cloud Services focusing on cloud products and technologies. Prior to joining HP, Blake served as the Product Line Leader for Cloud Compute at San Antonio based Rackspace Hosting, a provider of hosted IT services and Cloud Computing. During his tenure there, Blake's team focused on driving the development and growth of the Cloud Servers product line and launching the Managed Cloud Service Level. Previously, Blake was VP of Research and Development for Gandinnovations, a grand-format digital inkjet printer manufacturer based in Toronto. Blake lives in San Antonio, Texas where he and his wife enjoy spending time outdoors running, bicycling, fishing and hunting. They are also avid travelers who enjoy seeing new places and sampling the local fare. Blake can be reached via email at blake.yeager@hp.com or on twitter: @Blake_Yeager.
  • Brant leads HP Cloud Services’ Product Management function for those parts of our system that are behind the scenes or that span our service offerings. Included in that is the Identity Service, the Manage console, the Bindings and CLIs, system security, the billing system, sales and support tools and others. Before joining HP Cloud Services, Brant spent many years in other parts of HP where he, among other things, managed the first 2G wireless iPAQ Pocket PC offering, oversaw the development of the industry’s first low cost fingerprint reader, devised the BioAPI consortium and was Marketing Chairman for the Trusted Computing Platform Alliance. Brant lives in Houston with his wife and family where he’s an avid swimmer and Boy Scout leader. He also enjoys skiing, snowboarding, scuba diving, rafting and kayaking. He even once fought off a wild bear – you can bet there’s more to that story. Brant holds degrees from Claremont McKenna College, Dartmouth College and MIT. He can be reached at brant.jones@hp.com or you can follow him on Twitter: @partly_cloudy1
  • Recently joined HP’s services lab with a focus to identify ways to pull lab activities into HP Services as well as harvest some of the ideas and opportunities in the services organization back into the research space. I've been utility player for EDS (and now HP) performing a variety of roles in recent years like the Chief Technologist of EDS' Application Delivery organization, the acting VP for Application Portfolio during the creation of EDS' application portfolio strategy and the chief technologist for the relationship between EDS and a large consumer products company. I've supported a variety of industries including process manufacturing, discrete manufacturing, engineering, consumer products, financial systems and health care. I am known as a team builder who interfaces across and within organizational boundaries to develop team solutions and I constantly strive to understand innovation both within and outside HP. My value has been that of a pioneer-- typically knowing where the explorers have gone and identifying the best path for others to follow. I try to cultivate a large resource network inside and outside HP, which helps facilitate the process of clearing overgrown routes and enabling efficient and effective movement of the larger group to meet common and corporate objectives.
  • Darlene has 20 years technology marketing experience and currently works with HP’s Cloud Services. She has held a range of positions within marketing with Tandem, Compaq and HP, including working in the gaming, media, entertainment and telecom industries. Prior to HP, Darlene worked in telecom industry with customers from enterprise, small and midmarket, and consumer segments. She held a variety of roles across marketing, sales, customer satisfaction and quality management at Nortel, Pacific Telesis, and PacTel. She has taught public relations, has been a Texas and California state examiner for the National Malcolm Baldrige Quality Award, and an ISO auditor. She received her degree from Pepperdine University and although originally from Southern California, she currently resides in Austin, Texas. Darlene can be reached via e-mail at darlene.lynch@hp.com
  • Gavin Pratt is on the HP Cloud Services product management team, where he focuses on storage, networking, and CDN services. Before joining HP Cloud Services, Gavin held a number of corporate and business unit strategy-related roles at HP, where he spent a significant amount of his time on cloud computing. Before HP, Gavin worked at a small technology startup, and before that, he worked at The Boston Consulting Group. Gavin holds an MBA in Finance & Strategic Management from The Wharton School and a BA in Economics from Yale University. He lives in the Bay Area with his wife, and he is an enthusiast of: travelling, sushi, standup comedy, and everything technology-related.
  • Jeff wrote his first e-commerce site in 1997 for an amusement park, spent a few years at Whole Foods Market managing web server load, creating CMSes and writing web interfaces to pricing systems, spent a decade doing all manner of Perl, PHP and Ruby projects at a small web consultancy and is now the server guy on the Developer Experience team at HP Cloud Services.Jeff lives in Austin, Texas with his wife, new baby and very cute corgi. You can find him on twitter as @jeffk, posting about interesting augmented reality, 3d manufacturing and other near-future technologies.
  • John Purrier is Vice President of Cloud Infrastructure for HP Cloud Services. John oversees engineering, service/technical operation and customer satisfaction. Prior to HP, John worked as a director of OpenStack at Rackspace, where he drove the development of this industry leading open source cloud computing project. John brings more than 30 years of technology expertise to HP, with roles at IBM and Microsoft, as well as a variety of startups. Over the course of John’s career he has served as chief software architect, director of product development, CTO and has been the CEO of two different companies. John lives in San Antonio, TX and enjoys live music and spending time with his family and friends.
  • Karen Reynolds is Director of Marketing Communications, ensuring the HP Cloud Services vision and strategy are communicated with world-class execution. Her responsibilities include leading and driving brand identity, messaging, PR/AR/Influencer relations, event marketing and executive communications and employee engagement activities, ensuring alignment across the team as well as HP. Prior to joining HP’s public cloud team, Karen led executive communications for PSG Americas, HP’s largest regional business where she provided strategic communications counsel to the SVP and GM of HP’s PC business and led messaging across the region’s senior leadership team. Karen has over 25 years’ experience in technology communications and has worked for iconic Silicon Valley companies, including leading global marketing and communications for companies both large and small, such as Azul Systems, Autodesk and Sun Microsystems. You can follow Karen on Twitter @karenreynolds.
  • Marc is the Director of Product Management for HP Cloud Services. Marc’s team is responsible for defining and prioritizing the services and features deployed on hpcloud.com and working with other HP teams, customers, and ecosystem partners to create public, private and hybrid cloud solutions. Prior to joining HP, Marc served in a variety of product management roles with his 11+ years at Dell and 5+ years at a local startup in Austin, Texas. While at Dell, Marc worked in the Data Center Solutions, Web/Customer Services, Enterprise Products, and Client Systems Groups. Before Dell, Marc worked at Asyst Technologies (formerly “PST”), a company that specializes in semiconductor and flat panel display factory automation solutions. Marc lives in Austin, Texas where he and his wife enjoy spending time running around to different kid activities. Marc also likes tinkering with media solutions and relaxing with movies and music.
  • Margot has over 12 years experience in technology product marketing, product management, and corporate marketing. Prior to joining HP, Margot served as Director of Product Marketing for YouSendIt, a cloud collaboration, cloud storage, and cloud file transfer provider, and Director of Marketing for Space-Time Insight, a business intelligence software vendor. Previously, she was director of product marketing for companies including Imperva, a web application and database security vendor, and Merced Systems, a performance management software company. Margot founded a mobile games startup that launched an iPhone game in the early days of the iTunes AppStore. Earlier in her career, she served as Senior Manager, Product Marketing for Hyperion Solutions’ business intelligence products. Margot lives in San Francisco, California where she enjoys exploring the city. Margot can be reached via email at margot.rudell@hp.com.
  • Monty is Manager of Developer Automation and Infrastructure for HP Cloud Services. He runs the developer tooling, automation and process for the OpenStack project, is an at-large member of the OpenStack Project Policy Board, and is a regular conference speaker around the world. Monty has been with OpenStack since its inception, but before that was a core developer on Drizzle at Rackspace, and a Senior Consultant at MySQL, Inc. He's also started several companies related to Open Source software for the entertainment production industry, and he is an accomplished lighting designer. Monty splits his time between Seattle and New York where he works with several bands and theatre companies.
  • Pete Johnson created one of the first web applications ever built inside Hewlett Packard during the mid 1990's, served a stint as the HP.com Chief Architect, and now works on HP's cloud initiatives. You can find him on Twitter or LinkedIn as nerdguru and his retired blog on the importance of soft skills in technical careers can be found at http://blog.nerdguru.net
  • Peter is a project manager in HP’s Cloud Services business, engineering HP’s upcoming global-scale public cloud. Prior to this he managed research in HP Labs on automated cloud infrastructure, and led the HP Labs SE3D program, a cloud-based service for digital media production, which — among other things — showcased the world’s first automated, market-based computing utility.
  • Business Technology Leader and Strategist with expertise in building and managing cost-effective and high-performance technical teams in both tactical and strategic operating models for complex global organizations. Deep technical knowledge of software architectures and emerging technology with practical experience in all phases of the software lifecycle, from initial feasibility and opportunity analysis to design, construction and enhancement. Skilled and experienced at presenting complex technical information at an executive level and clearly articulating the implications and opportunities that arise to improve cost structures or create strategic advantages.
  • Rupak started writing web applications 1992 and had worked on an engine to embed dynamic data into HTML pages, to drive a live webcast of the World Cup Cricket in 1996. He has since dabbled in C/C++, .NET, Ruby and Rails platforms. He has worked at Compaq and then HP, as a Solution Architect on their eCommerce website for many years, before moving into the HP Cloud Services, Developer Experience team in 2010, working on the next generation cloud platform focusing on building applications, the Ruby language bindings, the Unix CLI, and Openstack APIs to enrich the developer experience. To fuel his personal passion as a developer, Rupak has been developing applications in his spare time, using Ruby, Rails, and Titanium. He loves, supports and contributes to OpenSource software and to that end, he also serves as the Managing Editor for the Rails Magazine, a free magazine for the Rails community. Rupak Ganguly lives in the Greater Atlanta area of Georgia with his lovely wife and two kids. He can be reached at Twitter @rupakg and also blogs at http://rails.webintellix.com
  • Sandro is assuming product management responsibilities for Data Services programs, including Databases, Memcache, and Analytics. He joined HP (through Compaq merger) 10+ years ago as Software Product Manager. He has been creating products in various domains: Telecom Service Level Management, Business Intelligence (strategic Analytics and CIO Scorecard) and IT Service Management. He recently was a Product Marketing Manager on HP Cloud Service Automation. He was mostly responsible for Dev-Ops initiatives, Service Providers market, technical marketing and supporting EMEA business. Prior to HP, Sandro worked as a R&D Director for Swisscom (Swiss incumbent telecom service provider) leading several projects in the area of Customer Care, Service and Network Management. Sandro holds a PhD in Computer Science that he obtained at university of Nice Sophia-Antipolis. • Soccer: member of HP team, coach (for youth soccer) and as well as a fan of OGC Nice (the city he was born in) • Travel: special fan of paradisiac island (Hawaii, Seychelles, Tahiti, …) • Food: I am half French and half Italian!!! Sandro can be reached via email at sandro.mazziotta@hp.com or on twitter: @smazziotta
  • Steve Loughran is a researcher at HP Laboratories in the UK on datacenter & cloud computing infrastructure. He is the author of the book "Ant in Action", is an Apache member and a committer in the Apache Ant and Apache Hadoop projects. He is also an evangelist of test-driven development and specializes in breaking things.