The document provides information on modern Puppet module development best practices. It discusses what modules are and common patterns like package, config, service that address 80% of module needs. It also covers validation of module parameters using Kwalify schemas, testing modules with rspec-puppet, and packaging modules for release on the Puppet Forge using the puppet-module tool. The document emphasizes the importance of coding style, linting with puppet-lint, and following patterns and best practices to create high quality, reusable modules.
Ansible is a Configuration Management System that is very simple to use, because of its straightforward and robust model for managing automation and it’s low barrier to entry for ease of use in both development and production.
During OpenStack development, Ansible can be used in conjunction with Vagrant and Devstack to manage complex, multi-node development environments with relative ease.
In this presentation, Juergen Brendel and David Lapsley review Ansible and provide some sample playbooks to get developers up and running quickly. They also describes how to use Ansible, Vagrant, Devstack, and OpenStack to accelerate OpenStack development cycles.
Ansible: How to Get More Sleep and Require Less CoffeeSarah Z
Why you need automation, configuration management and remote execution in your life. An intro to Ansible and how it can make your life in Ops infinitely easier.
(Click 2nd slide for video) Deploy PHP apps faster in 2017. This talk focuses on how PHP developers can use simple Ansible scripts to rapidly configure new dev and production servers from scratch, and deploy their apps. No more "snowflake servers"!
This is a general introduction to DevOps essentials and Ansible, with a few extras for PHP developers, including some best practice tips and overview of two major Ansible-based PHP projects, Drupal-VM and Trellis (modern WordPress setup).
Ansible is a Configuration Management System that is very simple to use, because of its straightforward and robust model for managing automation and it’s low barrier to entry for ease of use in both development and production.
During OpenStack development, Ansible can be used in conjunction with Vagrant and Devstack to manage complex, multi-node development environments with relative ease.
In this presentation, Juergen Brendel and David Lapsley review Ansible and provide some sample playbooks to get developers up and running quickly. They also describes how to use Ansible, Vagrant, Devstack, and OpenStack to accelerate OpenStack development cycles.
Ansible: How to Get More Sleep and Require Less CoffeeSarah Z
Why you need automation, configuration management and remote execution in your life. An intro to Ansible and how it can make your life in Ops infinitely easier.
(Click 2nd slide for video) Deploy PHP apps faster in 2017. This talk focuses on how PHP developers can use simple Ansible scripts to rapidly configure new dev and production servers from scratch, and deploy their apps. No more "snowflake servers"!
This is a general introduction to DevOps essentials and Ansible, with a few extras for PHP developers, including some best practice tips and overview of two major Ansible-based PHP projects, Drupal-VM and Trellis (modern WordPress setup).
DevOps for Humans - Ansible for Drupal Deployment Victory!Jeff Geerling
Everyone knows it's a Good Idea™ to use a configuration management system (e.g. Puppet, Chef) to manage your Drupal infrastructure. But many people (myself included) have run into a wall of #wtfmoments when trying to learn the vagaries of traditional CM systems and their vendor-specific syntaxes.
In 2012, Ansible was released, enabling normal human beings to manage their servers with an easy, but powerful, CM system that uses YAML (just like Drupal 8!) to define configuration and Jinja2 (very much like Twig!) for templates. Not only that, but Ansible is also an incredibly simple and very flexible Drupal deployment and continuous delivery tool.
Learn how you can use Ansible to manage your infrastructure—including local development environments—and stop letting servers and deployments get in the way of development.
Puppet is a configuration management tool which allows easy deployment and configuration ranging from 1 to 1 thousand servers (and even more). Even though its common knowledge for devops, puppet is still a strange piece of software for developers. How does it work and what can it do for you as a developer?
This presentation starts with an introduction to the rationale behind automated deployments in Continuous Delivery and DevOps. Then, I compare agent-based architectures, such as Chef and Puppet with the agentless architecture of the server orchestration engine Ansible. The presentation concludes with an automated deployment of Dynatrace into a simulated production environment.
Chasing AMI - Building Amazon machine images with Puppet, Packer and JenkinsTomas Doran
Using puppet when configuring EC2 machines seems a natural fit. However bringing up new machines from a community image with puppet is not trivial and can be slow, and so not useful for auto-scaling.
The cloud also offers a solution to ongoing server maintenance, allowing you to launch fresh instances whenever you upgrade your applications (Immutable or Phoenix servers). However to predictably succeed, you need to freeze the puppet code alongside the application version for deployment.
The solution to these issues is generating custom machine images (AMIs) with your software inlined. This talk will cover Yelp's use of a Packer, Jenkins and Puppet for generating AMIs. This will include how we deal with issues like bootstrapping, getting canonical information about a machine's environment and cluster state at launch time, as well as supporting immutable/phoenix servers in combination with more traditional long lived servers inside our hybrid cloud infrastructure.
Service Delivery Assembly Line with Vagrant, Packer, and AnsibleIsaac Christoffersen
Leverage Packer, Vagrant, and Ansible as part of a service delivery pipeline. Streamline your continuous delivery process while also targeting multiple cloud providers.
Jeff Geerling (geerlingguy) gives an overview of the Ansible 2.0.0 and Ansible Galaxy 2.0.0 releases in early 2016.
Jeff Geerling is the author of Ansible for DevOps (www.ansiblefordevops.com) and helps organize the St. Louis Ansible meetup group.
TXLF: Chef- Software Defined Infrastructure Today & TomorrowMatt Ray
The open source configuration management and automation framework Chef is used to configure, deploy and manage infrastructure of every sort. In addition to managing Linux, Windows and many other operating systems; Chef may be used to manage network hardware and storage systems. This session will provide an overview of the concepts and capabilities of Chef and discuss upcoming projects and how they fit into the Chef ecosystem.
CIRCUIT 2015 - AEM Infrastructure Automation with Chef CookbooksICF CIRCUIT
Drew Glass - Hero Digital
Push button deployments can automate AEM infrastructure to reduce costs and defects. Chef is a platform that enables this by transforming infrastructure into code using DevOps practices. AEM Author, Publish and Dispatcher instances can be fully configured and deployed as code with Chef. In this talk we will discuss how the open source AEM Chef Cookbook can be used to automate the deployment of AEM instances with Chef features like recipes, attributes, providers and resources. Out of the box, the AEM Chef Cookbook supports:
- Unattended installation of AEM Author, Publish, and Dispatcher nodes.
- Automatic search for and configuration of AEM cluster members using Chef searches.
- Configuration for replication agents using the replicator provider.
- Configurations for Dispatcher farms with the farm provider.
- Deploying and removing AEM packages with the package provider.
We will also discuss how AEM can be automated to supported different SSO and deployment scenarios like cold standby. Finally, we will cover how to extend the Cookbook to support your project specific needs.
Why work with Ansible to deliver software in a secure and reliable way? Gain insight quickly, this deck shows the strenghts of the IT automation tool that does it all.
Bas Meijer is an Ansible Ambassador co-hosting the Ansible Benelux Meetup since 2014. He introduced the tool to major corporate clients for use in mission critical infrastructure provisioning, application construction, container orchestration, security operations, and more.
Full stack development with node and NoSQL - All Things Open - October 2017Matthew Groves
What is different about this generation of web applications? A solid development approach must consider latency, throughput, and interactivity demanded by users users across mobile devices, web browsers, and IoT. These applications often use NoSQL to support a flexible data model and easy scalability required for modern development.
A full stack application (composed of Couchbase, WebAPI, Angular2, and ASP.NET/ASP.NET Core) will be demonstrated in this session. The individual parts of a stack may vary, but the overall design is the focus.
Local Dev on Virtual Machines - Vagrant, VirtualBox and AnsibleJeff Geerling
Developing web applications and websites locally can be troublesome if you use pre-built server packages like WAMP or MAMP, or an install tool to get Java or Ruby on your computer. Develop using modern best practices by using Vagrant, VirtualBox and Ansible to manage your development environments!
Talk at RubyKaigi 2015.
Plugin architecture is known as a technique that brings extensibility to a program. Ruby has good language features for plugins. RubyGems.org is an excellent platform for plugin distribution. However, creating plugin architecture is not as easy as writing code without it: plugin loader, packaging, loosely-coupled API, and performance. Loading two versions of a gem is a unsolved challenge that is solved in Java on the other hand.
I have designed some open-source software such as Fluentd and Embulk. They provide most of functions by plugins. I will talk about their plugin-based architecture.
DevOps for Humans - Ansible for Drupal Deployment Victory!Jeff Geerling
Everyone knows it's a Good Idea™ to use a configuration management system (e.g. Puppet, Chef) to manage your Drupal infrastructure. But many people (myself included) have run into a wall of #wtfmoments when trying to learn the vagaries of traditional CM systems and their vendor-specific syntaxes.
In 2012, Ansible was released, enabling normal human beings to manage their servers with an easy, but powerful, CM system that uses YAML (just like Drupal 8!) to define configuration and Jinja2 (very much like Twig!) for templates. Not only that, but Ansible is also an incredibly simple and very flexible Drupal deployment and continuous delivery tool.
Learn how you can use Ansible to manage your infrastructure—including local development environments—and stop letting servers and deployments get in the way of development.
Puppet is a configuration management tool which allows easy deployment and configuration ranging from 1 to 1 thousand servers (and even more). Even though its common knowledge for devops, puppet is still a strange piece of software for developers. How does it work and what can it do for you as a developer?
This presentation starts with an introduction to the rationale behind automated deployments in Continuous Delivery and DevOps. Then, I compare agent-based architectures, such as Chef and Puppet with the agentless architecture of the server orchestration engine Ansible. The presentation concludes with an automated deployment of Dynatrace into a simulated production environment.
Chasing AMI - Building Amazon machine images with Puppet, Packer and JenkinsTomas Doran
Using puppet when configuring EC2 machines seems a natural fit. However bringing up new machines from a community image with puppet is not trivial and can be slow, and so not useful for auto-scaling.
The cloud also offers a solution to ongoing server maintenance, allowing you to launch fresh instances whenever you upgrade your applications (Immutable or Phoenix servers). However to predictably succeed, you need to freeze the puppet code alongside the application version for deployment.
The solution to these issues is generating custom machine images (AMIs) with your software inlined. This talk will cover Yelp's use of a Packer, Jenkins and Puppet for generating AMIs. This will include how we deal with issues like bootstrapping, getting canonical information about a machine's environment and cluster state at launch time, as well as supporting immutable/phoenix servers in combination with more traditional long lived servers inside our hybrid cloud infrastructure.
Service Delivery Assembly Line with Vagrant, Packer, and AnsibleIsaac Christoffersen
Leverage Packer, Vagrant, and Ansible as part of a service delivery pipeline. Streamline your continuous delivery process while also targeting multiple cloud providers.
Jeff Geerling (geerlingguy) gives an overview of the Ansible 2.0.0 and Ansible Galaxy 2.0.0 releases in early 2016.
Jeff Geerling is the author of Ansible for DevOps (www.ansiblefordevops.com) and helps organize the St. Louis Ansible meetup group.
TXLF: Chef- Software Defined Infrastructure Today & TomorrowMatt Ray
The open source configuration management and automation framework Chef is used to configure, deploy and manage infrastructure of every sort. In addition to managing Linux, Windows and many other operating systems; Chef may be used to manage network hardware and storage systems. This session will provide an overview of the concepts and capabilities of Chef and discuss upcoming projects and how they fit into the Chef ecosystem.
CIRCUIT 2015 - AEM Infrastructure Automation with Chef CookbooksICF CIRCUIT
Drew Glass - Hero Digital
Push button deployments can automate AEM infrastructure to reduce costs and defects. Chef is a platform that enables this by transforming infrastructure into code using DevOps practices. AEM Author, Publish and Dispatcher instances can be fully configured and deployed as code with Chef. In this talk we will discuss how the open source AEM Chef Cookbook can be used to automate the deployment of AEM instances with Chef features like recipes, attributes, providers and resources. Out of the box, the AEM Chef Cookbook supports:
- Unattended installation of AEM Author, Publish, and Dispatcher nodes.
- Automatic search for and configuration of AEM cluster members using Chef searches.
- Configuration for replication agents using the replicator provider.
- Configurations for Dispatcher farms with the farm provider.
- Deploying and removing AEM packages with the package provider.
We will also discuss how AEM can be automated to supported different SSO and deployment scenarios like cold standby. Finally, we will cover how to extend the Cookbook to support your project specific needs.
Why work with Ansible to deliver software in a secure and reliable way? Gain insight quickly, this deck shows the strenghts of the IT automation tool that does it all.
Bas Meijer is an Ansible Ambassador co-hosting the Ansible Benelux Meetup since 2014. He introduced the tool to major corporate clients for use in mission critical infrastructure provisioning, application construction, container orchestration, security operations, and more.
Full stack development with node and NoSQL - All Things Open - October 2017Matthew Groves
What is different about this generation of web applications? A solid development approach must consider latency, throughput, and interactivity demanded by users users across mobile devices, web browsers, and IoT. These applications often use NoSQL to support a flexible data model and easy scalability required for modern development.
A full stack application (composed of Couchbase, WebAPI, Angular2, and ASP.NET/ASP.NET Core) will be demonstrated in this session. The individual parts of a stack may vary, but the overall design is the focus.
Local Dev on Virtual Machines - Vagrant, VirtualBox and AnsibleJeff Geerling
Developing web applications and websites locally can be troublesome if you use pre-built server packages like WAMP or MAMP, or an install tool to get Java or Ruby on your computer. Develop using modern best practices by using Vagrant, VirtualBox and Ansible to manage your development environments!
Talk at RubyKaigi 2015.
Plugin architecture is known as a technique that brings extensibility to a program. Ruby has good language features for plugins. RubyGems.org is an excellent platform for plugin distribution. However, creating plugin architecture is not as easy as writing code without it: plugin loader, packaging, loosely-coupled API, and performance. Loading two versions of a gem is a unsolved challenge that is solved in Java on the other hand.
I have designed some open-source software such as Fluentd and Embulk. They provide most of functions by plugins. I will talk about their plugin-based architecture.
Gents Barber Shop, Professional Men's Hairdresser Meadowbrookgentsbarberau
Located inside the Woolworths shopping centre at Meadowbrook, QLD, Gents Barber offers men a great quality, full featured barber experience complete with straight razor shaves and a hot towel treatment which integrates elements of traditional Thai facial massage and aromatherapy.
To find out more, visit our website at www.gentsbarber.com.au !
Keynote 5 - Principles and Pedagogic Concepts in Teacher Education: exploring...Mike Blamires
Keynote 5 - Principles and Pedagogic Concepts in Teacher Education: exploring some TLRP applications - Andrew Pollard and Patti Barber, TLRP, Institute of Education, University of London
Automated Puppet Testing - PuppetCamp Chicago '12 - Scott NottinghamPuppet
How IMC has implemented a CI/CD using Cobbler and Puppet, from a presentation given by Scott Nottingham & Eric Pogrelis at PuppetCamp Chicago '12.
www.puppetlabs.com
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Puppet
"Bootstrapping Puppet and Application Deployment" by Robert de Macedo Soares, Application Security Engineer, BusinessWire.
Presentation Overview: A dive into the problems faced when first launching Puppet across existing, heterogeneous servers, outlining possible solutions using our experience as an example. In addition, this session will touch on application management and deployment using subversion and rake tasks, what works and what is a little rough around the edges.
Speaker Bio: Robert is an engineer who has spent the past several years attempting to automate away the need for the work that he does. Focusing on server automation and security work for BusinessWire, Robert also develops web services such as tee.ms, a chat service, and designs and develops games. Trism, which he co-designed, was nominated for Cellular Game of the Year by the Academy of Interactive Arts & Sciences in the 2009 Interactive Achievement Awards.
Puppet Modules: An Holistic Approach - Alessandro Franceschi of Lab42 - Puppe...Puppet
Alessandro Franceschi of Lab42 presenting on "An Holistic approach to Puppet Modules." Video at http://youtu.be/AZxTKBNgsac
PuppetCamp Dublin 2012
http://www.puppetlabs.com
More info at http://blog.carlossanchez.eu/tag/devops
Video en español: http://youtu.be/E_OE4l3t5BA
The DevOps movement aims to improve communication between developers and operations teams to solve critical issues such as fear of change and risky deployments. But the same way that Agile development would likely fail without continuous integration tools, the DevOps principles need tools to make them real, and provide the automation required to actually be implemented. Most of the so called DevOps tools focus on the operations side, and there should be more than that, the automation must cover the full process, Dev to QA to Ops and be as automated and agile as possible. Tools in each part of the workflow have evolved in their own silos, and with the support of their own target teams. But a true DevOps mentality requires a seamless process from the start of development to the end in production deployments and maintenance, and for a process to be successful there must be tools that take the burden out of humans.
Apache Maven has arguably been the most successful tool for development, project standardization and automation introduced in the last years. On the operations side we have open source tools like Puppet or Chef that are becoming increasingly popular to automate infrastructure maintenance and server provisioning.
In this presentation we will introduce an end-to-end development-to-production process that will take advantage of Maven and Puppet, each of them at their strong points, and open source tools to automate the handover between them, automating continuous build and deployment, continuous delivery, from source code to any number of application servers managed with Puppet, running either in physical hardware or the cloud, handling new continuous integration builds and releases automatically through several stages and environments such as development, QA, and production.
Drupal Camp Porto - Developing with Drupal: First StepsLuís Carneiro
The goal of this presentation is to give Drupal new comers some insights about key aspects of developing with Drupal.
The idea is to give the audience some guidelines about good practices of Drupal development along with some tips and, by a simple example application, present the most common and important structures/characteristics of the Drupal API.
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.
Automating it management with Puppet + ServiceNowPuppet
As the leading IT Service Management and IT Operations Management platform in the marketplace, ServiceNow is used by many organizations to address everything from self service IT requests to Change, Incident and Problem Management. The strength of the platform is in the workflows and processes that are built around the shared data model, represented in the CMDB. This provides the ‘single source of truth’ for the organization.
Puppet Enterprise is a leading automation platform focused on the IT Configuration Management and Compliance space. Puppet Enterprise has a unique perspective on the state of systems being managed, constantly being updated and kept accurate as part of the regular Puppet operation. Puppet Enterprise is the automation engine ensuring that the environment stays consistent and in compliance.
In this webinar, we will explore how to maximize the value of both solutions, with Puppet Enterprise automating the actions required to drive a change, and ServiceNow governing the process around that change, from definition to approval. We will introduce and demonstrate several published integration points between the two solutions, in the areas of Self-Service Infrastructure, Enriched Change Management and Automated Incident Registration.
Simplified Patch Management with Puppet - Oct. 2020Puppet
Does your company struggle with patching systems? If so, you’re not alone — most organizations have attempted to solve this issue by cobbling together multiple tools, processes, and different teams, which can make an already complicated issue worse.
Puppet helps keep hosts healthy, secure and compliant by replacing time-consuming and error prone patching processes with Puppet’s automated patching solution.
Join this webinar to learn how to do the following with Puppet:
Eliminate manual patching processes with pre-built patching automation for Windows and Linux systems.
Gain visibility into patching status across your estate regardless of OS with new patching solution from the PE console.
Ensure your systems are compliant and patched in a healthy state
How Puppet Enterprise makes patch management easy across your Windows and Linux operating systems.
Presented by: Margaret Lee, Product Manager, Puppet, and Ajay Sridhar, Sr. Sales Engineer, Puppet.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...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 the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
1. Modern Module
Development
2012-03-23
Puppet Camp Edinburgh
Ken Barber
Professional Services Engineer
ken@puppetlabs.com
http://linkedin.com/in/ken_barber
IRC & Twitter: @ken_barber
2. What is a module?
• A re-usable way of sharing common components:
• Classes
• Defined Resources
• Ruby Resources
• Files
• Templates
• Functions
• Facts
8. Class Patterns
• Most installation and management problems consist
of:
• Installing software using files or packages
• Modifying configuration files
• Starting services
11. Config Class
class bind::config {
file { $bind::config_file:
content => template(“${module_name}/named.conf”),
owner => $bind::user,
group => $bind::group,
mode => ‘0644’,
}
}
12. Service Class
class bind::service {
service { $bind::services:
ensure => running,
enable => true,
hasstatus => true,
hasrestart => true,
}
}
13. Main Class
class bind {
anchor { ‘bind::start’: }->
class { ‘bind::package’: }~>
class { ‘bind::config’: }~>
class { ‘bind::service’: }~>
anchor { ‘bind::end’: }
}
14. What are anchors?
• Provided in stdlib
• Anchors are resource that ‘do nothing’
• They ensure the edge of the classes are demarcated
properly so the graph executes in the expected
order
17. Package, Config,
Service Pattern
• This pattern is good for ~80% of situations.
• Deals with ordering in a non-complex way, working
with defined resources as well.
19. Default
Parameters
• Most parameters have OS dependant defaults.
• In the past this was done with case statements in
the main modules.
20. Class Parameters
• I generally use two types of class parameters:
• User-tuneable parameters
• Advanced parameters for overriding items such
as package name, service name configuration file
paths
21. Params Pattern
The trick is to move your OS based param lookup into
manifests/params.pp:
class bind::params {
case $::operatingsystem {
'ubuntu', 'debian': {
$package = 'bind9'
$service = 'bind9'
$config_dir = '/etc/bind'
}
‘centos’, ‘redhat’: {
$package = ‘bind’
$service = ‘bind’
$config_dir = ‘/etc/named’
}
default: {
fail(“Unknown OS: $::operatingsystem”)
}
}
}
22. Params Pattern
Then inherit this in your base class like so:
class bind (
$package = $bind::params::package,
$service = $bind::params::service,
$config_dir = $bind::params::config_dir
) inherits bind::params {
...
}
23. Params Pattern
Then elsewhere in your code, reference the fully
qualified parameter from your bind class:
class bind::package {
package { $bind::packages:
ensure => installed,
}
}
25. Puppet Module Tool
# puppet help module
USAGE: puppet module <action>
This subcommand can find, install, and manage modules from the Puppet Forge,
a repository of user-contributed Puppet code. It can also generate empty
modules, and prepare locally developed modules for release on the Forge.
OPTIONS:
--mode MODE - The run mode to use (user, agent, or master).
--render-as FORMAT - The rendering format to use.
--verbose - Whether to log verbosely.
--debug - Whether to log debug information.
ACTIONS:
build Build a module release package.
changes Show modified files of an installed module.
clean Clean the module download cache.
generate Generate boilerplate for a new module.
install Install a module from a repository or release archive.
list List installed modules
search Search a repository for a module.
uninstall Uninstall a puppet module.
upgrade Upgrade a puppet module.
See 'puppet man module' or 'man puppet-module' for full help.
26. Puppet Module
Face
• Obviously still subject to design changes before
release ....
28. Validating
Parameters
• Your allowed set of class parameters are like an
Interface Contract to your users
• A lot of bugs in code are to do with bad input
• We have three mechanisms for validating input:
• parameter definitions in the class
• stdlib validate_* functions
• kwalify
29. Kwalify Validation
• Uses the kwalify library - which is a language
independent way of validating JSON/YAML style
data structures.
• Kwalify has binding in many languages - so its a
nice universal choice for structured data validation.
30. Kwalify
• Provides a single declarative way of defining what
parameters are valid.
• When validation fails, it shows all cases of failure.
• Doesn’t handle logical validation across components
- you’ll have to do this yourself.
34. rspec-puppet
• Tim Sharpe (@rodjek) from Github created it
• Rspec is often used by Puppet for testing, so it
made sense for us to use rspec-puppet
• The same facility can be used for testing Puppet DSL
and Ruby code as well: providers, types, facts etc.
35. rspec-puppet
• Is able to test:
• Classes
• Defined Resources
• Nodes
• Functions
37. rspec-puppet
For class testing, the idea is to test your compiled
catalogue. The following just tests if your class
compiles with no parameters:
# spec/classes/bind_spec.rb
require 'spec_helper'
describe 'bind', :type => :class do
let(:facts) do
{
:operatingsystem => "CentOS"
}
end
describe 'when only mandatory parameters are provided' do
let(:params) do
{}
end
it 'class should get included' do
subject.should contain_class('bind')
end
end
end
38. rspec-puppet
You also want to make sure your expectations of how
the catalogue should look after compilation are met:
it ‘bind package should be defined’ do
subject.should contain_package(‘bind’)
end
it ‘bind service should be defined’ do
subject.should contain_service(‘bind’)
end
39. rspec-puppet
For testing templates, we can do something a little
different:
it 'changing authnxdomain should modify template' do
params = {
:config_options = "/tmp/named.conf.options"
:options = {
"authnxdomain" => "yes",
}
}
content = param_value("file", "/tmp/named.conf.options", "content")
content.should =~ /authnxdomain yes/
end
40. rspec-puppet
Requires a spec/spec_helper.rb file with appropriate
settings:
require 'rspec'
require 'rspec-puppet'
require 'puppet'
require 'mocha'
fixture_path = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures'))
RSpec.configure do |c|
c.module_path = File.join(fixture_path, 'modules')
c.manifest_dir = File.join(fixture_path, 'manifests')
end
41. rspec-puppet
Also the following should be added to your Rakefile
to get ‘rake spec’ to work:
require 'rubygems'
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new do |t|
t.pattern = 'spec/*/*_spec.rb'
end
43. Importance of
Good Coding Style
• Code is read much more often then it is written (did
Guido van Rossum say this?)
• Other people being able to read your code is
important to attract contributors
• Contributors make your code better and ultimately
more successful
44. Style Guide
• Available here:
• http://docs.puppetlabs.com/guides/style_guide.html
45. puppet-lint
• Also made by Tim Sharpe from Github
• Uses the Puppet Labs style guide
• Saves time, as it tells you what is wrong with your
content before a code review
46. Using it in your
Rakefile
Download the gem:
gem install puppet-lint
Then just add the following to your modules Rakefile:
require 'puppet-lint/tasks/puppet-lint'
49. The Modulefile
• Provides meta data for your module
• Includes dependencies
• In the future the module tool can use these
dependencies to download extra modules as
needed
• Is used to generate metadata.json, which is used by
the forge
50. The Modulefile
name 'puppetlabs-bind'
version '0.0.1'
source 'https://github.com/puppetlabs/puppetlabs-bind.git'
author 'Puppet Labs Inc.'
license 'ASL 2.0'
summary 'ISC Bind Module'
description 'Installs and configures the ISC BIND DNS server'
project_page 'http://forge.puppetlabs.com/puppetlabs/bind'
dependency 'puppetlabs/stdlib', '>= 2.2.1'
dependency 'puppetlabs/kwalify', '>= 0.0.1'
dependency 'ripienaar/concat', '>= 20100507'
51. Packaging using
the module tool
# puppet-module build
===================================================
Building /Users/ken/Development/puppetlabs-bind for release
-----------------------------------------------------------
Done. Built: pkg/puppetlabs-bind-0.0.1.tar.gz
52. Uploading To the
Forge
• Create an account - this username will be publicly
visible, so if you are a company create a shared one
• Create a project - this is the short name of the
module
• Create a revision - this is the revision you wish to
upload. Use semantic versioning if you can ie. 1.2.0,
3.1.2 etc.
• Upload your revision, this is the tar.gz file created in
pkg/ with puppet-module build
53. Using a forge
module
Using the new module face you can install the forge
module:
# puppet module search bind
# puppet module install puppetlabs-bind
54. Future Work
Needed for Modules
• Acceptance Testing
• ‘Real’ build testing, perhaps using monitoring
frameworks for acceptance?
• Hiera and data lookup methodology
• Using Hiera to emulate the params pattern
Which is what this talk will hopefully help you all achieve.\n
New(ish) because most of these ideas have been kicking around for a while, but only used in anger recently. Kwalify is new, only published to the forge on Wednesday.\n
I&#x2019;ll show you some patterns, and jump back and forth between code and this slidepack. In my examples, I&#x2019;ll but using my in-development &#x2018;bind&#x2019; module as the basis of some of my examples where applicable.\n
Providing a consistent mechanism for writing a module means we get the boring stuff out of the way earlier. Less fapping about with style & layout of code. It also means we can learn from others mistakes - and wins.\n
If you&#x2019;ve ever been to any of out training courses - we talk about this quite a bit.\n
Or Package, File, Service - but file is a bit ambigous - since a package is a file right?\nThis pattern breaks these three major items into consecutive chunks, in Puppet terms - sub classes.\n
Contains all &#x2018;package&#x2019; related data.\n
Contains all &#x2018;configuration&#x2019; related resources.\n
Contains all &#x2018;service&#x2019; related resources. Possibly even Cron or Scheduled jobs ...\nNext slide: main class\n
This class &#x2018;brings it all together&#x2019; using anchors. This provides course grained relationships between the Package, Config & Service classes. You can see our usage of chained resources, this is mainly so it looks sexy.\n
Anchors may look strange, but you need them to surround classes to ensure ordering is done correctly. This is due to ambiguous boundaries for classes in the graph. This is more or less a work-around for a &#x2018;bug&#x2019; or design flaw, and is more obvious when you have multiple layers of classes.\n
Defined resources fit well with this pattern because you can now just build up relationships with the classes. ie. you require the package class, and notify the service class.\n
This is a contrived example, and not really how you would manage a zone - but I just want to show how a resource inside a defined resource can establish relationships with the course grained package,config,service classes. Also - the beauty of this - is that you can notify and require these classes _outside_ of the module.\n
I generally drop this pattern in as a template for customers so they can just copy it and modify to taste.\nNext section: Params Pattern\n
\n
\n
\n
The default will stop the code from working on non-supported operating systems. This may not always be desirable, but sometime its hard to find reasonable defaults in this case.\n
Yes - it looks wordy. Now you can use these variables directly in your class - $package, $service, $config_dir.\n
By doing it this way, you allow users who define class parameters to override the params defaults.\nAlso - check out RI Pienaars patterns around using Hiera and his take on the params pattern using the Hiera Puppet backend.\nNext Topic: Puppet Module as a Face?\n
\n
\n
\n
\n
\n
\n
\n
At this point I&#x2019;ll just drop to the console and show it in action.\n
\n
\n
\n
\n
These are conventions for layouts, but its recommended sticking to these conventions for the examples to work.\n