Deploying Data Centers with Puppet – A user’s perspective

Slides:



Advertisements
Similar presentations
Software Version: DSS ver up01
Advertisements

What’s New in Fireware XTM
The Professional Open Source Company JBoss Network Enterprise Manager Introduction and Walkthrough.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Installation & management of SUSE.
© 2004 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Installation & management of SUSE.
Datamax/MCL Off-Line License Activation Method
Programming with Android: SDK install and initial setup Luca Bedogni Marco Di Felice Dipartimento di Scienze dellInformazione Università di Bologna.
By Rick Clements Software Testing 101 By Rick Clements
ITR3 lecture 7: more introduction to UNIX Thomas Krichel
17 Copyright © 2005, Oracle. All rights reserved. Deploying Applications by Using Java Web Start.
1 Linux IP Masquerading Brian Vargyas XNet Information Systems.
Pakiti.
Making the System Operational
Get Oracle 8i Running on Your Linux Server Straight Away! Roger Schrag Database Specialists, Inc. Oracle Open World 2000 Paper #276.
About Me CTO, Individual Digital, Inc. (Startup) Author of ext/tidy, PHP 5 Unleashed, Zend Ent. PHP Patterns
Version 1.0 digitaloffice.intel.com Intel ® vPro Technology Intel ® Active Management Technology Setup and Configuration HP Laptop – Compaq 6910p Small.
Configuration management
Software change management
Change Management on the Cheap: Tortoise SVN and Ant Two Tools for your Applications Implementation Toolkit Joe Tseng North Slope Solutions
Simplified Management using the Enterprise Policy Management Framework
QA practitioners viewpoint
Chapter 1: Introduction to Scaling Networks
PPPoA Test Configuration
1 Confidential Lessons Learned from the First Generation of Mobile Apps Sean Ginevan, Product Management MobileIron - Confidential1.
Chapter 20 Oracle Secure Backup.
1 Cloud Services Professionals ReadySpace IDA Cloud Computing Call 6.
Request Tracker IT Partners Conference Oliver Thomas 19 April 2005.
© 2005 AT&T, All Rights Reserved. 11 July 2005 AT&T Enhanced VPN Services Performance Reporting and Web Tools Presenter : Sam Levine x111.
Chapter 11: The X Window System Guide To UNIX Using Linux Third Edition.
Information and Communications Theory Labs, School of Computer & Communication Sciences FILE: kickstart.sxi / 24/01/03 / Page 1
Services Course Windows Live SkyDrive Participant Guide.
1 Institutional Repository Workshop 1 – 3 April 2009 Presented by Leonard Daniels.
Installing Windows XP Professional Using Attended Installation Slide 1 of 30Session 8 Ver. 1.0 CompTIA A+ Certification: A Comprehensive Approach for all.
METALOGIC s o f t w a r e © Metalogic Software Corporation DACS Developer Overview DACS – the Distributed Access Control System.
Puppet for GENI Experiments
1 Dynamic DNS. 2 Module - Dynamic DNS ♦ Overview The domain names and IP addresses of hosts and the devices may change for many reasons. This module focuses.
Windows Deployment Services WDS for Large Scale Enterprises and Small IT Shops Presented By: Ryan Drown Systems Administrator for Krannert.
Linux+ Guide to Linux Certification, Second Edition Chapter 3 Linux Installation and Usage.
14.1 © 2004 Pearson Education, Inc. Exam Planning, Implementing, and Maintaining a Microsoft Windows Server 2003 Active Directory Infrastructure.
Hands-On Microsoft Windows Server 2003 Chapter 2 Installing Windows Server 2003, Standard Edition.
Automating Linux Installations at CERN G. Cancio, L. Cons, P. Defert, M. Olive, I. Reguero, C. Rossi IT/PDP, CERN presented by G. Cancio.
Va-scanCopyright 2002, Marchany Unit 3 – Installing Solaris Randy Marchany VA Tech Computing Center.
Purpose Intended Audience and Presenter Contents Proposed Presentation Length Intended audience is all distributor partners and VARs Content may be customized.
Installing and maintaining clusters of FreeBSD servers using PXE and Rsync Cor Bosman XS4ALL
Deploying and Managing Windows Server 2012
Module 13: Configuring Availability of Network Resources and Content.
Oracle10g RAC Service Architecture Overview of Real Application Cluster Ready Services, Nodeapps, and User Defined Services.
System Administration and Basic Functionality Version 4.0 – September 2007 Q-Advisor Quick Start.
Purpose Intended Audience and Presenter Contents Proposed Presentation Length Intended audience is all distributor partners and VARs Content may be customized.
Puppetize It! An Introduction to Puppet Mike Seda CEO, Seda Systems, Inc.
AI project components: Facter and Hiera
MSc. Miriel Martín Mesa, DIC, UCLV. The idea Installing a High Performance Cluster in the UCLV, using professional servers with open source operating.
By Rashid Khan Lesson 10-From Here to There: Remote Installation of the Windows XP Professional Client.
Scott Drucker, Systems Engineer Migrating to Microsoft Vista with WinINSTALL.
1 Week #10Business Continuity Backing Up Data Configuring Shadow Copies Providing Server and Service Availability.
INFSO-RI Enabling Grids for E-sciencE Installation of an APT+kickstart server Giuseppe Platania INFN Catania EMBRACE Tutorial Clermont-Ferrand,
1 PUPPET AND DSC. INTRODUCTION AND USAGE IN CONTINUOUS DELIVERY PROCESS. VIKTAR VEDMICH PAVEL PESETSKIY AUGUST 1, 2015.
© 2008 Cisco Systems, Inc. All rights reserved.CIPT1 v6.0—1-1 Getting Started with Cisco Unified Communications Manager Installing and Upgrading Cisco.
C. Aiftimiei, E. Ferro / January LCFGng server installation Cristina Aiftimiei, Enrico Ferro INFN-LNL.
Puppet at MWT2 Sarah Williams Indiana University.
Operating Environment. Installation and Upgrade Options Solaris suninstall program Solaris Web Start Installation Custom Jumpstart procedure Standard.
Cloud Installation & Configuration Management. Outline  Definitions  Tools, “Comparison”  References.
Overview of cluster management tools Marco Mambelli – August OSG Summer Workshop TTU - Lubbock, TX THE UNIVERSITY OF CHICAGO.
Operated by Los Alamos National Security, LLC for NNSA U N C L A S S I F I E D Slide 1 Institutional Install of Red Hat Enterprise Linux From One CD In.
1 Policy Based Systems Management with Puppet Sean Dague
BY: SALMAN 1.
BY: SALMAN.
Oracle Solaris Zones Study Purpose Only
Windows Server Administration Fundamentals
Pete Gronbech, Kashif Mohammad and Vipul Davda
Presentation transcript:

