Puppet is a configuration automation platform that simplifies system administration tasks. It uses a client/server model where agent nodes pull configuration profiles from the Puppet master. Modules on the master describe the desired system configuration. Puppet translates modules into code and configures agent servers as needed. Puppet can manage infrastructure across multiple servers.
Infrastructure Deployment with Docker & AnsibleRobert Reiz
This is an introduction to Docker & Ansible. It shows how Ansible can be used as orchestration too for Docker. There are 2 real world examples included with code examples in a Gist.
An on-going presentation for the Docker workshop on how to integrate docker into Vagrant as a provider. In order to remove the requirement of having a VM, and speedup development environments. It also features Puppet as the configuration management system.
The code can be found in: https://github.com/npoggi/vagrant-docker
Infrastructure Deployment with Docker & AnsibleRobert Reiz
This is an introduction to Docker & Ansible. It shows how Ansible can be used as orchestration too for Docker. There are 2 real world examples included with code examples in a Gist.
An on-going presentation for the Docker workshop on how to integrate docker into Vagrant as a provider. In order to remove the requirement of having a VM, and speedup development environments. It also features Puppet as the configuration management system.
The code can be found in: https://github.com/npoggi/vagrant-docker
Introductory seminar on Docker and its components (networks and Compose in particular). Focused on going through some basic concepts, mention some more advanced topics, and introduce a practical workshop held on the same evening.
Bare Metal to OpenStack with Razor and ChefMatt Ray
Slides from the OpenStack Spring 2013 Summit workshop presented by Egle Sigler (@eglute) and Matt Ray (@mattray) from Rackspace and Opscode respectively. Please refer to http://anystacker.com/ for additional content.
Overview of Docker 1.11 features(Covers Docker release summary till 1.11, runc/containerd, dns load balancing ipv6 service discovery, labels, macvlan/ipvlan)
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCarlos Sanchez
In this presentation Carlos Sanchez will share his experience running Jenkins at scale, using Docker and Apache Mesos to create one of the biggest (if not the biggest) Jenkins clusters to date.
By taking advantage of Apache Mesos, the Jenkins platform is dynamically scaled to run jobs across hundreds of Jenkins masters, on Docker containers distributed across the Mesos cluster. Jenkins slaves are dynamically created based on load, using the Jenkins Mesos and Docker plugins, running in containers distributed across multiple hosts, and isolating job execution.
This presentation will allow a better understanding of Apache Mesos and the challenges of running Docker containerized and distributed applications, particularly JVM ones, by sharing a real world use case, including good and bad decisions and how they affected the development.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Docker is popular open-source software containerization platform. It provides an ability to package software into standardised units on Docker for software development. In this hands-on introductory session, I introduce the concept of containers and provide an overview of Docker. Participants can learn important concepts in Docker step-by-step and learn by example by running commands with me. The main session involves using Docker CLI (Command Line Interface) covering all the key concepts such as creating images and managing containers. What is more, this workshop ends with a complete example of getting some amazing work done with ease using Docker. Presented in OSI Days '16: http://opensourceindia.in/osidays/workshops-osi-2016/
Docker has created enormous buzz in the last few years. Docker is a open-source software containerization platform. It provides an ability to package software into standardised units on Docker for software development. In this hands-on introductory session, I introduce the concept of containers, provide an overview of Docker, and take the participants through the steps for installing Docker. The main session involves using Docker CLI (Command Line Interface) - all the concepts such as images, managing containers, and getting useful work done is illustrated step-by-step by running commands.
From Monolith to Docker Distributed ApplicationsCarlos Sanchez
Docker is revolutionizing the way people think about applications and deployments. It provides a simple way to run and distribute Linux containers for a variety of use cases, from lightweight virtual machines to complex distributed micro-services architectures.
Containers allow to run services in isolation with a minimum performance penalty, increased speed, easier configuration and less complexity, making it ideal for continuous integration and continuous delivery based workloads. But migrating an existing application to a distributed microservices architecture is no easy task, requiring a shift in the software development, networking and storage to accommodate the new architecture.
We will provide insight on our experience creating a Jenkins platform based on distributed Docker containers running on Apache Mesos and Marathon, applicable for all types of applications, but specially Java and JVM based nones.
Docker 101: an introduction to Docker. The presentation introduces the Docker fundamentals, including LXC Containers and other tools of the Docker ecosystem.
Introductory seminar on Docker and its components (networks and Compose in particular). Focused on going through some basic concepts, mention some more advanced topics, and introduce a practical workshop held on the same evening.
Bare Metal to OpenStack with Razor and ChefMatt Ray
Slides from the OpenStack Spring 2013 Summit workshop presented by Egle Sigler (@eglute) and Matt Ray (@mattray) from Rackspace and Opscode respectively. Please refer to http://anystacker.com/ for additional content.
Overview of Docker 1.11 features(Covers Docker release summary till 1.11, runc/containerd, dns load balancing ipv6 service discovery, labels, macvlan/ipvlan)
CI and CD at Scale: Scaling Jenkins with Docker and Apache MesosCarlos Sanchez
In this presentation Carlos Sanchez will share his experience running Jenkins at scale, using Docker and Apache Mesos to create one of the biggest (if not the biggest) Jenkins clusters to date.
By taking advantage of Apache Mesos, the Jenkins platform is dynamically scaled to run jobs across hundreds of Jenkins masters, on Docker containers distributed across the Mesos cluster. Jenkins slaves are dynamically created based on load, using the Jenkins Mesos and Docker plugins, running in containers distributed across multiple hosts, and isolating job execution.
This presentation will allow a better understanding of Apache Mesos and the challenges of running Docker containerized and distributed applications, particularly JVM ones, by sharing a real world use case, including good and bad decisions and how they affected the development.
Vagrant is a well-known tool for creating development environments in a simple and consistent way. Since we adopted in our organization we experienced several benefits: lower project setup times, better shared knowledge among team members, less wtf moments ;-)
In this session I'd like to share our experience, including but not limited to:
- advanced vagrantfile configuration
- vm configuration tips for dev environment: performance, debug, tuning
- our wtf moments
- puphet/phansilbe: hot or not?
- tips for sharing a box
Docker is popular open-source software containerization platform. It provides an ability to package software into standardised units on Docker for software development. In this hands-on introductory session, I introduce the concept of containers and provide an overview of Docker. Participants can learn important concepts in Docker step-by-step and learn by example by running commands with me. The main session involves using Docker CLI (Command Line Interface) covering all the key concepts such as creating images and managing containers. What is more, this workshop ends with a complete example of getting some amazing work done with ease using Docker. Presented in OSI Days '16: http://opensourceindia.in/osidays/workshops-osi-2016/
Docker has created enormous buzz in the last few years. Docker is a open-source software containerization platform. It provides an ability to package software into standardised units on Docker for software development. In this hands-on introductory session, I introduce the concept of containers, provide an overview of Docker, and take the participants through the steps for installing Docker. The main session involves using Docker CLI (Command Line Interface) - all the concepts such as images, managing containers, and getting useful work done is illustrated step-by-step by running commands.
From Monolith to Docker Distributed ApplicationsCarlos Sanchez
Docker is revolutionizing the way people think about applications and deployments. It provides a simple way to run and distribute Linux containers for a variety of use cases, from lightweight virtual machines to complex distributed micro-services architectures.
Containers allow to run services in isolation with a minimum performance penalty, increased speed, easier configuration and less complexity, making it ideal for continuous integration and continuous delivery based workloads. But migrating an existing application to a distributed microservices architecture is no easy task, requiring a shift in the software development, networking and storage to accommodate the new architecture.
We will provide insight on our experience creating a Jenkins platform based on distributed Docker containers running on Apache Mesos and Marathon, applicable for all types of applications, but specially Java and JVM based nones.
Docker 101: an introduction to Docker. The presentation introduces the Docker fundamentals, including LXC Containers and other tools of the Docker ecosystem.
Docker and Puppet for Continuous IntegrationGiacomo Vacca
Today developers want to change the code, build and deploy often, even several times per day.
New versions of software may need to be tested on different distributions, and with different configurations.
Achieving this with Virtual Machines it’s possible, but it’s very resource and time consuming. Docker provides an incredibly good solution for this, in particular if combined with Continuous Integration tools like Jenkins and Configuration Management tools like Puppet.
This presentation focuses on the opportunities to configure automatically Docker images, use Docker containers as disposable workers during your tests, and even running your Continuous Integration system inside Docker.
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?
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.
Managing Windows Systems with Puppet - PuppetConf 2013Puppet
"Managing Windows Systems with Puppet" by James Sweeny Professional Services Engineer, Puppet Labs.
Presentation Overview: Since Puppet grew up in the *nix world, there is a common misconception that it can't be used to effectively manage Windows. This talk hopes to dispel confusion on the matter and demonstrate that Windows can be managed effectively and easily with Puppet. Along with basic how-tos and tips on working with Windows systems using Puppet, Windows specific issues and caveats will be discussed with effective mitigations.
Speaker Bio: James is a recovering sysadmin currently working as a Professional Services Engineer at Puppet Labs. He performs training and advises on configuration and systems management best practices in his day job. Though his focus is primarily on Linux systems, he frequently is tasked to work on Solaris, OS/X, and Windows. He is unafraid to admit that he runs Windows 7 on his primary desktop.
Puppetconf 2015 - Puppet Reporting with Elasticsearch Logstash and Kibanapkill
Answer deep questions about the health of configuration runs on your nodes with the popular Elasticsearch, Logstash and Kibana stack. While many questions about resources, catalogs and runtimes can be answered by using the Puppet Dashboard or Puppet Enterprise, there are limitations. Putting the reports and run metrics into Elasticsearch gives users full text search and filtering. Also, you can perform metrics and aggregations over resource numbers or run times. Kibana graphs are also a great way to supplement the dashboards available in Puppet Enterprise.
"Building on Puppet and Puppet Forge" by Pedro Pessoa of Server Density at Puppet Camp London 2014. Find the video here: http://puppetlabs.com/community/puppet-camp
VISIT US : http://lcdprojectorreview.net/
Combining one of the Best LCD projectors with particular gear pieces that propose the most recent advances is something that you need to do in the event that you wish to delight in energizing feature encounters.
Introduction of hook and loop velcro products -propadSammi Liang
Visit our website for more details of adhesive hook and loop velcro coins/tape/ strap.They are available in squares, coins, straps, and tapes and come in a range of colors by prodigy.
VISIT US : http://lcdprojectorreview.net/
Interactive Portable LCD Projector are uncommonly adaptable to utilize. They can adequately extend pictures and features on substantial or adaptable screen sizes.
DevOps Series: Extending vagrant with Puppet for configuration managementFelipe
This is a short presentation on the reasons why you would augment your Vagrant installation with a full-fledged provisioner like Puppet and some examples of basic things you can do with it.
One-Man Ops with Puppet & Friends.
If you're getting started in Amazon AWS here's 7 tools that will help you be successful, a few tips to make your life easier and some common pitfalls to avoid.
A book for learning puppet by real example and by building code. Chapter 1 gives you basic introduction and sets you up with a server-agent using Vagrant so that you can do hands-on.
My talk given at Confoo, 2011 in Montreal, Quebec on using the Puppet client/server deployment tool for complex web application deployments. This is an introduction talk, and introduces everything you'll need to get started.
PuppetCamp SEA 1 - Puppet Deployment at OnAppOlinData
Wai Keen Woon, CTO CDN Division OnApp Malaysia, gave an interesting overview of what the Puppet architecture at OnApp looks like. The CDN division at OnApp is a large provider of CDN services, and as such makes a very interesting candidate for a case study.
Similar to Installaling Puppet Master and Agent (20)
2. What is Puppet?
• Puppet is a configuration automation platform that is meant to
simplify various system administration tasks.
• Puppet uses a client/server formation where the servers,
called agent nodes talk to and pull down configuration profiles from
the master client, or Puppet master.
• Puppet is written in its own Puppet language, meant to be
accessible to system administrators.
• A module, located on the Puppet master, describes the desired
system.
• Puppet then translates the module into code and alters the agent
servers as needed when you run the puppet agent command on an
agent node, or automatically at the configured intervals.
• Puppet can be used to manage multiple servers across various
infrastructures
3. Setting up the Puppet Master
• Enable the “puppetlabs-release” repository on Ubuntu, unpackage it and update
the system
wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
sudo dpkg -i puppetlabs-release-trusty.deb
sudo apt-get update
sudo apt-get install puppetmaster-passenger
sudo apt-get install puppetmaster
• Ensure you have latest version of puppet running
puppet resource package puppetmaster ensure=latest
• Puppet master is controlled by Apache2. so it runs when Apache2 runs
sudo service Apache2 stop | start | restart | status
• Make sure the hostname is “puppet” and hosts has entry
sudo vi /etc/hostname - puppet
sudo vi /etc/hosts - <ip> puppet , puppet.localdomain
<ip> agent-01, agent-01.localdomain
<ip> agent-02, apent-02.localdomain
• Lock the puppet version
Create a new file sudo vi /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.4*
Pin-Priority: 501
4. Setting up the Puppet Master …
• Setup puppet master names and certificates
Edit master’s puppet.conf file - sudo vi /etc/puppet/puppet.conf
Delete the line with templatedir
Under the [master] section add the following
- certname = puppet
- dns_alt_names = puppet, puppet.localdomain
• Master’s certificates set up
delete old certificates - sudo rm –rf /var/lib/puppet/ssl
Create a new CA certificate - sudo puppet master –verbose --no-daemonize
Press Ctrl-C after Notice: Starting puppet master message to return to shell
In case “Address in Use” error comes, it could be because puupet master is controlled by Apache2
and that needs to be stopped - sudo service Apache2 stop
to list all certificates on master: sudo puppet cert list -all
Start master - sudo service puppet start
Signing certificates
sudo puppet cert sign <agent-name>
5. Setting up the Puppet Agent
• Enable the “puppetlabs-release” repository on Ubuntu, unpackage it and
update the system
wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
sudo dpkg -i puppetlabs-release-trusty.deb
sudo apt-get update
sudo apt-get install puppet
• Ensure you have latest version of puppet running
puppet resource package puppet ensure=latest
• Puppet is disabled by default.
edit /etc/default/puppet and change start=yes
• Make sure the hostname is “puppet” and hosts has entry
sudo vi /etc/hostname - agent-01 or host-01 or whatever is the hostname
sudo vi /etc/hosts - <ip> puppet , puppet.localdomain
<ip> agent-01, agent-01.localdomain
• Lock the puppet version
Create a new file sudo vi /etc/apt/preferences.d/00-puppet.pref
Package: puppet puppet-common puppetmaster-passenger
Pin: version 3.4*
Pin-Priority: 501
6. Setting up the Puppet Agent …
• Setup puppet master name and certificates
Edit agent’s puppet.conf file - sudo vi /etc/puppet/puppet.conf
delete templatedir
delete [master] and the lines below it.
Add [agent]
server = puppet.localdomain
Start puppet agent
sudo service puppet start
if no output (other than done), then it means the agent has connected
to master and is being managed by the master.
7. Gathering facts
• Puppet gathers facts about each of its nodes using a tool
called “facter”.
• Facter gathers basic facts about nodes (systems) such as
hardware details, network settings, OS type and version, IP
addresses, MAC addresses, SSH keys , etc
• These facts are then made available in puppet as variables.
• It is possible to add custom facts as needed.
• On master -
sudo vi /etc/puppet/manifests/site.pp
add the below lines
file {'/tmp/example-ip': # resource type file and filename
ensure => present, # make sure it exists
mode => 0644, # file permissions
content => "Here is my Public IP Address: ${ipaddress_eth0}.n", # note the ipaddress_eth0
}
On Agent
sudo puppet agent –test -- will create file /tmp/example-ip and print node’s ip address
Here is my Public IP Address: x.x.x.x.
8. Puppet manifest with module
• Modules are useful for grouping tasks together.
• There are many modules available in the Puppet community,
and you can even write your own.
• On master - install puppetlabs-apache module from forgeapi
sudo puppet module install puppetlabs-apache or <module-name>
edit site.pp (sudo vi /etc/puppet/manifests/site.pp) and add the below lines
node 'host-01' {
class { 'apache': } # use apache module
apache::vhost { ‘mysite.com': # define vhost resource
port => '80',
docroot => '/var/www/html'
}
},
On Agent
sudo puppet agent –test
Should see output with Apache2 getting installed
9. Puppet code
Puppet code is primarily composed of resource declarations.
A resource describes something about the state of the system,
such as a certain user or file should exist, or a package should
be installed.
Example of user resource declaration
user { ‘ranjit':
ensure => present,
uid => '1000',
gid => '1000',
shell => '/bin/bash',
home => '/home/ranjit'
}
Example of resource declaration
resource_type { ‘resource_name':
attribute => value,
…..
}
To list all resource types: sudo puppet resource --types
10. Manifests & Classes
Puppet programs are called manifests.
Manifests are composed of puppet code with a .pp extension.
Default main manifest installed via apt is “site.pp”. Another
example of manifest is node, for installing Apache on agent.
Classes - A class definition is where the code that composes a
class lives. Defining a class makes the class available to be
used in manifests, but does not actually evaluate to anything.
Class Definition
class myclass {
…… (puppet code)
}
Class Declaration - include myclass. This will cause puppet
to evaluate puppet code in “myclass”
A resource like class declaration occurs when a class is
declared like a resource. E.g. class {‘apache’:}
11. Modules
A module is a collection of manifests and data
(such as facts, files, and templates), and they
have a specific directory structure.
Modules are useful for organizing your Puppet
code, because they allow you to split your code
into multiple manifests.
To add a module to Puppet, place it in
the /etc/puppet/modules directory
12. Developing a manifest
Using Puppet to set up LAMP stack on Ubuntu.
The following resources are needed on Ubuntu server
1. Apache2 installed and running
2. MySQL server package installed and running
3. php5 package installed and a test php script file present
4. update apt before and after installing packages
For this we write a manifest with the following types of resource declarations
1. exec - to execute commands – e.g. apt-get update
2. package – to install packages via apt-get
3. Service - to ensure that a service is running
4. File – to ensure that certain file exists.
Create manifest on the node where you want to install lamp
sudo vi /etc/puppet/manifests/lamp.pp
sudo puppet apply –test
See the attached lamp.pp file
13. Installing lamp on multiple nodes
Use modules to install lamp on multiple nodes.
Create a directory - lamp/manifests in /etc/puppet/modules
Create a file – init.pp in lamp/manifests
(/etc/puppet/modules/lamp/manifests/init.pp)
Add the following lines in init.pp
1. class lamp {
2. // add the code in lamp.pp here
3. }
On puppet master, in site.pp, add the following
1. node default{ include lamp } OR
2. node ‘host-01’ {
3. include lamp
4. }
5. A node block allows you to specify Puppet code that will only apply to certain agent
nodes. The default node applies to every agent node that does not have a node block
specified
On puppet agent, do the following
sudo puppet agent –test --verbose
see the output
lamp is installed on agent