This document discusses using Ansible and Molecule to provision a Plone infrastructure in a test-driven manner. It begins by introducing Ansible as an automation tool and why it would be useful for Plone deployment. It then covers installing and configuring Ansible, Molecule, and creating a sample role to demonstrate setting up testing. Key points covered include using Molecule to generate roles with testing scaffolding, writing tests against instances created by the role, and executing the full test workflow including convergence and idempotence checking.
This document provides an agenda and overview for a mobile agile testing workshop covering both Android and iOS testing. The Android section covers unit, UI, and API testing tools like JUnit, Espresso, and Postman. It also discusses test-driven development. The iOS section similarly covers unit testing with XCTest, UI testing with XCUI, mocking with Cuckoo, and tools like Postman and Jenkins. The document emphasizes why testing is important for catching bugs, making changes confidently, and extending the lifespan of codebases.
Automation is at the heart of modern infrastructure. Ansible is a great tool to automate your routing workflows and your infrastructure.
This talk will present you the best of Ansible - how you can quickly get started and start automating your infrastructure with it.
The document discusses a study of defect prediction for the Eclipse software project. Researchers analyzed Eclipse source code, bug reports, and change history from multiple releases to identify factors that correlate with higher defect counts. These factors include developer experience, test coverage, code complexity metrics, syntactic tokens, and dependencies on certain Eclipse packages. The researchers also collected and made available defect data and metrics for various Eclipse components.
This document discusses Java libraries for building REST clients. It recommends libraries for dependency injection (Guice), HTTP clients (OkHttp), REST mapping (Retrofit), reactive programming (RxJava), testing (JUnitParams, Mockito), and reducing boilerplate code (Lombok). It provides code examples and summaries of each library's functionality.
This document discusses various Java EE technologies including JPA, JAX-RS, EJB, CDI, JUnit, and strategies for development, testing, deployment and monitoring of a Java EE application. It provides code examples for implementing entities, DAOs, services, resources and tests. Release and deployment is discussed including using Maven release plugin and deploying new versions to GlassFish. Logging, JMX and using tools like JMetric for monitoring metrics exposed via JMX are also covered.
This document provides an agenda and overview for a mobile agile testing workshop covering both Android and iOS testing. The Android section covers unit, UI, and API testing tools like JUnit, Espresso, and Postman. It also discusses test-driven development. The iOS section similarly covers unit testing with XCTest, UI testing with XCUI, mocking with Cuckoo, and tools like Postman and Jenkins. The document emphasizes why testing is important for catching bugs, making changes confidently, and extending the lifespan of codebases.
Automation is at the heart of modern infrastructure. Ansible is a great tool to automate your routing workflows and your infrastructure.
This talk will present you the best of Ansible - how you can quickly get started and start automating your infrastructure with it.
The document discusses a study of defect prediction for the Eclipse software project. Researchers analyzed Eclipse source code, bug reports, and change history from multiple releases to identify factors that correlate with higher defect counts. These factors include developer experience, test coverage, code complexity metrics, syntactic tokens, and dependencies on certain Eclipse packages. The researchers also collected and made available defect data and metrics for various Eclipse components.
This document discusses Java libraries for building REST clients. It recommends libraries for dependency injection (Guice), HTTP clients (OkHttp), REST mapping (Retrofit), reactive programming (RxJava), testing (JUnitParams, Mockito), and reducing boilerplate code (Lombok). It provides code examples and summaries of each library's functionality.
This document discusses various Java EE technologies including JPA, JAX-RS, EJB, CDI, JUnit, and strategies for development, testing, deployment and monitoring of a Java EE application. It provides code examples for implementing entities, DAOs, services, resources and tests. Release and deployment is discussed including using Maven release plugin and deploying new versions to GlassFish. Logging, JMX and using tools like JMetric for monitoring metrics exposed via JMX are also covered.
The document provides tips and best practices for optimizing Gradle builds, including installing Gradle, initializing projects, fixing versions, invoking builds from anywhere in the project, setting up multi-project builds, applying plugins, generating code coverage reports, and leveraging plugins to improve documentation, versioning, and more.
This is an adaptation of the presentation given at the SpringOne 2008 conference in Hollywood, FL. It contains some updates on project status, and also information about the recently published book "Spring Python 1.1"
This slideshow is licensed under a Creative Commons Attribution 3.0 United States License.
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.
The document discusses the JavaFX ecosystem, which includes open source and commercial offerings of libraries, frameworks, and tools. It summarizes several popular layout libraries like MigLayout, widget libraries like Medusa and JideFX, UI component libraries like ControlsFX and JFoenix, testing frameworks like TestFX, MVVM frameworks like MvvmFX and Griffon, IDE plugins, and more. The ecosystem is large and covers areas like layout, widgets, UI components, testing, frameworks, and platforms/IDEs.
This document provides tips for optimizing Gradle builds, including how to install and initialize Gradle projects, configure multi-project builds, improve build performance with plugins and incremental builds, and generate code coverage reports across multiple projects. Key recommendations include using the Gradle wrapper to define project dependencies, leveraging conventions over configuration, applying useful plugins like versions and license, and aggregating JaCoCo reports in a root project.
Test it! Unit, mocking and in-container Meet Arquillian!Ivan Ivanov
A gentle introduction into testing in Java. Begin with testing a single unit, continue with mocking dependency and end up with a full incontainer test capabilities.
The document discusses how RSpec achieves "zero monkey patching mode" in version 3.0. It describes how RSpec previously extensively used monkey patching but has worked to reduce this in recent versions. It details how RSpec loads spec files, builds example groups and hierarchies, runs examples, and makes expectations without monkey patching core objects or classes. Key aspects covered include the rspec executable, loading files, building example groups, running examples, and the expect-based syntax.
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...Puppet
Continuously Deliver Your Puppet Code with Jenkins, r10k and Git (Intermediate) - Toni Schmidbauer, IT Solutions at Spardat GmbH given at Puppet Camp Düsseldorf 2014
Scala, Functional Programming and Team Productivity7mind
Many engineers spend a lot of time doing repetitive things. In this talk we examine typical productivity issues, which observed in many different companies, and show how to deal with them. We cover:
* Microservices and Monoliths,
* Introspection and Debugging,
* Logging,
* Modular Design,
* Functional Programming,
* RPC and REST,
* Tests and Delivery Pipeline.
This talk is a retrospective of our actions that helped our customer to cut development costs by 50%. We expect our experience to be applicable to most small and medium-sized teams and companies using Scala.
The document provides an overview of various testing frameworks and libraries that can be used for testing Java code. It discusses frameworks for unit testing like JUnit, Mockito, and Spock. It also covers libraries for integration testing like Arquillian, REST Assured and WireMock. Other topics include parameterizing tests, testing asynchronous code, verifying PDF and XML documents. The document aims to help developers choose the right tools for testing different parts of an application effectively.
This document summarizes key concepts related to dependency injection (DI) and the Java Contexts and Dependency Injection (CDI) specification, including:
1. DI allows injecting dependencies into components rather than having components directly instantiate or look up dependencies, improving loose coupling.
2. CDI builds on DI and allows injecting not just dependencies but any object into Java components using the @Inject annotation without requiring XML configuration.
3. Qualifiers like @Named allow disambiguating between multiple implementations of a service when injecting dependencies.
This document provides an overview of several key concepts for using Maven including:
- Default goals that can be set at the project level to save typing common commands like "mvn install".
- The super POM that all Maven projects inherit from to specify common configuration defaults.
- Archetypes that allow creating standard project templates with predefined directory structures and files.
- Dependency and plugin management sections that allow declaring common dependency and plugin versions to minimize repetitive declarations.
Palestra realizada, no dia 8/6/13, no JustJava 2013, visando apresentar esta novidade poderosa do Java 8 que permite criar análises personalizadas de código fonte, além da adição de checagens extras em tempo de compilação e transformações de código.
Documentation: https://izumi.7mind.io/latest/release/doc/distage/
Github: https://github.com/pshirshov/izumi-r2
Pavel Shirshov - DIStage: purely functional programming without sacrificing modularity with modern dependency injection for Scala
- Modularity and its importance
- DI-like mechanisms and their issues in Scala
- Why people think that "DI doesn't compose with functional programming", and why that's not true
- Designing a staged DI, for wiring at runtime, at compile-time, or mixed
- Staging programs for reliability, power and performance
- The pains of supporting rich Scala types (incl. How to emulate kind-polymorphism in Scala 2)
- Garbage collection in DI for better tests and deployments
Pavel's bio: Language-agnostic software engineer, coding for 18 years,
10 years of hands-on commercial engineering experience.
Led a cluster orchestration team at Yandex, "the Russian Google"; implemented an internal orchestration solution, "ISS" (Scala/Java/C++), managing 50K+ physical hosts across 6 datacenters.
Today, Pavel owns Irish R&D company Septimal Mind.
We Are All Testers Now: The Testing Pyramid and Front-End DevelopmentAll Things Open
The document provides an overview of test-driven development (TDD) principles and how to implement testing for front-end development. It discusses the benefits of TDD, such as avoiding bad designs and preventing regressions. It also addresses common challenges with TDD, like slowing initial velocity and ignored tests over time. The document then covers different levels of testing, including unit tests, integration tests, and functional/end-to-end tests using the testing pyramid as a framework. It provides examples of writing tests for pure and impure functions using the Jest testing framework. Finally, it discusses functional testing using Cucumber.js behavior-driven development.
This document provides an overview of Spring Boot and some of its key features. It discusses the origins and modules of Spring, how Spring Boot simplifies configuration and dependency management. It then covers examples of building Spring Boot applications that connect to a SQL database, use RabbitMQ for messaging, and schedule and run asynchronous tasks.
Pycon Colombia 2018
One year ago I joined a team that favours Serverless, since then I’ve been building and maintaining lots of services using Serverless. With a pinch of Skepticism, I sailed through some of the challenges and tooling, I want to share with the community the pains and glory of it.
The document outlines Viresh Doshi's top 10 Ansible tips based on his experience as a DevOps engineer. The tips include: adding a README to repositories to document purpose; unit testing roles with Molecule; using name and debug modules for readability and troubleshooting; connecting roles to Jenkins CI; using Python virtual environments; templating with Jinja2; ensuring idempotency; using variables consistently; splitting tasks across files; and sharing roles openly. Additional tips are to write modules, use filters, leverage Ansible Galaxy, manage inventories, and enjoy Python and coffee.
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.
Continuous Integration Testing in DjangoKevin Harvey
Continuous Integration is like having a robot that cleans up after you: it installs your dependencies, builds your project, run your tests, and reports back to you. This presentation outlines two methods for CI: Travis and Jenkins.
The document provides tips and best practices for optimizing Gradle builds, including installing Gradle, initializing projects, fixing versions, invoking builds from anywhere in the project, setting up multi-project builds, applying plugins, generating code coverage reports, and leveraging plugins to improve documentation, versioning, and more.
This is an adaptation of the presentation given at the SpringOne 2008 conference in Hollywood, FL. It contains some updates on project status, and also information about the recently published book "Spring Python 1.1"
This slideshow is licensed under a Creative Commons Attribution 3.0 United States License.
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.
The document discusses the JavaFX ecosystem, which includes open source and commercial offerings of libraries, frameworks, and tools. It summarizes several popular layout libraries like MigLayout, widget libraries like Medusa and JideFX, UI component libraries like ControlsFX and JFoenix, testing frameworks like TestFX, MVVM frameworks like MvvmFX and Griffon, IDE plugins, and more. The ecosystem is large and covers areas like layout, widgets, UI components, testing, frameworks, and platforms/IDEs.
This document provides tips for optimizing Gradle builds, including how to install and initialize Gradle projects, configure multi-project builds, improve build performance with plugins and incremental builds, and generate code coverage reports across multiple projects. Key recommendations include using the Gradle wrapper to define project dependencies, leveraging conventions over configuration, applying useful plugins like versions and license, and aggregating JaCoCo reports in a root project.
Test it! Unit, mocking and in-container Meet Arquillian!Ivan Ivanov
A gentle introduction into testing in Java. Begin with testing a single unit, continue with mocking dependency and end up with a full incontainer test capabilities.
The document discusses how RSpec achieves "zero monkey patching mode" in version 3.0. It describes how RSpec previously extensively used monkey patching but has worked to reduce this in recent versions. It details how RSpec loads spec files, builds example groups and hierarchies, runs examples, and makes expectations without monkey patching core objects or classes. Key aspects covered include the rspec executable, loading files, building example groups, running examples, and the expect-based syntax.
Puppet Camp Düsseldorf 2014: Continuously Deliver Your Puppet Code with Jenki...Puppet
Continuously Deliver Your Puppet Code with Jenkins, r10k and Git (Intermediate) - Toni Schmidbauer, IT Solutions at Spardat GmbH given at Puppet Camp Düsseldorf 2014
Scala, Functional Programming and Team Productivity7mind
Many engineers spend a lot of time doing repetitive things. In this talk we examine typical productivity issues, which observed in many different companies, and show how to deal with them. We cover:
* Microservices and Monoliths,
* Introspection and Debugging,
* Logging,
* Modular Design,
* Functional Programming,
* RPC and REST,
* Tests and Delivery Pipeline.
This talk is a retrospective of our actions that helped our customer to cut development costs by 50%. We expect our experience to be applicable to most small and medium-sized teams and companies using Scala.
The document provides an overview of various testing frameworks and libraries that can be used for testing Java code. It discusses frameworks for unit testing like JUnit, Mockito, and Spock. It also covers libraries for integration testing like Arquillian, REST Assured and WireMock. Other topics include parameterizing tests, testing asynchronous code, verifying PDF and XML documents. The document aims to help developers choose the right tools for testing different parts of an application effectively.
This document summarizes key concepts related to dependency injection (DI) and the Java Contexts and Dependency Injection (CDI) specification, including:
1. DI allows injecting dependencies into components rather than having components directly instantiate or look up dependencies, improving loose coupling.
2. CDI builds on DI and allows injecting not just dependencies but any object into Java components using the @Inject annotation without requiring XML configuration.
3. Qualifiers like @Named allow disambiguating between multiple implementations of a service when injecting dependencies.
This document provides an overview of several key concepts for using Maven including:
- Default goals that can be set at the project level to save typing common commands like "mvn install".
- The super POM that all Maven projects inherit from to specify common configuration defaults.
- Archetypes that allow creating standard project templates with predefined directory structures and files.
- Dependency and plugin management sections that allow declaring common dependency and plugin versions to minimize repetitive declarations.
Palestra realizada, no dia 8/6/13, no JustJava 2013, visando apresentar esta novidade poderosa do Java 8 que permite criar análises personalizadas de código fonte, além da adição de checagens extras em tempo de compilação e transformações de código.
Documentation: https://izumi.7mind.io/latest/release/doc/distage/
Github: https://github.com/pshirshov/izumi-r2
Pavel Shirshov - DIStage: purely functional programming without sacrificing modularity with modern dependency injection for Scala
- Modularity and its importance
- DI-like mechanisms and their issues in Scala
- Why people think that "DI doesn't compose with functional programming", and why that's not true
- Designing a staged DI, for wiring at runtime, at compile-time, or mixed
- Staging programs for reliability, power and performance
- The pains of supporting rich Scala types (incl. How to emulate kind-polymorphism in Scala 2)
- Garbage collection in DI for better tests and deployments
Pavel's bio: Language-agnostic software engineer, coding for 18 years,
10 years of hands-on commercial engineering experience.
Led a cluster orchestration team at Yandex, "the Russian Google"; implemented an internal orchestration solution, "ISS" (Scala/Java/C++), managing 50K+ physical hosts across 6 datacenters.
Today, Pavel owns Irish R&D company Septimal Mind.
We Are All Testers Now: The Testing Pyramid and Front-End DevelopmentAll Things Open
The document provides an overview of test-driven development (TDD) principles and how to implement testing for front-end development. It discusses the benefits of TDD, such as avoiding bad designs and preventing regressions. It also addresses common challenges with TDD, like slowing initial velocity and ignored tests over time. The document then covers different levels of testing, including unit tests, integration tests, and functional/end-to-end tests using the testing pyramid as a framework. It provides examples of writing tests for pure and impure functions using the Jest testing framework. Finally, it discusses functional testing using Cucumber.js behavior-driven development.
This document provides an overview of Spring Boot and some of its key features. It discusses the origins and modules of Spring, how Spring Boot simplifies configuration and dependency management. It then covers examples of building Spring Boot applications that connect to a SQL database, use RabbitMQ for messaging, and schedule and run asynchronous tasks.
Pycon Colombia 2018
One year ago I joined a team that favours Serverless, since then I’ve been building and maintaining lots of services using Serverless. With a pinch of Skepticism, I sailed through some of the challenges and tooling, I want to share with the community the pains and glory of it.
The document outlines Viresh Doshi's top 10 Ansible tips based on his experience as a DevOps engineer. The tips include: adding a README to repositories to document purpose; unit testing roles with Molecule; using name and debug modules for readability and troubleshooting; connecting roles to Jenkins CI; using Python virtual environments; templating with Jinja2; ensuring idempotency; using variables consistently; splitting tasks across files; and sharing roles openly. Additional tips are to write modules, use filters, leverage Ansible Galaxy, manage inventories, and enjoy Python and coffee.
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.
Continuous Integration Testing in DjangoKevin Harvey
Continuous Integration is like having a robot that cleans up after you: it installs your dependencies, builds your project, run your tests, and reports back to you. This presentation outlines two methods for CI: Travis and Jenkins.
Maven: Managing Software Projects for Repeatable ResultsSteve Keener
Maven is a tool for managing Java-based software projects that provides a standard way to manage builds, documentation, dependencies, and project metadata. It simplifies common project tasks like compiling code, generating reports, and managing dependencies. Maven uses a Project Object Model (POM) file to store build settings and dependencies for a project. It maintains a central repository of dependencies to avoid duplicate copies of files. Maven builds can be configured to compile code, test it, package artifacts, and generate reports through a standardized process. Maven archetypes provide project templates to quickly generate new projects with common configurations.
Ant was the first modern build tool for Java projects, released in 2000. It is easy to use but lacks conventions around project structure and behavior. Maven was released in 2004 to improve on Ant's problems. Maven uses conventions for project structure and a declarative approach, allowing developers to simply define their project in a pom.xml file rather than explicitly specifying each build step.
What is maven? how maven works? how to integrate maven with eclipse? how to develop a maven project? If you are looking answers for these questions then go through this article, I'm sure it will answer all of them and trust me it's way easy than you are thinking. Come have a look.
Cinfony - Bring cheminformatics toolkits into tunebaoilleach
This document discusses bringing cheminformatics toolkits into interoperability using Cinfony, an open-source Python API. Cinfony allows users to access common functionality across toolkits like CDK, OpenBabel, RDKit, and Indigo in a consistent way. This is beneficial for users, developers, and avoids fragmentation in the field. The document provides examples of using Cinfony to combine toolkits, compare results, and access cheminformatics through web services. It concludes with considerations around inclusion in Linux distributions, API stability, and supporting additional toolkits and functionality.
Why do containers suddenly matter so much when they have been around since 1998? Take a look at the potential of OpenStack's Magnum, Murano and Nova-Docker in the context leveraging the incredible interest in Linux Containers brought about by Docker.
Check out www.stackengine.com to learn more about our excellent container management solution.
This was a talk given internally at BloomReach as well as a guest lecture to a grad level Data Structures and Algorithms class at the University of Texas at Arlington.
A Deep dive on the history of containers, and how they work under the cover utilizing Linux Kernel features such as Process Namespaces and Control Groups.
I also go over a bit of the history of Container technology, going from Chroot and Jails and Zones, to LXC and Docker
Puppet Camp Duesseldorf 2014: Toni Schmidbauer - Continuously deliver your pu...NETWAYS
At s-IT solutions we manage a diverse environment of about 1000 linux (redhat), solaris 10/11 and AIX hosts with the help of puppet open source.
In this talk we give a brief introduction of continuous delivery and explain how we manage our current puppet infrastructure with a focus on the deployment process. We introduce jenkins, a continuous integration server and how we use it to continuously deliver our puppet code base. We also explain how we use git and r10k to manage internal and external (github/forge) puppet modules.
Furthermore, we discuss current shortcomings of our setup and how we plan to improve.
Karthik Gaekwad is a member of the cloud team at National Instruments who owns the Canopy user management and licensing platform. He discusses National Instrument's approach to cloud development which includes short monthly iterations to incrementally develop and deploy new features. Key aspects of their approach include modeling the end-to-end system, designing features to be reusable across platforms, extensive testing and monitoring, and getting early user feedback through demos.
Creating Realistic Unit Tests with TestcontainersPaul Balogh
** Recording available at https://www.youtube.com/watch?v=sX4s1HqPZcw **
Sometimes, unit tests with mocked services just aren't enough. We'd like to be able to run repeatable tests against the real thing without fear of corrupting data or affecting others.
With Testcontainers, there is no need for mocks or complicated environment configurations. We can define our target environment in code and then run our tests against ephemeral containers. Java developers have had this ability for several years, but now Go developers have this similar ability!
Enjoy the discussion and demonstration of this open-source project created by the folks at AtomicJar, recently acquired by Docker.
Complementing Unit Testing with Static Analysis, with NUnit as an ExamplePVS-Studio
When discussing static analysis tools for C# projects, programmers will often deny the necessity of static analysis arguing that most errors can be caught through unit testing. So, I decided to find out how well one of the most popular unit-testing frameworks, NUnit, was tested and see if our analyzer could find anything of interest there.
Proper Null handling with modern java techniquesNikola Petrov
This document discusses proper null handling techniques in modern Java. It begins by explaining how to use Java 8's Optional class to avoid returning null values. For older Java versions, it recommends using JSR-305 annotations to document nullness. It provides examples of annotating method parameters, return types, and entire packages to specify nullness. The document encourages annotating packages by creating package-info.java files and using the @ParametersAreNonnullByDefault annotation.
How to Achieve Canary Deployment on KubernetesHanLing Shen
This document provides an overview of how to achieve canary deployments on Kubernetes. It begins with background on AWS Elastic Beanstalk and Kubernetes. It then explains blue/green deployments and canary deployments. The remainder of the document demonstrates how to set up canary deployments on Kubernetes using multiple deployments, services, and labels to route a portion of traffic to a new version. It also discusses tools like Helm and Jenkins that can help automate the canary deployment process.
- Ansible provides built-in modules and functionality for testing playbooks and roles, including syntax checking, validating idempotency, and asserting expected outcomes. Common approaches include testing against virtual environments and embedding functional tests within playbooks and roles.
- Tools like Molecule and Tox help standardize and automate testing Ansible roles across different environments and versions, and support continuous integration workflows. Following principles of testing outcomes over implementations and keeping tests focused helps ensure effective yet maintainable testing.
Devops - Continuous Integration And Continuous DevelopmentSandyJohn5
This document discusses DevOps CI/CD practices. It begins by introducing DevOps and contrasting it with traditional Waterfall and Agile methodologies. The document then covers the various stages of CI/CD pipelines including continuous development, continuous testing, continuous integration, continuous deployment, and continuous monitoring. It discusses tools used at each stage like version control systems, testing frameworks, CI servers, configuration management, containers, and monitoring tools. Specifically, it provides details on tools like Git, Jenkins, Selenium, Puppet, Docker, Splunk and the ELK stack.
Virtualenv allows creating isolated Python environments for projects with different dependencies by installing Python packages in project-specific directories rather than globally. It avoids issues that can arise from having multiple versions of packages system-wide. Virtualenv Wrapper provides helpful shell scripts to easily create, delete, and switch between virtual environments.
CAPS: What's best for deploying and managing OpenStack? Chef vs. Ansible vs. ...Daniel Krook
Presentation at the OpenStack Summit in Tokyo, Japan on October 29, 2015.
http://sched.co/49vI
This talk will cover the pros and cons of four different OpenStack deployment mechanisms. Puppet, Chef, Ansible, and Salt for OpenStack all claim to make it much easier to configure and maintain hundreds of OpenStack deployment resources. With the advent of large-scale, highly available OpenStack deployments spread across multiple global regions, the choice of which deployment methodology to use has become more and more relevant.
Beyond the initial day-one deployment, when it comes to the day-two and beyond questions of updating and upgrading existing OpenStack deployments, it becomes all the more important choose the right tool.
Come join the Bluebox and IBM team to discuss the pros and cons of these approaches. We look at each of these four tools in depth, explore their design and function, and determine which scores higher than others to address your particular deployment needs.
Daniel Krook - Senior Software Engineer, Cloud and Open Source Technologies, IBM
Paul Czarkowski - Cloud Engineer at Blue Box, an IBM company
Daniel Krook - Senior Software Engineer, Cloud and Open Source Technologies, IBM
Similar to Test driven Infrastructure development with Ansible and Molecule (20)
This presentation by Professor Alex Robson, Deputy Chair of Australia’s Productivity Commission, was made during the discussion “Competition and Regulation in Professions and Occupations” held at the 77th meeting of the OECD Working Party No. 2 on Competition and Regulation on 10 June 2024. More papers and presentations on the topic can be found at oe.cd/crps.
This presentation was uploaded with the author’s consent.
Suzanne Lagerweij - Influence Without Power - Why Empathy is Your Best Friend...Suzanne Lagerweij
This is a workshop about communication and collaboration. We will experience how we can analyze the reasons for resistance to change (exercise 1) and practice how to improve our conversation style and be more in control and effective in the way we communicate (exercise 2).
This session will use Dave Gray’s Empathy Mapping, Argyris’ Ladder of Inference and The Four Rs from Agile Conversations (Squirrel and Fredrick).
Abstract:
Let’s talk about powerful conversations! We all know how to lead a constructive conversation, right? Then why is it so difficult to have those conversations with people at work, especially those in powerful positions that show resistance to change?
Learning to control and direct conversations takes understanding and practice.
We can combine our innate empathy with our analytical skills to gain a deeper understanding of complex situations at work. Join this session to learn how to prepare for difficult conversations and how to improve our agile conversations in order to be more influential without power. We will use Dave Gray’s Empathy Mapping, Argyris’ Ladder of Inference and The Four Rs from Agile Conversations (Squirrel and Fredrick).
In the session you will experience how preparing and reflecting on your conversation can help you be more influential at work. You will learn how to communicate more effectively with the people needed to achieve positive change. You will leave with a self-revised version of a difficult conversation and a practical model to use when you get back to work.
Come learn more on how to become a real influencer!
Carrer goals.pptx and their importance in real lifeartemacademy2
Career goals serve as a roadmap for individuals, guiding them toward achieving long-term professional aspirations and personal fulfillment. Establishing clear career goals enables professionals to focus their efforts on developing specific skills, gaining relevant experience, and making strategic decisions that align with their desired career trajectory. By setting both short-term and long-term objectives, individuals can systematically track their progress, make necessary adjustments, and stay motivated. Short-term goals often include acquiring new qualifications, mastering particular competencies, or securing a specific role, while long-term goals might encompass reaching executive positions, becoming industry experts, or launching entrepreneurial ventures.
Moreover, having well-defined career goals fosters a sense of purpose and direction, enhancing job satisfaction and overall productivity. It encourages continuous learning and adaptation, as professionals remain attuned to industry trends and evolving job market demands. Career goals also facilitate better time management and resource allocation, as individuals prioritize tasks and opportunities that advance their professional growth. In addition, articulating career goals can aid in networking and mentorship, as it allows individuals to communicate their aspirations clearly to potential mentors, colleagues, and employers, thereby opening doors to valuable guidance and support. Ultimately, career goals are integral to personal and professional development, driving individuals toward sustained success and fulfillment in their chosen fields.
This presentation by OECD, OECD Secretariat, was made during the discussion “Competition and Regulation in Professions and Occupations” held at the 77th meeting of the OECD Working Party No. 2 on Competition and Regulation on 10 June 2024. More papers and presentations on the topic can be found at oe.cd/crps.
This presentation was uploaded with the author’s consent.
This presentation, created by Syed Faiz ul Hassan, explores the profound influence of media on public perception and behavior. It delves into the evolution of media from oral traditions to modern digital and social media platforms. Key topics include the role of media in information propagation, socialization, crisis awareness, globalization, and education. The presentation also examines media influence through agenda setting, propaganda, and manipulative techniques used by advertisers and marketers. Furthermore, it highlights the impact of surveillance enabled by media technologies on personal behavior and preferences. Through this comprehensive overview, the presentation aims to shed light on how media shapes collective consciousness and public opinion.
Collapsing Narratives: Exploring Non-Linearity • a micro report by Rosie WellsRosie Wells
Insight: In a landscape where traditional narrative structures are giving way to fragmented and non-linear forms of storytelling, there lies immense potential for creativity and exploration.
'Collapsing Narratives: Exploring Non-Linearity' is a micro report from Rosie Wells.
Rosie Wells is an Arts & Cultural Strategist uniquely positioned at the intersection of grassroots and mainstream storytelling.
Their work is focused on developing meaningful and lasting connections that can drive social change.
Please download this presentation to enjoy the hyperlinks!
Mastering the Concepts Tested in the Databricks Certified Data Engineer Assoc...SkillCertProExams
• For a full set of 760+ questions. Go to
https://skillcertpro.com/product/databricks-certified-data-engineer-associate-exam-questions/
• SkillCertPro offers detailed explanations to each question which helps to understand the concepts better.
• It is recommended to score above 85% in SkillCertPro exams before attempting a real exam.
• SkillCertPro updates exam questions every 2 weeks.
• You will get life time access and life time free updates
• SkillCertPro assures 100% pass guarantee in first attempt.
XP 2024 presentation: A New Look to Leadershipsamililja
Presentation slides from XP2024 conference, Bolzano IT. The slides describe a new view to leadership and combines it with anthro-complexity (aka cynefin).
2. Test-driven infrastructure development with Ansible & Molecule
Test-driven infrastructure development with Ansible &
Molecule
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 2 / 38
3. Test-driven infrastructure development with Ansible & Molecule
What is Ansible?
“Working in IT, you’re likely doing the same tasks over and over. What if
you could solve problems once and then automate your solutions going
forward? Ansible is here to help.”
Ansible is a simple provisioning tool that allows to automate tasks like:
server provisioning
software deployment
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 3 / 38
4. Test-driven infrastructure development with Ansible & Molecule
Why Ansible?
It is agentless. Everything is done via ssh.
Its YAML configuration files use structure and syntax that will be
familiar to Python programmers.
Ansible’s documentation is vast.
Ansible is easily extended by roles. Roles are Ansibles’ reusable code.
Many roles are available and evaluated by the community (stars,
downloads, comments)
It encourages to discipline yourself to never changing configuration
on your target machines via login.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 4 / 38
5. Test-driven infrastructure development with Ansible & Molecule
Why Ansible for Plone?
Here I found the documentation of an Ansible role to provision a Plone
infrastructure.
Installing Plone for production, particularly for a busy or complex site,
is hard and requires you learn about a variety of moving parts:
ZEO server
ZEO clients
Process-control
Load balancing
Reverse-proxy caching
URL rewriting and HTTPS support including certificate management
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 5 / 38
6. Test-driven infrastructure development with Ansible & Molecule
Provisioning a Plone server
HUGE disclaimer: I don’t know Plone and I have never installed one.
But I like to jump into new things using Ansible when possible.
So, let’s pretend that I had to provision a Plone infrastructure. What
would I do and how would I test my deploy strategy?
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 6 / 38
7. Test-driven infrastructure development with Ansible & Molecule
Install Ansible
Ansible is a Python package. So, install Ansible using virtualenv and
pip – not your OS package manager
$ apt install virtualenv
$ virtualenv -p /usr/bin/python3.6 py36ansible281
$ source py36ansible281/bin/activate
$ (py36ansible281)$ pip install ansible==2.8.1
Check that Ansible works
$ echo "localhost" > inventory
$ ansible all -m ping -i inventory
$ localhost | success >> {
"changed": false,
"ping": "pong" }
Yes, it is that simple.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 7 / 38
8. Test-driven infrastructure development with Ansible & Molecule
The ansible-playbook command
Ping your instance using the ansible-playbook command.
A playbook.yml file:
hosts: all
tasks:
- name: Ping your instance
action: ping
ansible-playbook -i inventory playbook.yml
TASK [Ping] *****************************************
ok: [localhost] => {"changed": false, "ping": "pong"}
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 8 / 38
9. Test-driven infrastructure development with Ansible & Molecule
Do Ansible the right way
from the beginning: use roles.
Roles provide a directory structure for breaking a (huge) playbook
into multiple files.
This simplifies writing complex playbooks, and it makes them easier
to reuse.
Plus, it makes them easier to be used by others.
Roles can be created by using the ansible-galaxy init command.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 9 / 38
10. Test-driven infrastructure development with Ansible & Molecule
Molecule
Instead of using ansible-galaxy I will use Molecule. Molecule is
designed to aid in the development and testing of Ansible roles.
Molecule was adopted by the Ansible project on September 26 2018.
Molecule supports any provider that Ansible supports. Providers can be
bare-metal, virtual, cloud or containers. If Ansible can use it, Molecule
can test it. Molecule simply leverages Ansible’s module system to
manage instances.
So, let’s create a role using Molecule.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 10 / 38
11. Test-driven infrastructure development with Ansible & Molecule
Install Molecule
Molecule is a python package, let’s manage it using virtualenv and pip, as
usual.
(py36ansible281)$ pip install molecule==2.22
(py36ansible281)$ pip install testinfra==3.2.0
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 11 / 38
12. Test-driven infrastructure development with Ansible & Molecule
Develop a role with Molecule
Create a role named example:
$ molecule init role -r example -d docker
--> Initializing new role example...
Initialized role in
/home/serena/Work/test/example successfully.
This command uses ansible-galaxy behind the scenes to generate a new
Ansible role, then it injects a molecule directory in the role, and sets it up
to run builds and test runs in a docker environment. Inside the Molecule
directory is a default directory, indicating the default test scenario.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 12 / 38
13. Test-driven infrastructure development with Ansible & Molecule
Develop a role with Molecule
Now, what’s inside this role scaffold? The usual Ansible directory structure
(tasks, defaults, handlers…), plus a molecule folder.
$ tree -L 1
defaults
handlers
meta
molecule
README.md
tasks
vars
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 13 / 38
14. Test-driven infrastructure development with Ansible Molecule
Develop a role with Molecule
In Ansible everything starts from the tasks/main.yml file:
$ cd example
$ cat tasks/main.yml
There is nothing here. Let’s run some code!
- name: A simple hello
command: echo hello
changed_when: False
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 14 / 38
15. Test-driven infrastructure development with Ansible Molecule
Develop a role with Molecule
Molecule has also created a playbook to run the role,
molecule/default/playbook.yml:
$ ansible-playbook molecule/default/playbook.yml -v
TASK [/home/serena/Work/test/example : A simple hello] ***
ok: [localhost] = {
changed: false,
cmd: [echo hello]],
}
STDOUT: hello
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 15 / 38
16. Test-driven infrastructure development with Ansible Molecule
What about tests?
So far we have seen how to:
install Ansible
install Molecule
create the simplest Ansible role following the best practices.
Now, what about tests?
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 16 / 38
17. Test-driven infrastructure development with Ansible Molecule
Test using Molecule
In the molecule folder there is a sub folder called default. This is a
Scenario.
A scenario is a test suite for your newly created role.
You can have as many scenarios as you like and Molecule will run one
after the other.
The molecule default Scenario is called “default”
$ cd molecule/default/
$ tree -L 1
.
Dockerfile.j2
INSTALL.rst
molecule.yml
playbook.yml
tests
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 17 / 38
18. Test-driven infrastructure development with Ansible Molecule
Test using Molecule
The molecule.yml is for configuring Molecule. It is a YAML file whose
keys represent the high level components that Molecule provides. The
default Molecule Scenario uses Docker.
$ cat molecule.yml
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: instance
image: centos:7
The tests will run in a container, named instance and based onto
the image variable. You can add multiple containers and dedicate parts
of your role to a specific container.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 18 / 38
19. Test-driven infrastructure development with Ansible Molecule
A Molecule test
molecule test --help
Usage: molecule test [OPTIONS]
Test (lint, cleanup, destroy, dependency,
syntax, create, prepare, converge, idempotence,
side_effect, verify, cleanup, destroy).
The linting phases are quite difficult to pass, so, honestly, I usually disable
them. I can re-apply the linting rules once the development phase is
concluded.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 19 / 38
20. Test-driven infrastructure development with Ansible Molecule
A Molecule test
My final molecule.yml:
$ cat molecule/default/molecule.yml
---
lint:
name: yamllint
enabled: False
provisioner:
name: ansible
lint:
name: ansible-lint
enabled: False
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 20 / 38
21. Test-driven infrastructure development with Ansible Molecule
A simple Molecule test
The test matrix (not complete):
$ molecule test
-- Validating schema .
Validation completed successfully.
-- Test matrix
default
lint
create
converge
idempotence
destroy
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 21 / 38
22. Test-driven infrastructure development with Ansible Molecule
A simple Molecule test
Converge:
-- Scenario: 'default'
-- Action: 'converge'
PLAY [Converge] ************************
TASK [Gathering Facts] ****************
ok: [instance]
TASK [example : A simple hello] *******
ok: [instance]
PLAY RECAP ****************************
instance : ok=2 changed=0
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 22 / 38
23. Test-driven infrastructure development with Ansible Molecule
A simple Molecule test
Idempotence:
-- Action: 'idempotence'
Idempotence completed successfully.
Destroy:
-- Action: 'destroy'
PLAY [Destroy] ************************************
TASK [Destroy molecule instance(s)] ****************
changed: [localhost] = (item=instance)
TASK [Delete docker network(s)] ****************
PLAY RECAP *********************************
localhost : ok=2 changed=2serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 23 / 38
24. Test-driven infrastructure development with Ansible Molecule
The Plone Ansible role
Following the Plone documentation there is an Ansible role for provisioning
a Plone infrastructure. Let’s take a look.
$ git clone https://github.com/plone/ansible-playbook.git
$ cd ansible-playbook
$ make all
$ ansible-galaxy -r requirements.yml -p roles install
What’s inside this directory?
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 24 / 38
25. Test-driven infrastructure development with Ansible Molecule
The Plone Ansible role
There are a lot of directories here, including roles and a few playbooks:
$ tree -L 1
....
README.rst
requirements.yml
roles
sample-medium.yml
sample-multiserver.yml
sample-small.yml
sample-very-small.yml
...
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 25 / 38
26. Test-driven infrastructure development with Ansible Molecule
The Plone Ansible role
Following the instructions here configure the playbook to include these
roles:
$ cat playbook.yml
...
- name: Include vars from local-configure.yml if found
include_vars: {{ item }}
with_first_found:
- local-configure.yml
...
$ cp sample-very-small.yml local-configure.yml
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 26 / 38
27. Test-driven infrastructure development with Ansible Molecule
The Plone Ansible role
Following the README I did:
disable munin
configure the admin credentials
run make all to download some other Ansible roles
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 27 / 38
28. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
Now I am ready to inject a molecule test here!
I will use a non default scenario. I will test the Plone deployment using the
ec2 (AWS EC2) driver. (Docker doesn’t work in this case. Services bother
regular Docker containers).
$ molecule init scenario -d ec2
-- Initializing new scenario default...
Initialized scenario in
ansible-playbook/molecule/default successfully.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 28 / 38
29. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
Using the ec2 driver the default scenario layout looks a bit different:
$ tree -L 1 molecule/default/
molecule/default/
create.yml
destroy.yml
INSTALL.rst
molecule.yml
playbook.yml
prepare.yml
tests
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 29 / 38
30. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
Using the ec2 driver the molecule.yml file looks like this:
driver:
name: ec2
platforms:
- name: instance
image: ami-11bb0e7e
instance_type: t2.micro
...
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 30 / 38
31. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
There is a create.yml file instead of a Dockerfile. This playbook:
creates a security group
creates a keypair and puts it in
.cache/molecule/ansible-playbook/ec2/ssh_key
expects to find the env variable EC2_REGION
expects to find the aws credentials in ~/.aws file
starts the aws instance
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 31 / 38
32. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
The create.yml file:
---
- name: Create
hosts: localhost
connection: local
vars:
ssh_user: admin
ssh_port: 22
security_group_name: molecule
security_group_description: Security group
security_group_rules:
- proto: tcp
from_port: {{ ssh_port }}
to_port: {{ ssh_port }}
cidr_ip: '0.0.0.0/0'
....serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 32 / 38
33. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
Now change the main playbook that molecule will use:
$ cat molecule/default/playbook.yml
- name: Plone
include: /home/serena/Work/test/ansible-playbook/playbook.ym
To test the Plone Ansible role, which is a collection of ~13 roles.
$ tree -L 1 roles/
roles/
audit
default_config
....
timezone
varnish
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 33 / 38
34. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
I will dare to say that this is becoming a test-driven cloud deployment
with Molecule and Ansible.
Now, that’s a statement!
However, we are getting close to it. Let’s do this.
$ molecule converge
And about ~15 minutes of Ansible later …
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 34 / 38
35. Test-driven infrastructure development with Ansible Molecule
The Plone web interface
Figure 1: Plone website
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 35 / 38
36. Test-driven infrastructure development with Ansible Molecule
Test the Plone Ansible role
Remeber to destroy this instance:
$ molecule destroy
The molecule test command does the full
converge/idempotence/destroy workflow, but, for keeping things alive for a
bit, I run the molecule converge and molecule destroy commands
one after the other.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 36 / 38
37. Test-driven infrastructure development with Ansible Molecule
Summary
Ansible is easy
Molecule really helps in developing roles and
allows to have many pre-configured test scenarios
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 37 / 38
38. Test-driven infrastructure development with Ansible Molecule
The end
Thank you for your attention.
serena@biodec.com Serena Lorenzini, PhD (www.biodec.com) PloneConf2019 38 / 38