Deploying Data Centers with Puppet – A user’s perspective May 27, 2010 © NYSE Euronext. All Rights Reserved.

Objective of this Presentation Share to the Puppet community the solution arrived by NYSE Euronext’s System Architecture and Engineering (SAE) team to address the technical challenges imposed by the Business Strategy of the company: Consolidate various Data Centers across the globe in two brand-new state-of-the-art facilities, one in the US and another in Europe; Adapt a Global standard process to build and configure servers and applications across multiple countries and teams; Quickly deploy changes in large scale in an automated way.

Main Tools Used in the Solution RHEL Kickstart A single, very frugal kickstart profile for each RHEL release for the entire company. RH Network Satellite Manage packages of the OS, Third Parties and Home-grown RPMs. Manage patches and upgrades. Puppet Work horse of this model Common framework to apply and configure the Global standard server configuration and particularities of each environment and applications.

The Three Layer Approach We have organized our configuration needs in three levels: Base: All NYX global customizations on top of the RHEL default settings. These must be propagated across the enterprise. Example: global standard size for /usr file system, kernel parameter kernel.core_pattern = /var/crash/core.%e.%p.%h Zone (or environment or network): Configuration items common to a specific network or environment. Zone layer inherits the Base layer with the ability to override anything if necessary. Example: /etc/resolv.conf file across one given production network. Application: Any specific configuration required by any given application. This layer inherits the Zone layer and has the ability to change anything set on the previous two layers. Example: UTP application requires a 50GB /appl file system and a “qt” package installed.

The Puppet Modules behind of this approach

An example of the modules-base manifests NYX Global Build customizes 250+ items on top of RHEL default OS All servers include the entire modules-base via the module name ‘base’ Example: class base::setup { include ssh::setup include banners::setup include resolver::setup include ntp::setup include sysctl::setup include profile::setup include services::setup include locale::setup include email::setup include yum::setup include crashdump::setup include bootloader::setup include rclocal::setup include sudo::setup include hardware::setup include tcpwrappers::setup include firewall::setup include etc_services::setup }

