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.
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.
Presentation on how Puppet has been introduced in Seat Pagine Gialle to automate system administration tasks and easy the cooperation between Ops and Others.
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 discusses new features and changes in Puppet 4, including Puppet Server running on JVM, packaging improvements, environment configuration options, language features like lambdas and HEREDOC support, type validation, and deprecations like node inheritance and hyphens in names. It highlights four key powers of Puppet 4: performance, scalability, measurability, and flexibility in dealing with complex data types natively. Upgrading to Puppet 4 requires changes to comply with deprecations and testing to ensure compatibility.
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 provides troubleshooting information for Puppet failures. It begins with common failure messages and their potential causes such as "can't find puppet", "can't connect to puppet", and "can't get certificate". It then covers tools for investigating failures like the Puppet REST API, debugging Puppet compiles and applies, and checking for issues via notify resources and debug scripts. The document outlines techniques for locating problems with nodes, workers, variables, and resources conflicting or going stale.
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner) Puppet
Puppet 4 introduces several new features and changes including improved performance, scalability, measurability and flexibility. It features a new Puppet Server based on Clojure and Trapperkeeper, packaging changes, improved environment handling, r10k for managing environments from git, new language features like lambdas and EPP templates, improved data binding and overriding, stronger typing support, and various deprecations around node inheritance, hyphens in names, and other changes. Upgrading requires testing modules against the new version and addressing any compatibility issues.
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.
Presentation on how Puppet has been introduced in Seat Pagine Gialle to automate system administration tasks and easy the cooperation between Ops and Others.
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 discusses new features and changes in Puppet 4, including Puppet Server running on JVM, packaging improvements, environment configuration options, language features like lambdas and HEREDOC support, type validation, and deprecations like node inheritance and hyphens in names. It highlights four key powers of Puppet 4: performance, scalability, measurability, and flexibility in dealing with complex data types natively. Upgrading to Puppet 4 requires changes to comply with deprecations and testing to ensure compatibility.
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 provides troubleshooting information for Puppet failures. It begins with common failure messages and their potential causes such as "can't find puppet", "can't connect to puppet", and "can't get certificate". It then covers tools for investigating failures like the Puppet REST API, debugging Puppet compiles and applies, and checking for issues via notify resources and debug scripts. The document outlines techniques for locating problems with nodes, workers, variables, and resources conflicting or going stale.
Puppet Camp Paris 2015: Power of Puppet 4 (Beginner) Puppet
Puppet 4 introduces several new features and changes including improved performance, scalability, measurability and flexibility. It features a new Puppet Server based on Clojure and Trapperkeeper, packaging changes, improved environment handling, r10k for managing environments from git, new language features like lambdas and EPP templates, improved data binding and overriding, stronger typing support, and various deprecations around node inheritance, hyphens in names, and other changes. Upgrading requires testing modules against the new version and addressing any compatibility issues.
This document discusses common anti-patterns, pitfalls, and bad practices when using Puppet, including: using boolean facts ambiguously, expecting C-like values for parameters, excessively using "if defined()" checks, relying on large numbers of exec resources, and depending on dynamic scoping. The author recommends avoiding these practices in favor of more deterministic approaches like using Hiera for shared values and parameters, creating wrapper classes for shared dependencies, using single robust scripts instead of many exec resources, and avoiding dynamic scoping which can cause unpredictable behavior.
This document provides an overview of dependency injection and describes how to build a simple dependency injection container in PHP 5.3 using anonymous functions (lambdas). It discusses how the container can be used to manage parameters, describe object creation through lambdas, handle object scoping, and provide a unified interface. The container allows decoupling object dependencies and makes configuration and customization natural. Anonymous functions allow capturing context and scope, which is leveraged to implement features like shared instances. Overall, the document shows how lambdas can power a fully-featured yet concise dependency injection container in PHP.
The document discusses Symfony2, an open-source PHP web application framework. It provides an overview of its components including routing, dependency injection, and templating. It also describes how Symfony uses an MVC architecture and emphasizes loose coupling and flexibility.
This document summarizes some new features in PHP 5.4:
- Array syntax can now be written more concisely using square brackets instead of array functions.
- PHP 5.4 includes a built-in web server for development purposes, allowing PHP scripts to be run without Apache.
- Traits allow sharing of methods across classes to reduce code duplication, similar to mixins in Ruby.
- Closures now support accessing properties of the enclosing class scope via $this.
This document provides an overview of the Standard PHP Library (SPL) including common data structures like stacks, queues, heaps and iterators. It discusses how SPL extensions like SplSubject and SplObserver can be used to implement observer patterns. Various real-world open source projects using SPL are cited as examples. The document encourages involvement in improving and expanding SPL through code contributions and community engagement.
The document discusses various techniques for building command line interfaces with PHP including:
- Parsing command line arguments with getopt() and analyzing argc and argv
- Using the readline extension for interactive input with command history and autocompletion
- Scheduling tasks from the command line with cronjobs
- Getting and setting environment variables from the command line
The document provides code examples for each technique and discusses advantages of different approaches like using the PEAR or Zend frameworks for getopt() parsing. Interactive input with readline is highlighted for building command shells.
The document discusses the Standard PHP Library (SPL) which provides common data structures and interfaces in PHP. It describes various iterator interfaces and classes that can be used to iterate over data in a consistent manner. These include interfaces like Iterator and classes like RecursiveIteratorIterator, FilterIterator, ArrayIterator, DirectoryIterator, and SplFileInfo. It also discusses other SPL components like exceptions, autoloading functions, and data structures.
The document discusses monitoring and analyzing memory usage in Raku processes. It describes using the getrusage(2) system call to retrieve resident set size (RSS) and other memory statistics for a process. It then presents the ProcStats module, which allows periodically sampling getrusage(2) data over time to track RSS and detect changes from an initial baseline. The module outputs differences in memory statistics compared to the first sample, ignoring unchanged values. This provides a concise way to monitor for increases in a process's memory footprint over time.
Face it, backticks are a pain. BASH $() construct provides a simpler, more effective approach. This talk uses examples from automating git branches and command line processing with getopt(1) to show how $() works in shell scripts.
Variable interpolation is a standard way to BASH your head. This talk looks at interpolation, eval, ${} handling and "set -vx" to debug basic variable handling.
The Perforce Web Content Management System development team, lacking a pre-existing solution in PHP, designed and implemented their own object model and record layer to ease the interaction of the system with the Perforce Server. This session will focus on how users can access files in Perforce via a simple CRUD API, the subsystems exposed, and their usage.
The document discusses the Standard PHP Library (SPL) which provides standard interfaces, classes, and functions for common programming problems. It summarizes key SPL components like autoloading classes using spl_autoload_register(), iterators for arrays and directories, and interfaces like ArrayAccess, Iterator, and Countable. The Observer pattern implementation using SplSubject and SplObserver is also covered.
This document discusses using PHP for both web and desktop applications. It introduces PHP-GTK, which allows PHP to create graphical desktop applications with a native look and feel across platforms. It provides examples of creating windows, containers, working with signals and the main loop. The document also discusses installing PHP-GTK, some key considerations for desktop applications, and examples of creating widgets like trees and working with models.
Tutorial dos conceitos básicos de Puppet, uma ferramenta de gestão automática de configuração de servidores.
Essa apresentação está incompleta, pois foi parte de um curso básico sobre Puppet.
This talk describes refactoring FindBin::libs from Perl5 to Raku: breaking the module up into functional pieces, writing the tests using Raku, testing and releasing the module with mi6.
PECL Picks - Extensions to make your life betterZendCon
This document provides information about various PHP extensions available through PECL (PHP Extension Community Library). It introduces the author and their background, describes what PECL is and provides a brief history. It then discusses the current status of PECL, future plans, and how individuals can get involved. Finally, it highlights and provides code examples for several popular and useful PECL extensions, including APC, Memcache, Imagick, HTTP, UploadProgress and others.
An overview of the main questions/design issues when starting to work with databases in Perl
- choosing a database
- matching DB datatypes to Perl datatypes
- DBI architecture (handles, drivers, etc.)
- steps of DBI interaction : prepare/execute/fetch
- ORM principles and difficulties, ORMs on CPAN
- a few examples with DBIx::DataModel
- performance issues
First given at YAPC::EU::2009 in Lisbon. Updated version given at FPW2011 in Paris and YAPC::EU::2011 in Riga
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."
PuppetCamp Ghent - What Not to Do with PuppetOlinData
The document discusses common mistakes to avoid when using Puppet, including design mistakes like putting multiple classes in a file, language mistakes like using default options without checking for failures, and resource definition mistakes like recursively declaring ownership on large directories. It provides examples of bad Puppet code patterns and suggests better alternatives to avoid issues like dependency loops. The document is intended to help Puppet users learn from ugly or problematic Puppet code examples.
This document discusses common anti-patterns, pitfalls, and bad practices when using Puppet, including: using boolean facts ambiguously, expecting C-like values for parameters, excessively using "if defined()" checks, relying on large numbers of exec resources, and depending on dynamic scoping. The author recommends avoiding these practices in favor of more deterministic approaches like using Hiera for shared values and parameters, creating wrapper classes for shared dependencies, using single robust scripts instead of many exec resources, and avoiding dynamic scoping which can cause unpredictable behavior.
This document provides an overview of dependency injection and describes how to build a simple dependency injection container in PHP 5.3 using anonymous functions (lambdas). It discusses how the container can be used to manage parameters, describe object creation through lambdas, handle object scoping, and provide a unified interface. The container allows decoupling object dependencies and makes configuration and customization natural. Anonymous functions allow capturing context and scope, which is leveraged to implement features like shared instances. Overall, the document shows how lambdas can power a fully-featured yet concise dependency injection container in PHP.
The document discusses Symfony2, an open-source PHP web application framework. It provides an overview of its components including routing, dependency injection, and templating. It also describes how Symfony uses an MVC architecture and emphasizes loose coupling and flexibility.
This document summarizes some new features in PHP 5.4:
- Array syntax can now be written more concisely using square brackets instead of array functions.
- PHP 5.4 includes a built-in web server for development purposes, allowing PHP scripts to be run without Apache.
- Traits allow sharing of methods across classes to reduce code duplication, similar to mixins in Ruby.
- Closures now support accessing properties of the enclosing class scope via $this.
This document provides an overview of the Standard PHP Library (SPL) including common data structures like stacks, queues, heaps and iterators. It discusses how SPL extensions like SplSubject and SplObserver can be used to implement observer patterns. Various real-world open source projects using SPL are cited as examples. The document encourages involvement in improving and expanding SPL through code contributions and community engagement.
The document discusses various techniques for building command line interfaces with PHP including:
- Parsing command line arguments with getopt() and analyzing argc and argv
- Using the readline extension for interactive input with command history and autocompletion
- Scheduling tasks from the command line with cronjobs
- Getting and setting environment variables from the command line
The document provides code examples for each technique and discusses advantages of different approaches like using the PEAR or Zend frameworks for getopt() parsing. Interactive input with readline is highlighted for building command shells.
The document discusses the Standard PHP Library (SPL) which provides common data structures and interfaces in PHP. It describes various iterator interfaces and classes that can be used to iterate over data in a consistent manner. These include interfaces like Iterator and classes like RecursiveIteratorIterator, FilterIterator, ArrayIterator, DirectoryIterator, and SplFileInfo. It also discusses other SPL components like exceptions, autoloading functions, and data structures.
The document discusses monitoring and analyzing memory usage in Raku processes. It describes using the getrusage(2) system call to retrieve resident set size (RSS) and other memory statistics for a process. It then presents the ProcStats module, which allows periodically sampling getrusage(2) data over time to track RSS and detect changes from an initial baseline. The module outputs differences in memory statistics compared to the first sample, ignoring unchanged values. This provides a concise way to monitor for increases in a process's memory footprint over time.
Face it, backticks are a pain. BASH $() construct provides a simpler, more effective approach. This talk uses examples from automating git branches and command line processing with getopt(1) to show how $() works in shell scripts.
Variable interpolation is a standard way to BASH your head. This talk looks at interpolation, eval, ${} handling and "set -vx" to debug basic variable handling.
The Perforce Web Content Management System development team, lacking a pre-existing solution in PHP, designed and implemented their own object model and record layer to ease the interaction of the system with the Perforce Server. This session will focus on how users can access files in Perforce via a simple CRUD API, the subsystems exposed, and their usage.
The document discusses the Standard PHP Library (SPL) which provides standard interfaces, classes, and functions for common programming problems. It summarizes key SPL components like autoloading classes using spl_autoload_register(), iterators for arrays and directories, and interfaces like ArrayAccess, Iterator, and Countable. The Observer pattern implementation using SplSubject and SplObserver is also covered.
This document discusses using PHP for both web and desktop applications. It introduces PHP-GTK, which allows PHP to create graphical desktop applications with a native look and feel across platforms. It provides examples of creating windows, containers, working with signals and the main loop. The document also discusses installing PHP-GTK, some key considerations for desktop applications, and examples of creating widgets like trees and working with models.
Tutorial dos conceitos básicos de Puppet, uma ferramenta de gestão automática de configuração de servidores.
Essa apresentação está incompleta, pois foi parte de um curso básico sobre Puppet.
This talk describes refactoring FindBin::libs from Perl5 to Raku: breaking the module up into functional pieces, writing the tests using Raku, testing and releasing the module with mi6.
PECL Picks - Extensions to make your life betterZendCon
This document provides information about various PHP extensions available through PECL (PHP Extension Community Library). It introduces the author and their background, describes what PECL is and provides a brief history. It then discusses the current status of PECL, future plans, and how individuals can get involved. Finally, it highlights and provides code examples for several popular and useful PECL extensions, including APC, Memcache, Imagick, HTTP, UploadProgress and others.
An overview of the main questions/design issues when starting to work with databases in Perl
- choosing a database
- matching DB datatypes to Perl datatypes
- DBI architecture (handles, drivers, etc.)
- steps of DBI interaction : prepare/execute/fetch
- ORM principles and difficulties, ORMs on CPAN
- a few examples with DBIx::DataModel
- performance issues
First given at YAPC::EU::2009 in Lisbon. Updated version given at FPW2011 in Paris and YAPC::EU::2011 in Riga
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."
PuppetCamp Ghent - What Not to Do with PuppetOlinData
The document discusses common mistakes to avoid when using Puppet, including design mistakes like putting multiple classes in a file, language mistakes like using default options without checking for failures, and resource definition mistakes like recursively declaring ownership on large directories. It provides examples of bad Puppet code patterns and suggests better alternatives to avoid issues like dependency loops. The document is intended to help Puppet users learn from ugly or problematic Puppet code examples.
PuppetCamp Ghent - What Not to Do with PuppetWalter Heck
The document discusses common mistakes to avoid when using Puppet, including design mistakes like poorly structured classes, language mistakes like misusing functionality, and dependency issues. It provides examples of problematic Puppet code and explanations of why they are problematic, such as putting multiple classes in one file, using default options without checking for failures, and creating dependency loops between resources. The goal is to help Puppet users identify and avoid ugly or erroneous Puppet code that could cause problems.
Puppet Camp LA 2015: Basic Puppet Module Design (Beginner)Puppet
This document provides guidance on designing Puppet modules. It recommends structuring modules with subdirectories for manifests, templates, and tests. The manifests should include classes for defaults, installation, configuration, and services. Parameters allow customizing the module. Tests validate functionality and parameters. Dependencies should be limited and resources defined externally when possible.
This document provides guidance on designing Puppet modules. It recommends structuring modules with subdirectories for manifests, templates, and tests. The manifests should include classes for defaults, installation, configuration, and services. Parameters allow customizing the module. Tests validate functionality and parameters. Dependencies should be limited and resources defined externally when possible.
This document discusses the Puppet configuration management tool. It provides an overview of Puppet including its open source nature, supported platforms, file structure, and types of resources it can manage like files, packages, services. It also discusses Facter for collecting system facts. Several examples are shown of how to configure files, packages, services. Finally Amazon EC2 is mentioned as a way to deploy Puppet in a scalable environment.
Creating beautiful puppet modules with puppet-lintSpencer Owen
The document discusses using puppet-lint to create beautiful Puppet modules. It provides examples of using Puppet DSL to define packages, files, and services. It also discusses best practices for naming and structuring Puppet modules, including recommended folder structure and using wrapper modules. It promotes validating code with puppet parser validate and puppet-lint.
Puppet is an open source tool for server configuration management and application deployment. It allows users to define the desired state of IT infrastructure and automatically enforces that state. Key features include enforcing consistent configurations across thousands of nodes, increased productivity through automation, and visibility into infrastructure changes. Puppet works by defining resources like packages, files, and services using a declarative language and enforcing that configuration through an agent-master architecture.
Puppet for Java developers - JavaZone NO 2012Carlos Sanchez
Example code at https://github.com/carlossg/puppet-for-java-devs
More info at http://blog.carlossanchez.eu/tag/devops
Video at http://vimeo.com/49483627
Puppet is an infrastructure-as-code tool that allows easy and automated provisioning of servers, defining the packages, configuration, services,... in code. Enabling DevOps culture, tools like Puppet help drive Agile development all the way to operations and systems administration, and along with continuous integration tools like Jenkins, it is a key piece to accomplish repeatability and continuous delivery, automating the operations side during development, QA or production, and enabling testing of systems configuration.
Traditionally a field for system administrators, Puppet can empower developers, allowing both to collaborate coding the infrastructure needed for their developments, whether it runs in hardware, virtual machines or cloud. Developers and sysadmins can define what JDK version must be installed, application server, version, configuration files, war and jar files,... and easily make changes that propagate across all nodes.
Using Vagrant, a command line automation layer for VirtualBox, they can also spin off virtual machines in their local box, easily from scratch with the same configuration as production servers, do development or testing and tear them down afterwards.
We’ll show how to install and manage Puppet nodes with JDK, multiple application server instances with installed web applications, database, configuration files and all the supporting services. Including getting up and running with Vagrant and VirtualBox for quickstart and Puppet experiments, as well as setting up automated testing of the Puppet code.
"Puppet Modules for Fun and Profit" by Alessandro Franceschi, More Op than Dev at Lab42.
Watch the video of "Puppet Modules for Fun and Profit": http://youtu.be/bS9wMVW4Gho
Abstract: Patterns and Antipatterns to create Puppet Modules that can be used, reused and abused. Points of Views about a Holistic approach to modules design for an integrated infrastructure development.
Speaker Bio: Entrepreneur in the early Internet times, technical writer and teacher on Open Source technologies, Freelance System Administrator and generally mode Op than Dev. A somehow "reverse career" based on "what you like to do" principles. Has started to use Puppet in 2007 and since then has preferred consulting works based on Puppet while modules evolved and kept being released, for fun and profit.
Learn more about Puppet: http://bit.ly/QQoAP1
Go beyond the documentation and explore some of what's possible if you stretch symfony to its limits. We will look at a number of aspects of symfony 1.4 and Doctrine 1.2 and tease out some powerful functionality you may not have expected to find, but will doubtless be able to use. Topics covered will include routing, forms, the config cache and record listeners. If you're comfortable in symfony and wondering what's next, this session is for you.
Puppet is an open source tool for server configuration management. It allows systems to be configured and maintained in a consistent, automated way. Puppet uses a declarative language to describe system configuration and can manage a variety of operating systems. It provides benefits like reduced entropy, ability to quickly scale machines, change management tracking and repeatable states. Puppet uses a client-server architecture with SSL encryption and supports concepts like templates, defined types and ordering of resources.
The document discusses Drupal Feeds and its key components. It describes FeedsSource which extends FeedsConfigurable and how it imports data. It outlines the Feeds plugins system including Fetcher, Parser and Processor plugins. It details how Feeds imports data using a background job or batch process and calls the import method on FeedsSource. Finally it discusses Feeds hooks and creating custom Fetcher plugins.
The document discusses various web application frameworks and deployment methods in Perl. It covers common frameworks like CGI, mod_perl, Catalyst, and PSGI. It then discusses running PSGI applications with plackup, configuring middleware, and deploying PSGI apps behind web servers or as standalone daemons. Finally, it briefly covers application deployment and management with tools like daemontools.
This document discusses various tools for handling files, images, and asynchronous tasks in Symfony applications. It introduces the Gaufrette filesystem abstraction layer, VichUploaderBundle for file uploads, LiipImagineBundle for image processing, Enqueue for asynchronous message queues, and Symfony Messenger component. It provides code examples for integrating these tools and addressing common issues like file storage, processing, and background tasks.
How to simplify OSGi development using OBR - Peter Kriensmfrancis
The document discusses OSGi bundles and bundle repositories. It describes how bundles contain capabilities and requirements that are matched by a repository. It provides examples of bundle metadata formats like Bindex XML and capabilities like OSGi identity, content, and wiring. Bundle repositories are used to install, resolve, and manage bundles and their dependencies.
Puppet Camp Amsterdam 2015: Manifests of Future PastPuppet
The document discusses plans for future improvements to the Puppet parser and language. It proposes adding support for complex data types like hashes, structs, variants and defaults. It also suggests allowing users to define their own resource types. Additional topics covered include security, roll-out strategies, and testing approaches.
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.
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 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.
Una presentazione su passato, presente futuro del mondo DevOps e delle sue derivazioni.
Video disponibile qui: https://www.youtube.com/watch?v=jPmsSinpWcY
Ignite session at CfgMgmt Camp about Tiny Puppet and how different users can use in different ways for different things.
Always with the ability to install every application, on every OS, in every way.
Puppet has been used for infrastructure automation for 10 years. Lessons have been learned about preventing common failures when dealing with variables and classifying nodes. It is important to limit the impact of failures through change control practices like testing changes, limited rollouts, and having rollback options. When adopting new tools or upgrading existing infrastructure, a gradual approach works best to minimize risks.
This document describes an opinionated control repository for Puppet that contains manifests, modules, Hiera data, and tools to manage Puppet environments. It includes profiles and sample data for common applications. Optional integrations allow testing infrastructure with Vagrant, Docker, Fabric, and GitLab. The repository is intended as a starting point that can be customized for specific projects. It provides a skeleton for managing Puppet code and infrastructure as code.
Tiny Puppet (tp) is a tool that allows users to easily install and manage applications on any operating system using Puppet. It provides definitions, functions, and data to configure applications using the tp command or in Puppet manifests. Key features include installing applications with one command, testing installed applications, accessing application logs, and uninstalling applications. Tp gets the data it needs to support applications across operating systems from the tinydata module, which currently supports installing and configuring over 149 applications.
Alessandro Franceschi presents Tiny Puppet, a Puppet module that allows simplified management of packages, services, files, and directories for applications on any operating system. Tiny Puppet handles dependencies and standardizes resource naming, allowing users to focus on configuration. It also enables integration testing of applications and includes acceptance tests that can test applications on multiple operating systems. Tiny Puppet is designed to manage applications simply where complex module development is not needed.
Infrastructure automation is a voyage we can take step by step. The presentation is about the approaches, priorities and challenges we have to face when we want to automate an IT ifrastructure
A journey on the automation path.
Notes on how to migrate existing infrastructures to automation and how to introduce configuration management tools like Puppet, Chef, CFEngine on manually managed systems.
The document discusses Puppet modules and describes a holistic approach to module development. It outlines the history of developing Puppet modules at Lab42 since 2007 and describes key mantras for module development, including data separation, reusability, standardization, and interoperability. It also discusses Example42 next generation modules which aim to have a coherent, standardized structure and allow for customization, extension, and integration with tools like Puppi.
This document discusses Puppet modules and Example42's approach. It outlines how Example42 develops Puppet modules following best practices for reusability, standardization, and interoperability. Their next generation modules provide features like automatic monitoring, firewalling, and Puppi integration while allowing high levels of customization through parameters.
This document provides an introduction to DevOps. It discusses how DevOps aims to break down silos between development and operations teams through frictionless collaboration, shared culture and processes. It emphasizes that DevOps is about bringing people together, not just tools. Key aspects of DevOps culture include collaboration, communication, sharing, trust and respect between teams. Processes discussed include continuous delivery, version control, test-driven operations and automation. Popular tools that support DevOps goals are also mentioned.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
Project Management Semester Long Project - Acuityjpupo2018
Acuity is an innovative learning app designed to transform the way you engage with knowledge. Powered by AI technology, Acuity takes complex topics and distills them into concise, interactive summaries that are easy to read & understand. Whether you're exploring the depths of quantum mechanics or seeking insight into historical events, Acuity provides the key information you need without the burden of lengthy texts.
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on integration of Salesforce with Bonterra Impact Management.
Interested in deploying an integration with Salesforce for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
HCL Notes and Domino License Cost Reduction in the World of DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-and-domino-license-cost-reduction-in-the-world-of-dlau/
The introduction of DLAU and the CCB & CCX licensing model caused quite a stir in the HCL community. As a Notes and Domino customer, you may have faced challenges with unexpected user counts and license costs. You probably have questions on how this new licensing approach works and how to benefit from it. Most importantly, you likely have budget constraints and want to save money where possible. Don’t worry, we can help with all of this!
We’ll show you how to fix common misconfigurations that cause higher-than-expected user counts, and how to identify accounts which you can deactivate to save money. There are also frequent patterns that can cause unnecessary cost, like using a person document instead of a mail-in for shared mailboxes. We’ll provide examples and solutions for those as well. And naturally we’ll explain the new licensing model.
Join HCL Ambassador Marc Thomas in this webinar with a special guest appearance from Franz Walder. It will give you the tools and know-how to stay on top of what is going on with Domino licensing. You will be able lower your cost through an optimized configuration and keep it low going forward.
These topics will be covered
- Reducing license cost by finding and fixing misconfigurations and superfluous accounts
- How do CCB and CCX licenses really work?
- Understanding the DLAU tool and how to best utilize it
- Tips for common problem areas, like team mailboxes, functional/test users, etc
- Practical examples and best practices to implement right away
Building Production Ready Search Pipelines with Spark and MilvusZilliz
Spark is the widely used ETL tool for processing, indexing and ingesting data to serving stack for search. Milvus is the production-ready open-source vector database. In this talk we will show how to use Spark to process unstructured data to extract vector representations, and push the vectors to Milvus vector database for search serving.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
17. OS dedicated classes
class foo {
[ ... ]
# Include OS specific subclasses, if necessary
# Note that they needn’t to inherit foo
case $operatingsystem {
debian: { include foo::debian }
ubuntu: { include foo::debian }
default: { }
}
}
Facing Diversity
22. Setting default values
class foo {
include foo::params
[ ... ]
# ${foo_server} is user variable unfiltered
# ${foo::params::server} is user variable filtered
# You may want/need to reassign ${foo_server} value:
${foo_server} = ${foo::params::server}
}
In templates this fails:
server = <%= foo::params::server %>
This works (of course):
server = <%= foo_server %>
This works (even if variable is not set):
server = <%= scope.lookupvar('foo::params::server') %>
Dealing with Users
27. Isolation of diversity
# Class foo::example42
#
# You can use your custom project class to modify
# the standard behavior of foo module
#
# You don't need to use class inheritance if you
# don't override or redefine resources in foo class
#
# You can add custom resources and are free to
# decide how to provide the contents of your files:
# - Via static sourced files ( source => ) according
# to the naming convention you need
# - Via custom templates ( content => )
# - Via some kind of infile line modification tools
# such as Augeas
#
class foo::example42 inherits foo {
File["foo.conf"] {
source => [ "puppet:///foo/foo.conf-$hostname",
"puppet:///foo/foo.conf-$role",
"puppet:///foo/foo.conf" ],
}
}
Adapt and Customize
28. Project Classes ||
Project Modules
class foo {
[ ... ]
# Include project specific class if $my_project is set
# The extra project class is by default looked in foo module
# If $my_project_onmodule == yes it's looked in your project
# module
if $my_project {
case $my_project_onmodule {
yes,true: { include "${my_project}::foo" }
default: { include "foo::${my_project}" }
}
}
}
Adapt and Customize
32. Monitoring abstraction
class foo {
[ ... ]
# Include monitor classe if $monitor == yes
# Define the monitoring tools to use
# with the variables $monitor_tools (can be an array)
if $monitor == "yes" { include foo::monitor }
}
Control and Monitor
33. Monitoring abstraction
class foo::monitor {
include foo::params
monitor::port { "foo_${foo::params::protocol}_
${foo::params::port}":
protocol => "${foo::params::protocol}",
target => "${foo::params::monitor_target_real}",
port => "${foo::params::port}",
enable => "${foo::params::monitor_port_enable}",
tool => "${monitor_tool}",
}
monitor::process { "foo_process":
process => "${foo::params::processname}",
service => "${foo::params::servicename}",
pidfile => "${foo::params::pidfile}",
enable => "${foo::params::monitor_process_enable}",
tool => "${monitor_tool}",
}
[ ... ]
if $my_project {
case $my_project_onmodule {
yes,true: { include "${my_project}::foo::monitor" }
default: { include "foo::monitor::${my_project}" }
Control and Monitor
34. Monitor Meta-module
define monitor::process ( $process, $service,
$pidfile, $tool, $enable ) {
if ($enable != "false") and ($enable != "no") {
if ($tool =~ /munin/) { # TODO }
if ($tool =~ /collectd/) { # TODO }
if ($tool =~ /monit/) {
monitor::process::monit { "$name":
pidfile => "$pidfile",
process => "$process",
service => "$service",
}
}
if ($tool =~ /nagios/) {
monitor::process::nagios { "$name":
process => $process,
}
}
} # End if $enable
}
Control and Monitor
35. Monitor Meta-module
define monitor::process::monit (
$pidfile='',
$process='',
$service=''
) {
# Use for Example42 monit module
monit::checkpid { "${process}":
pidfile => "${pidfile}",
startprogram => "/etc/init.d/${service} start",
stopprogram => "/etc/init.d/${service} stop",
}
# Use for Camptocamp’s monit module (sample)
# monit::config { "${process}":
# ensure => present,
# content => template(“monit/checkprocess.erb”), # To create
# }
# Use for Monit recipe on Puppet’s wiki (sample)
# monit::package { "${process}": }
}
Control and Monitor
37. Naming conventions
include foo - Installs and runs foo service
# If foo can be client or server
include foo::server - Installs foo server
include foo::client - Installs foo client
# If foo is on every/many host either client or server:
if ($foo_server_local == true) or ($foo_server == "$fqdn") {
include puppet::server
} else {
include puppet::client
}
# If foo has to be disable or removed:
include foo::absent - Remove foo
include foo::disable - Disable foo service
include foo::disableboot - Disable foo service but
do not check if is running
A name for Everything
39. Quick cloning
# Few seds for a script that clones foo module
example42_module_clone.sh
# Creates new module from foo template. Then you:
# - Edit params.pp
# - Add specific classes, defines, types, facts
# - Eventually define modules variables and templates
#
# - Everything else is ready out of the box
Modules Machine
40. Quick customization
# Script that adapts a module for a new project
example42_project_rename.sh
# Prepares custom classes for new project
# foo/manifests/my_project.pp
# foo/manifests/monitor/my_project.pp
# foo/manifests/backup/my_project.pp
#
# - Use the logic that works for your project
# - Choose how to provide your configuration files
Modules Machine
41. Coherent Infrastructure
# Clone is GOOD
# Modules are similar
# They share a coherent naming convention
# They have confined places where to apply
# custom logic
# Fixed files for fixes functions
# Common approach for the Puppet team members
# Reduced risks and better manageability
# Quick update to template improvements
# Could be more easily manageable/autogenerated
# by GUI tools
Modules Machine
42.
43. Centralized settings:
foo::params
Qualified variables
Isolation of diversity
Project classes ||
Project module
Monitoring abstraction
Monitor meta-module
Filtering user variables
Setting default values
Coherent naming
conventions
Predictable behaviors
Quick cloning of foo
module
Quick customization
CrossVendor Reusable Plug & Play
Modules
Machine
A name for
Everything
Dealing
with Users
Control
and Monitor
Adapt and
Customize
Facing
Diversity
small dreams turn easier into reality