Dave gives a presentation about Puppet at Bazaarvoice. He discusses how Puppet is used in different teams at the company:
1) In legacy infrastructure, Puppet used a traditional client/server model with complex inheritance and DNS-based node definitions, which became difficult to manage over time.
2) In the data infrastructure teams, Puppet uses a "Mothership" model with role-based definitions and Hiera to parameterize classes for reuse. Puppet environments are used for change control.
3) In data services teams, a "masterless" approach is used where each application team maintains their own Puppet code without impacting others. Data is passed in via tags, Hiera,
Dave gives an overview of his experience using Puppet at previous companies. He started using Puppet in 2008 at Bioware where it configured over 14,000 nodes across 5 datacenters. He now works at Bazaarvoice where he uses Puppet in embedded DevOps approaches. Puppet is used by application teams to manage their own operations without centralized operations. Dave also discusses how Puppet is used in different teams at Bazaarvoice, including using a master/client model focused on roles rather than hostnames.
A reusable Puppet module should provide options and flexibility for configuration through parameters rather than being overly prescriptive. This allows users to customize the module for their specific needs. Parameters can control things like file management, package/service options, additional resources, and application configuration. Using patterns like default parameters, options hashes, and templates helps keep modules reusable and configurable.
The document discusses techniques for creating reusable Puppet modules that can adapt to different operating systems and environments. It recommends centralizing module parameters, using qualified variables, isolating operating system diversity in separate classes, and allowing customization through project-specific classes or modules. The document also advocates for monitoring abstractions, filtering user variables, coherent naming conventions, and tools for quickly cloning and customizing modules to build a coherent infrastructure for managing modules.
Burn down the silos! Helping dev and ops gel on high availability websitesLindsay Holmwood
油
HA websites are where the rubber meets the road - at 200km/h. Traditional separation of dev and ops just doesn't cut it.
Everything is related to everything. Code relies on performant and resilient infrastructure, but highly performant infrastructure will only get a poorly written application so far. Worse still, root cause analysis in HA sites will more often than not identify problems that don't clearly belong to either devs or ops.
The two options are collaborate or die.
This talk will introduce 3 core principles for improving collaboration between operations and development teams: consistency, repeatability, and visibility. These principles will be investigated with real world case studies and associated technologies audience members can start using now. In particular, there will be a focus on:
- fast provisioning of test environments with configuration management
- reliable and repeatable automated deployments
- application and infrastructure visibility with statistics collection, logging, and visualisation
Ansible 2.0 includes many new features and improvements such as a revamped core, better error handling, improved inheritance models, new strategies, dynamic includes, refreshed inventory, and additional plugins. It summarizes some of the key new capabilities in Ansible 2.0 and notes that future releases will focus on continued bug fixes, bringing Windows fully out of beta, increased networking support, and improving the community process.
Introducing Assetic: Asset Management for PHP 5.3Kris Wallsmith
油
The performance of your application depends heavily on the number and size of assets on each page. Even your blazingly fastest Symfony2 application can be bogged down by bloated Javascript and CSS files. This session will give you a basic introduction to PHP's new asset management framework, Assetic, and explore how it integrates with Symfony2 for a pleasant, common sense developer experience.
The document discusses techniques for creating reusable Puppet modules. It recommends using parameters, qualified variables, and OS-specific classes to handle diversity across operating systems. Default values should be set for user variables, and users' variables can be filtered. Modules should follow consistent naming conventions and have predictable behaviors. The document also describes how to quickly clone an existing module, customize it for a new project, add monitoring abstractions, and create a coherent infrastructure for sharing modules. The goal is to more easily manage modules and updates through templates and a "Modules Machine."
This document provides an overview of different approaches to theming in Drupal: the "noob way" of using direct PHP/HTML, the Drupal 6 method of using theme functions, and the Drupal 7 Render API method of generating renderable arrays. It discusses advantages of the Render API like content alteration hooks, caching and performance. Key aspects covered include the renderable array structure, the use of #type, #theme, #states and #attached properties. The document recommends generating HTML as late as possible and using the Render API and caching to improve performance.
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)arcware
油
The document outlines 10 things that every WordPress plugin developer should know, including enabling debugging, prefixing functions, enqueuing scripts and styles properly, only including JS/CSS on admin pages, using AJAX in the admin, adding extensibility hooks, supporting multisite, internationalization, security, and using helpful functions and constants. It provides examples and explanations for each topic to help plugin developers write more effective and secure code.
The document provides an overview of WordPress hooks and custom post types.
It discusses how hooks allow plugins to modify WordPress' workflow and content through actions and filters. It also explains how plugins can define their own hooks and callbacks.
The document then covers how to create and manage custom post types through the register_post_type() function. It outlines many of the arguments that can be passed to register_post_type() to configure aspects like labels, capabilities, hierarchical structure, and permalinks for the custom post type.
In summary, the document recaps how plugins can utilize hooks to modify WordPress and introduces custom post types as a way for plugins to manage their own custom content types and
This is my speech at PHPDAY2011
WordPress for developers:
WordPress features overview
Custom type and Taxonomy
Routing and rewrite rules
Custom query and manipulation
Cache tips
Debugging tools
This document provides an overview of a PuppetCamp presentation on using Puppet for system administrators. The presenter, Stephen Wallace, has 20 years of experience in system administration roles. He will discuss how Puppet can help achieve goals like reusability, reduced support workload, improved monitoring, and documentation for system administrators. He will also cover topics like getting started with Puppet without programming experience, using tools like Hiera and Augeas, and how Puppet can help with provisioning, documentation, and disaster recovery.
Puppi is a Puppet modules that drives Puppet's knowledge of the Systems to a command line tool that you can use to check services availability, gather info on the system and deploy application with a single command.
Oliver Hookins presents on Nokia's use of Puppet for application deployment and automation. Some key points:
- Nokia uses Puppet to deploy diverse applications across environments in a consistent way and reduce errors.
- The initial Puppet system led to new problems around node definitions and lack of testing. They aimed to improve with BDD, better versioning, and more testing.
- Their goals included taking a more traditional software development approach, improving developer tools, and enabling easier deployments.
- Current work includes improving testing with Jenkins, moving to an API approach to remove host/role specifics, and developing an ENC.
This document discusses Puppet modules and provides examples of how to structure modules to allow for customization and reuse. It outlines 10 design rules for Example42 modules, including separating configuration data from module logic, providing choices for configuration file supply, configuring with defaults but allowing customization, and allowing management of general module behavior. The document provides code examples demonstrating how to implement these rules in Puppet modules.
The document summarizes changes to the field system in Drupal 8. Key points include:
- Fields and field storage have been unified and moved into configuration entities for improved portability and management. Field definitions and instances are now configuration entities.
- Field types, formatters and widgets are now plugins for improved extensibility. Field item storage and access is standardized through interfaces.
- The field API and entity API have been merged, allowing fields to work across all entity types through a common storage system and set of APIs.
Java to JRuby translation of Akka's first tutorial to compute Pi using Madhava-Leibniz series. (http://akka.io/docs/akka/1.1.2/intro/getting-started-first-java.html)
This document discusses hooks, events, and the event dispatcher in Drupal 8. It provides an overview of hooks and why they were replaced by events, which allow for more object-oriented and loosely coupled code. It describes how to create event subscribers by implementing the EventSubscriberInterface and defining subscriber methods. It also covers how to dispatch events by extending the base Event class and calling the dispatch method on the event dispatcher service.
The state of hooking into Drupal - DrupalCon DublinNida Ismail Shah
油
https://events.drupal.org/dublin2016/sessions/state-hooking-drupal
Major portion of drupal development has been油about hooks. We have all used them. But there have been talks about replacing the procedural hook system in Drupal with its Object oriented version - Events. We are already on the track and we, as of now, are required to use Events for many things in Drupal 8.油
This session will mainly elustrate:
How hooks work in Drupal.油
How we are on the track of moving from hooks to Events in Drupal 8
Where we are? What all do we need Events油for and油where we are still stuck with hooks.
When to alter and when to fire an event.
How to create and dispatch an Event from your module.
How to listen or subscribe to an Event from your custom Event or an event from core.
How to expose custom hooks in Drupal 8.
Attendees should be familiar with:
Basic Drupal 8 module development.
Basic OOP principles and practices.
Symfony components used in D8.
油 油After attending this session attendees will be able to:
Create their custom events in Drupal 8
Subscribe to the events from core and other modules and to their custom events too.
Will have a knowledge of where to explore the events and where we have to still use hooks.
Puppet Camp Berlin 2014: Manageable puppet infrastructurePuppet
油
This document discusses setting up a manageable Puppet infrastructure. It outlines common pitfalls like unmaintainable codebases and collaboration difficulties. Quick wins to address pitfalls include moving data to Hiera, implementing code reviews, and refactoring constantly. The document recommends designing around server roles, storing all things data in Hiera, and facilitating deployment and workflow through environments and R10k. It provides examples of setting up roles, using different Hiera data types, and Hiera-related functions to retrieve and generate resources from data.
The document summarizes tips and tricks discussed at a meetup for PHP developers in Poznan, Poland. It covers accessing request parameters in Symfony controllers, naming strategies in Doctrine, using the app.user variable and Twig, configuring Swiftmailer for email delivery, automatically testing services, ParamConverters, DI/IoC bundles like JMSDiExtraBundle, JavaScript translation bundles, and AngularJS integration.
Puppet is a configuration management tool that allows systems to be declared and maintained in a desired state. It uses a declarative domain-specific language to describe system configuration. Resources are used to model system components like packages, services, files and users. Modules bundle related manifests, files and templates. A Puppet master stores configurations and agents pull configurations from the master to make necessary changes. After runs, agents report back metrics and logs to provide visibility into infrastructure changes.
The document provides rules for forming comparative adjectives in English. It gives examples of adding "-er" to one-syllable adjectives like "fast" to form "faster". For adjectives ending in "e", just add "-r". For adjectives ending in "y", change "y" to "i" and add "-er". Some adjectives double the final consonant and add "-er" to form the comparative.
Introducing Assetic: Asset Management for PHP 5.3Kris Wallsmith
油
The performance of your application depends heavily on the number and size of assets on each page. Even your blazingly fastest Symfony2 application can be bogged down by bloated Javascript and CSS files. This session will give you a basic introduction to PHP's new asset management framework, Assetic, and explore how it integrates with Symfony2 for a pleasant, common sense developer experience.
The document discusses techniques for creating reusable Puppet modules. It recommends using parameters, qualified variables, and OS-specific classes to handle diversity across operating systems. Default values should be set for user variables, and users' variables can be filtered. Modules should follow consistent naming conventions and have predictable behaviors. The document also describes how to quickly clone an existing module, customize it for a new project, add monitoring abstractions, and create a coherent infrastructure for sharing modules. The goal is to more easily manage modules and updates through templates and a "Modules Machine."
This document provides an overview of different approaches to theming in Drupal: the "noob way" of using direct PHP/HTML, the Drupal 6 method of using theme functions, and the Drupal 7 Render API method of generating renderable arrays. It discusses advantages of the Render API like content alteration hooks, caching and performance. Key aspects covered include the renderable array structure, the use of #type, #theme, #states and #attached properties. The document recommends generating HTML as late as possible and using the Render API and caching to improve performance.
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)arcware
油
The document outlines 10 things that every WordPress plugin developer should know, including enabling debugging, prefixing functions, enqueuing scripts and styles properly, only including JS/CSS on admin pages, using AJAX in the admin, adding extensibility hooks, supporting multisite, internationalization, security, and using helpful functions and constants. It provides examples and explanations for each topic to help plugin developers write more effective and secure code.
The document provides an overview of WordPress hooks and custom post types.
It discusses how hooks allow plugins to modify WordPress' workflow and content through actions and filters. It also explains how plugins can define their own hooks and callbacks.
The document then covers how to create and manage custom post types through the register_post_type() function. It outlines many of the arguments that can be passed to register_post_type() to configure aspects like labels, capabilities, hierarchical structure, and permalinks for the custom post type.
In summary, the document recaps how plugins can utilize hooks to modify WordPress and introduces custom post types as a way for plugins to manage their own custom content types and
This is my speech at PHPDAY2011
WordPress for developers:
WordPress features overview
Custom type and Taxonomy
Routing and rewrite rules
Custom query and manipulation
Cache tips
Debugging tools
This document provides an overview of a PuppetCamp presentation on using Puppet for system administrators. The presenter, Stephen Wallace, has 20 years of experience in system administration roles. He will discuss how Puppet can help achieve goals like reusability, reduced support workload, improved monitoring, and documentation for system administrators. He will also cover topics like getting started with Puppet without programming experience, using tools like Hiera and Augeas, and how Puppet can help with provisioning, documentation, and disaster recovery.
Puppi is a Puppet modules that drives Puppet's knowledge of the Systems to a command line tool that you can use to check services availability, gather info on the system and deploy application with a single command.
Oliver Hookins presents on Nokia's use of Puppet for application deployment and automation. Some key points:
- Nokia uses Puppet to deploy diverse applications across environments in a consistent way and reduce errors.
- The initial Puppet system led to new problems around node definitions and lack of testing. They aimed to improve with BDD, better versioning, and more testing.
- Their goals included taking a more traditional software development approach, improving developer tools, and enabling easier deployments.
- Current work includes improving testing with Jenkins, moving to an API approach to remove host/role specifics, and developing an ENC.
This document discusses Puppet modules and provides examples of how to structure modules to allow for customization and reuse. It outlines 10 design rules for Example42 modules, including separating configuration data from module logic, providing choices for configuration file supply, configuring with defaults but allowing customization, and allowing management of general module behavior. The document provides code examples demonstrating how to implement these rules in Puppet modules.
The document summarizes changes to the field system in Drupal 8. Key points include:
- Fields and field storage have been unified and moved into configuration entities for improved portability and management. Field definitions and instances are now configuration entities.
- Field types, formatters and widgets are now plugins for improved extensibility. Field item storage and access is standardized through interfaces.
- The field API and entity API have been merged, allowing fields to work across all entity types through a common storage system and set of APIs.
Java to JRuby translation of Akka's first tutorial to compute Pi using Madhava-Leibniz series. (http://akka.io/docs/akka/1.1.2/intro/getting-started-first-java.html)
This document discusses hooks, events, and the event dispatcher in Drupal 8. It provides an overview of hooks and why they were replaced by events, which allow for more object-oriented and loosely coupled code. It describes how to create event subscribers by implementing the EventSubscriberInterface and defining subscriber methods. It also covers how to dispatch events by extending the base Event class and calling the dispatch method on the event dispatcher service.
The state of hooking into Drupal - DrupalCon DublinNida Ismail Shah
油
https://events.drupal.org/dublin2016/sessions/state-hooking-drupal
Major portion of drupal development has been油about hooks. We have all used them. But there have been talks about replacing the procedural hook system in Drupal with its Object oriented version - Events. We are already on the track and we, as of now, are required to use Events for many things in Drupal 8.油
This session will mainly elustrate:
How hooks work in Drupal.油
How we are on the track of moving from hooks to Events in Drupal 8
Where we are? What all do we need Events油for and油where we are still stuck with hooks.
When to alter and when to fire an event.
How to create and dispatch an Event from your module.
How to listen or subscribe to an Event from your custom Event or an event from core.
How to expose custom hooks in Drupal 8.
Attendees should be familiar with:
Basic Drupal 8 module development.
Basic OOP principles and practices.
Symfony components used in D8.
油 油After attending this session attendees will be able to:
Create their custom events in Drupal 8
Subscribe to the events from core and other modules and to their custom events too.
Will have a knowledge of where to explore the events and where we have to still use hooks.
Puppet Camp Berlin 2014: Manageable puppet infrastructurePuppet
油
This document discusses setting up a manageable Puppet infrastructure. It outlines common pitfalls like unmaintainable codebases and collaboration difficulties. Quick wins to address pitfalls include moving data to Hiera, implementing code reviews, and refactoring constantly. The document recommends designing around server roles, storing all things data in Hiera, and facilitating deployment and workflow through environments and R10k. It provides examples of setting up roles, using different Hiera data types, and Hiera-related functions to retrieve and generate resources from data.
The document summarizes tips and tricks discussed at a meetup for PHP developers in Poznan, Poland. It covers accessing request parameters in Symfony controllers, naming strategies in Doctrine, using the app.user variable and Twig, configuring Swiftmailer for email delivery, automatically testing services, ParamConverters, DI/IoC bundles like JMSDiExtraBundle, JavaScript translation bundles, and AngularJS integration.
Puppet is a configuration management tool that allows systems to be declared and maintained in a desired state. It uses a declarative domain-specific language to describe system configuration. Resources are used to model system components like packages, services, files and users. Modules bundle related manifests, files and templates. A Puppet master stores configurations and agents pull configurations from the master to make necessary changes. After runs, agents report back metrics and logs to provide visibility into infrastructure changes.
The document provides rules for forming comparative adjectives in English. It gives examples of adding "-er" to one-syllable adjectives like "fast" to form "faster". For adjectives ending in "e", just add "-r". For adjectives ending in "y", change "y" to "i" and add "-er". Some adjectives double the final consonant and add "-er" to form the comparative.
This document discusses important factors to consider when hiring a lawyer for a divorce. It recommends looking for a lawyer who will be proactive in implementing a long-term strategy, is knowledgeable about family law, treats the client with respect, is cost-conscious, promptly returns calls, acknowledges limitations, and pursues negotiations to settle when possible. Divorce can be very expensive and leave both parties in financial hardship, so it is important to choose a lawyer carefully.
The document discusses job specifications, which describe the knowledge, skills, education, experience, and abilities needed to perform a particular job. A job specification includes the required experience in years, necessary skills, knowledge, and characteristics based on a job analysis. It also lists the required and preferred education levels such as degrees, training, or certifications. An example is provided of a marketing manager job specification detailing responsibilities, experience requirements, education, skills, knowledge, and characteristics.
1. Makalah ini membahas tentang tugas dan tanggung jawab guru dalam proses pembelajaran. Guru memainkan peranan penting sebagai administrator pendidikan, edukator, dan konselor.
2. Sebagai administrator, guru bertanggung jawab mengelola kelas dan memfasilitasi proses belajar mengajar. Sebagai edukator, guru bertugas mendidik siswa secara holistik. Sebagai konselor, guru memberikan bimbingan kepada siswa.
3. Tug
Just under half of all marriages in Australia end in divorce, with over 47,000 divorces occurring in 2013 alone. Communication problems, incompatibility between partners, infidelity, abusive behavior, and external pressures are the most common reasons cited for divorce. The likelihood of divorce increases the longer a marriage lasts, with over a quarter of marriages ending in divorce after 20 years.
Voltmeter adalah alat ukur tegangan listrik. Makalah ini menjelaskan konfigurasi dan cara kerja voltmeter dan multimeter, termasuk komponen-komponennya, batas ukur, sensitivitas, dan efek pembebanan. Contoh soal juga diberikan untuk mendemonstrasikan cara menghitung tahanan pengali pada multimeter rangkuman ganda.
Through the magic of virtualization technology (Vagrant) and Puppet, a companion Enterprise grade provisioning technology, we explore how to make the complex configuration game a walk in the park. Bring new team members up to speed in minutes, eliminate variances in configurations, and make integration issues a thing of the past.
Welcome to the new age of team development!
Sally and Leo use infrastructure as code practices like Cucumber, ServerSpec, Vagrant, and Ansible to automate the provisioning and configuration of a web server. They write behavior tests in Cucumber and infrastructure tests in ServerSpec. Vagrant is used to provision a virtual machine, and Ansible configures the server. By tying the tests to the provisioning code, they can now repeatedly build servers that are known to meet requirements.
The document discusses how immutable infrastructure can be achieved through Puppet by treating systems configuration as code. Puppet allows defining systems in code and enforcing that state through automatic idempotent runs, compensating for inherent system mutability. This brings predictability to infrastructure and allows higher level operations by establishing a foundation of reliable, known states.
This document discusses using Puppet and related tools to automate the configuration and provisioning of development environments and servers. It covers using Vagrant and Puppet to set up local virtual machine environments, managing configurations with Puppet and Hiera, structuring code according to roles and profiles, integrating with version control and the Puppet Forge, and monitoring changes with tools like the Puppet Dashboard and MCollective. The document provides an overview of best practices and strategies for implementing infrastructure as code with Puppet.
Ansible, voyage au centre de l'automatisationMickael Hubert
油
Voici ma pr辿sentation d'Ansible lors du meetup Sacr辿e Tech de Reims.
@SacreeTech
sacreetech@gmail.com
- Pr辿sentation d'Ansible
- L'installation
- Le vocabulaire
- Les best practices
- Use case chez Allo-Media
lien de la pr辿sentation sur Gslides: https://bit.ly/31MZgUy
This document summarizes the key options and methods for managing files using Puppet, including:
1. The file resource type which can specify a file's source location or content template.
2. The concat module which concatenates file fragments in a defined order.
3. The file_line resource which manages single lines in files.
4. The inifile module for managing ini-style configuration files.
5. The Augeas tool for advanced parsing and editing of complex configuration files.
PuppetDB: Sneaking Clojure into Operationsgrim_radical
油
The document provides an overview of PuppetDB, which is a system for storing and querying data about infrastructure as code and system configurations. Some key points:
- PuppetDB stores immutable data about systems and allows querying of this data to enable higher-level infrastructure operations.
- It uses techniques like command query responsibility separation (CQRS) to separate write and read pipelines for better performance and reliability.
- The data is stored in a relational database for efficient querying, and queries are expressed in an abstract syntax tree (AST)-based language.
- The system is designed for speed, reliability, and ease of deployment in operations. It leverages techniques from Clojure and the JVM.
Puppet is used at Janrain to provision cloud servers, deploy applications, and manage infrastructure in an automated and repeatable way. Key aspects include:
- Cloud servers are provisioned using a Ruby script that launches instances with Puppet pre-configured via cloud-init.
- Puppet signs certificates and installs a base configuration including users, SSH keys, common applications, and monitoring tools.
- Version control and environments are used to collaborate and safely roll out changes.
- Puppet manages DNS, storage volumes, application deployments and more, keeping infrastructure in a known state.
- Tools like Puppetcommander help avoid load issues and keep Puppet runs orderly as the infrastructure scales
A year ago, I was a committed VPS and dedicated-machine deployer. I thought the cloud imposed silly restrictions - how dare you take away my shell account! Whaddya mean I can't save files locally? Since then, I've had some interesting experiences. I've worked on big cloud-deployed systems, and certain large traditionally-deployed systems, and I've seen how a lot of the decisions that you're ... encouraged to make when designing an app to run in the cloud. Most interestingly, I've discovered how those same decisions can make for a much better app regardless of where it'll end up. In this talk, I'll share those architectural patterns with you, and show why they work. Hopefully, I'll convince all of you to build cloud castles -- even if you've got your foundation firmly on the ground.
This document provides an overview of strategies for upgrading and refactoring Puppet code. It begins with a brief history of breaking changes in Puppet versions from 0.25 to 8. It then discusses techniques for code refactoring such as feature flags and parallel files. It also covers testing and rollout approaches like Noop mode and canary testing. The presentation concludes with a discussion of continuous integration and an invitation to future live streaming sessions.
Puppet getting started will show the different components used in puppet environments, starting with facter and puppet to different webinterfaces like puppet enterprise console and foreman. It will also cover an exemplary design for scaling the puppet master and for development livecycle of modules. Furthermore an example for design of modules will be given.
Talk from Puppet Camp Paris 2015 by Nicolas Brousse and Julien Fabre, presenting a Continuous Delivery workflow used by the Operations Teams that allowed them to do over 10,000 puppet changes deployment in 2014.
The document provides an overview and quick start guide for learning Puppet. It discusses what Puppet is, how to install a Puppet master and agent, Puppet modules and templates, and looping elements in templates. The guide outlines three sessions: 1) configuring a master and agent, 2) using modules and templates, and 3) looping in templates. It provides configuration examples and explains how to generate files on the agent from templates using Puppet runs.
This document discusses using Puppet to program IT infrastructures. It introduces Puppet as a tool for automating infrastructure management and provisioning. Puppet uses a declarative language and allows infrastructure to be coded and version controlled. The document provides an overview of Puppet architecture with Master and Agent nodes and explains how nodes are defined and organized using classes and modules. It also shows examples of Puppet code for configuring common services and managing files and templates.
Short lived immutable servers with masterless puppetNeil Millard
油
Neil Millard describes the components required to run puppet in a masterless configuration. This allows you to boot immutable servers quickly, and the option of tearing them down and replacing/rebuilding quickly.
This was presented at Puppetcamp London 2017
This is story of our journey from SaltStack to Puppet and beyond. This talk will answer following questions:
- why we moved from SaltStack
- why Puppet was chosen
- how to use Puppet OpenSource in painless way
- which orchestration tool to use with Puppet
- what is next
The document provides troubleshooting information for common Puppet failures, including:
- Failures such as not finding Puppet, connecting to Puppet, getting certificates, compiling or applying catalogs.
- Suggested troubleshooting steps for connectivity issues like checking DNS, /etc/hosts, firewalls.
- Details on using the Puppet REST API to retrieve certificates and catalogs for troubleshooting.
- How to use debugging options when compiling or applying to get more information on failures.
2. Hi, my name is Dave.
DevOps Engineer at Bazaarvoice.
Started working with puppet in 2008 while working at
Bioware. First version was 0.24.
At Bioware, puppet configured over 14k nodes that
comprised of web servers, databases and game
servers.
All 5 datacenters (in California, Virginia, Ireland,
Australia and Texas) housed puppet managed nodes
that all reported back to a centralized puppet
dashboard.
My contact info:
http://www.linkedin.com/in/jamesbarcelo
3. Bazaarvoice Plug
We do embedded DevOps!
Application teams are responsible for their
applications operation success.
2.0 stack is 100% in Amazon!
Conferences!
Work on awesome projects with spiffy tech like
Cassandra or ElasticSearch.
Send me your resume!
Dave.barcelo@bazzarvoice.com
4. Preview presentation
Puppet in the legacy stack.
Puppet in the Data Infrastructure Team.
Focus on client/server.
Puppet in the Data Services Team.
Focus on masterless puppet.
5. Puppet in the Legacy Infrastructure
Traditional puppet use with client/server.
Multiple levels of inheritance.
Puppet managed instances were configured
according to DNS naming convention.
node /my-hostname/ {
}
6. Some issues encountered:
Very hard to work with. Very complex.
Large codebase. Adds to complexity.
No confidence in making changes. Side effects
feared after code change. A jinga tower of puppet
code.
Too many pivot points. Many places to configure.
Adds to complexity.
Lots of code rot. Had not been refactored.
8. Architecture
Each server type we care about will be referenced by
its role. We only care about roles, not hostnames.
Centered around an uber IT tools server that runs
everything ops (including puppet) to do work in an
environment. The Mothership.
Hiera and parameterized classes will be used to create
generic puppet modules that can be reused for
different roles.
Development will be centered on using puppet
environments on the Mothership to protect devs from
stepping on each other.
9. Mothership
Contains a cocktail of different application tools
for doing work in the environment. Tools
included:
Mcollective/ActiveMQ
Puppet server
Puppet managed operation scripts.
Motherships configured to be highly available in
regular AWS fashion(Autoscaling, cluster multiple
activeMQ, etc).
Advertises multiple puppet environments that
clients can switch between via environments.
12. Methods of passing in data
Getting environment data into puppet
configuration.
Hiera datastore.
Puppet stdlib/tags.txt
Cloud formation parameters Universe, VPC
13. Puppet Stdlib/facts.d
Bootstrap process (EC2 user data) populates
/etc/facter/facts.d/tags.txt with mappings. These
mappings become facters.
Example of data in tags.txt:
Universe value.
Ec2 metadata.
/etc/facter/facts.d/tags.txt:
universe=dev
Tag_region=us-east-1
14. Hiera datastore
Hiera is used extensively where different data
needs to be passed into puppet according to
context. Different contexts would include:
Amazon region.
Instance role.
Universe.
Example usage:
$app_version = hiera(app_version, nil)
18. Puppet code on the Mothership
The files that do the things:
/etc/puppet/puppet.conf
/etc/puppet/env/global_hieradata/environments.j
son
/etc/puppet/puppetmaster.conf
/etc/puppet_env/{puppet_env}/
manifests/
modules/
27. Architecture
Still keeping bits of the Mothership project:
Applications/Services scoped in zookeeper by
Universe.
Emphasis is put on making things simpler.
Puppet code will not be monolithic. Individual
application teams will only need to maintain
there own modules/manifests.
Changes to modules/manifests will not impact
other teams.
28. Methods of passing in data
The usual suspects:
Puppet stdlib/tags.txt.
Hiera.
Cloud formation parameters Universe, VPC
Some new ones:
EC2 data/metadata -> facter.
Zookeeper.
Cloud formation parameters - DeployTag
32. Puppet code in Masterless
No more Mothership. All work is done via
puppet apply.
/etc/hiera.yaml
/etc/puppet/manifests/{role}.pp
/etc/puppet/manifests/00_common.pp
/etc/puppet/manifests/01_users.pp
/etc/puppet/modules/
#5: Talk will be based in AWS.Explain facter/mcollectiveGoing to make these talks from perspective of:Architecture (High light)Puppet Execution flowDev workflowDisclamer about the word we