An example of the modules-base manifests class sysctl::setup { # Configure kernel core dumps sysctl { "kernel.core_pattern": val => “/var/crash/core.%e.%p.%h", ensure => present, } class profile::setup { # Deploy custom /etc/bashrc file { "/etc/profile": owner => root, group => root, mode => 0644, source => "puppet:///profile/etc_profile",

An example of the modules-zones manifests The organization has 20+ zones (and growing) across the globe, including production, QA, development networks, which one with own settings. Example of a zone setting: class trading::setup { $country = 'us' $searchpath = 'nyx.com' $domain = 'nyx.com' $nameservers = [ "10.0.X.X", "10.0.X.X" ] $timeservers = [ "10.0.X.X version 3 prefer", "10.0.X.X" ] $snmp_ro_communities = [ "dfasdfasdfasdf" ] $snmp_rw_communities = [ "sdfasdfasdfasd 127.0.0.1" ] $snmp_dlmods = [ "cmaX /usr/lib64/libcmaX64.so" ] $trapsink = [ "sdfasdfasd" ] $syslogserver = "10.0.X.X" $postfix_mailhost = "mailrelay.nyx.com" $ilo_licensed = "true" $ilo_password = "my_password" # Including the base classes include base::setup }

An example of the modules-app manifests 60+ applications requiring their own settings We try to configure the application puppet manifest to be pluggable on any zone Example of one application manifest: class sg::setup { package { ["libxslt", "libmng"]: ensure => present, } lvm::config_lvm { "tcpdump": mount_point => "/tcpdump", lvname => "ltcpdump", vgname => vg00, lvsize => "5G", fstype => "ext3", owner => “myuser", group => "users", mode => "0755",

How the three layers work together The zone class usually sets variables that will be used by modules-base for configuration. The zone class necessarily includes the modules-base. All servers must belong to one zone. The application module is coded to be pluggable to any zone (i.e. match engine application module can be on a QA environment or production environment) The ability to build anything, anywhere and mimic Production config to QA environment and vice-versa. The modules-app can override settings inherit on modules-zones. The modules-zones can override settings inherit on modules-base. Using puppet, we synchronize the build server process with the latest requirements of the applications.

The Last Piece: the Node Definition File The node definition is the entity that matches the hostname to the zone and application modules. In addition, it has the networking configuration of the server. node "buildtest.nyx.com" { # Zone Class include corplan::setup # Application Class include sg::setup # Networking network::interface::setup {"bond0": ensure => present, config_type => bonded, ip => "10.0.0.100", netmask => "255.255.255.0", slave0 => "eth0", slave1 => "eth1", gateway => "10.0.0.254", arp_target => "10.0.0.254", arp_interval => "3000", restart_network => false, }

NYX Build Server Components DHCP/DNS Server (optional) TFTP / PXE Server Satellite Server or Proxy Apache Server Puppet Server MySQL Server The server resides on a separate network called build network since we do not build any server on productions network.

Automated Installation Process - Overview PreBoot Phase Default kickstart label that executes a perl script via “wget” to register the Serial Number and the MAC address and reboots server. On the Build Server, the register script generates a customized PXE file after looking up Serial Number in mysql database. Custom PXE has hostname and OS version (RHEL4 or RHEL5). PXE Boot for 1st time Server out of the box Phase 0 Start the RHEL installation with the minimum packages and Global Standard File Systems setup and sizes. The kickstart post install script register the new server on the satellite server and assign it to the appropriate channels. Puppet client is installed just before server is rebooted. PXE Boot for 2nd time Server come back from the first reboot Continue

Automated Installation Process – Overview Cont. Phase 1 An init.d script runs puppet for the first time and downloads its own configuration from the puppet server. A node definition is mandatory at this point and puppet client configures server to the NYX Global base (default) configuration and networking. Load lean OS from disk + init script Server reboots for the third time Phase 2 On Phase2 is where Puppet is executed for the last time to configure the server to their final zone (environment) and application settings. The phase 2 execution can be triggered directly from Phase1 init script (in this case is executed on the build network) or can be executed once the server is on the production network. Phase2 init script Server might reboot or execute Phase2 init.d script directly

PreBoot Phase Very simple kickstart profile launched by default PXE label It does nothing than executing a script via wget It registers the server with two parameters: Serial Number and the MAC The script will create a custom PXE boot file with given MAC that contains the RHEL release and the hostname of the server. Example of the kickstart pre-script: %pre SERVER=`grep 'url address' /tmp/anaconda.log | awk '{print $6}'` cd /tmp && wget -q http://${SERVER}/pub/dmidecode chmod +x /tmp/dmidecode SN=`dmidecode | grep "Serial Number" | head -1 | awk '{print $3}'` MAC=`ifconfig | grep HWaddr | awk '{print $5}'` wget -q http://${SERVER}/cgi-bin/register.pl?mac=$MAC\&sn=$SN reboot

Phase 0 Very minimum number of packages installed A single kickstart profile for each RHEL release to the entire organization Very minimum number of packages installed Larger OS File system sizes than the RHEL Default Server is registered to the Satellite Puppet client is installed (puppetd) NYX-Firstscript is set to run on the next reboot via init.d

Phase 0 – Fragment of the Kickstart profile %post --interpreter /bin/sh echo "Installing puppet..." yum -y install puppet facter ruby-rdoc ruby-shadow # Puppet is install via the activation key but by default will run as a daemon echo "Chkconfig'ing puppet off..." chkconfig puppet off # Grab nyx-firstboot script from the satellite or proxy RHN_SERVER=`grep '^serverURL=' /etc/sysconfig/rhn/up2date | cut -d'/' -f3` echo "Detected Puppetmaster/RHN as: $RHN_SERVER" echo "Downloading nyx-firstboot script..." wget -O /etc/init.d/nyx-firstboot http://$RHN_SERVER/pub/glb/nyx-firstboot # Make it executable and make it start on firstboot echo "Installing nyx-firstboot..." chmod 755 /etc/init.d/nyx-firstboot chkconfig --add nyx-firstboot

Phase 1 It is run by the nyx-firstboot init script nyx-firstboot executes puppetd twice: one to configure itself and another to set the server to the base config. nyx-firstboot script command lines that executes puppetd # Get puppet server address, the same as the RHN Proxy/RHN Satellite PUPPET_SERVER=`grep '^serverURL=' /etc/sysconfig/rhn/up2date | cut -d'/' -f3` # Run puppet once to configure itself and get SSL certs auto-signed puppetd -tov --server=$PUPPET_SERVER --tags utilities::puppetclientbootstrap --no-noop # Run puppet again to apply all base build manifests FACTER_sys_building=true puppetd -tov --server=$PUPPET_SERVER --tags sys_building --no-noop

Phase 2 (Last phase) The nyx-phase2 script runs puppetd again, this time puppetd fully executes the puppet manifests which configures the server entirely to the zone and application. The nyx-phase2 is set to execute automatically from init.d OR triggered automatically by nyx-firstboot. Fragment of the script: # Run puppet to apply application specific manifests puppetd -tov --no-noop | /usr/bin/tee /tmp/puppet2b if egrep -q "err:|warning:" /tmp/puppet*; then logger -t nyx-phase2 "Found excessive errors on puppet logs!" else # Shutdown the server - to be shipped to the rack logger -t nyx-phase2 "Shutting down the system! No errors found on the puppet logs!" /usr/bin/poweroff fi

Data Center Deployment: Numbers and Lessons One server gets completely installed in 20 minutes in unattended mode We usually install up to 15 servers in parallel, but we had to upgrade first the puppet master to run on Apache Web Server. The default web server has shown not to be very powerful. Usually, one individual in one day can install up to 50 servers by himself The most difficult part was getting the requirements of each application

Ancillary Tools for This Project Subversion (extremely important): – we had to disseminate the culture of version control among many individuals and teams. – Each layer of the modules and node definitions have its own subversion repositoriy Web Subversion OpenGrok (search the manifests) Redmine (ticket and changes control) Tidal Scheduler – To execute puppet client once the servers are in the production network

Next Steps Run puppetd to deploy changes across the board on the day-by-day basis. This will require more a cultural change and coordination across more departments. Run puppetd in report mode daily (no-intrusive) to detect discrepancies between the reality and the puppet manifests Use puppet dashboard as a central database of Node definitions (called External Node Classifier) Create more custom facts and types in ruby (diminish the number of execs inside the manifests). Use of external resources to automate other configuration such as Veritas Cluster.

Thank you! Q & A