SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
DEVOPS TOOLS FOR EVERYONE: 

VAGRANT, PUPPET AND WEBMIN
!
Michał Karzyński, DevCon 2014
TALK OUTLINE
1. Vagrant - create#
2. Puppet - configure#
3. Webmin - administer
michal@karzynski.pl DevCon 2014
YOURSTRULY
Michał Karzyński#
• project manager at Politechnika Gdańska#
• freelance developer and consultant#
• polyglot, currently: Python and JavaScript#
• author#
• web developer since 1996#
• @postrational http://michal.karzynski.pl#
michal@karzynski.pl DevCon 2014
What does a webapp look like?
LAMP
Apache
Linux
MySQL
PHP
Nginx
Linux
PostgreSQL
Python
Virtualenv
Gunicorn
Nginx
Linux
PostgreSQL
Python
Virtualenv
Gunicorn
Varnish
Redis
Nginx
Linux
PostgreSQL
Python
Virtualenv
Gunicorn
Varnish
Redis
MongoDB
Celery
Postfix
RabbitMQ
Vagrant
$ vagrant up
$ git clone git://.../development.git	
$ cd development	
$ vagrant up
HOW DOES IT WORK?
VAGRANTFILE_API_VERSION = "2"!
!
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|!
config.vm.box = "debian-wheezy-64"!
config.vm.box_url = "https://.../debian-wheezy-64.box"!
config.vm.hostname = "wheezy-vm"!
end
Vagrantfile
• Ease of use#
• Many pre-configured boxes available#
• Support for multiple machines#
• Local support forVirtualBox orVMware#
• Build remote clouds on AWS, RackSpace, etc.#
• Provisioning using:Ansible, Chef, Docker, Puppet, etc.
FEATURES
http://www.vagrantup.com
PUPPET PROVISIONING
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|!
config.vm.box = "debian-wheezy-64"!
config.vm.box_url = "https://www.dropbox.com/s/foj5mml4ft3b363/debian-wheezy-64.box?dl=1"!
config.vm.hostname = "wheezy-vm"!
!
# Install puppet modules!
config.vm.provision :shell do |shell|!
shell.inline = "# Install modules from Puppet Forge!
                    mkdir -p /etc/puppet/modules;!
                    puppet module install puppetlabs/apt;!
                    !
                    # Install Puppet modules from GitHub!
                    aptitude -y install git;!
                    cd /etc/puppet/modules;!
                    git clone git://github.com/stankevich/puppet-python.git python;!
                    "!
end!
!
# Use Puppet to provision server configuration!
config.vm.provision "puppet" do |puppet|!
puppet.manifests_path = "manifests"!
end!
!
end
Vagrantfile
Puppet
INSTALLING A PACKAGE
$ vim /etc/apt/sources.list!
!
deb http://download.webmin.com/download/repository sarge contrib!
!
$ wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -!
$ sudo aptitude update!
$ sudo aptitude install webmin!
WITH PUPPET
include 'apt'!
!
apt::source { 'webmin':!
location => 'http://download.webmin.com/download/repository/',!
release => 'sarge',!
repos => 'contrib',!
key => '11F63C51',!
include_src => false,!
}!
!
apt::key { 'webmin':!
key => '11F63C51',!
key_source => 'http://www.webmin.com/jcameron-key.asc',!
}!
!
exec { "apt-update-webmin":!
command => "/usr/bin/aptitude -y update",!
require => [Apt::Source['webmin'], Apt::Key['webmin']],!
}!
!
package { !
'webmin': !
ensure => present,!
require => Exec['apt-update-webmin'],!
}
webmin.pp
SET UP A DATABASE
# Install the Postgres server!
class { 'postgresql::server':!
ensure => 'present',!
listen_addresses => 'localhost',!
encoding => 'UTF8',!
manage_firewall => true,!
}!
!
# Install PostgreSQL client!
class { 'postgresql::client': }!
!
# And development libraries!
class { 'postgresql::lib::devel': }!
!
!
# Set up a PostgreSQL database named 'hello' !
# and user named 'hello_django' with a long passphrase!
postgresql::server::db { 'hello':!
user => 'hello_django',!
password => postgresql_password('hello_django', 'xxxxxxxxxxxxx'),!
}
database.pp
ADDING A USER
package { !
'sudo': ensure => present;!
'zsh': ensure => present;!
'git': ensure => present;!
}!
!
user { 'michal':!
password => 'xxxxxxxxxxxxx',!
groups => ['staff', 'sudo'],!
ensure => 'present',!
managehome => 'true',!
shell => '/usr/bin/zsh',!
require => Package['zsh'],!
}!
!
ssh_authorized_key{ 'michal@silver':!
user => 'michal',!
ensure => 'present', !
type => 'ssh-rsa', !
key => 'xxxxxxxxxxxxx', !
require => User['michal'],!
}
my_account.pp
FEATURES
• Store server configuration in text files (manifests)#
• Automatically configure packages, user accounts, services, etc.#
• Declarative language to describe machines#
• Store configuration of multiple machines on a central Puppet
master server#
• Update configuration when manifest file changes
http://puppetlabs.com
MASTER OF PUPPETS
Master
Puppet Puppet Puppet Puppet
Webmin
YOUR SERVER GUI
https://my-server:10000
YOUR SERVER GUI
PROCESSES
INIT SCRIPTS
NETWORKING
FIREWALL
SERVICES
DATABASES
FEATURES
• Graphically manage packages, user accounts, services#
• Install and configure server software#
• Monitor server activity and log files#
• Tweak and test settings#
• Execute commands and access files through the browser#
• Support for MySQL, PostgreSQL,Apache, PHP and many, many others
http://webmin.com
SHAMELESS PLUG
DEVOPSTOOLS FOR EVERYONE
1. Vagrant - create#
2. Puppet - configure#
3. Webmin - administer
michal@karzynski.pl DevCon 2014
THANKYOU
• http://www.ikea.com/us/en/catalog/products/60148701/#
• http://www.globtroter.pl/zdjecia/
44393,norwegia,brak,latarnia,morska,w,lindesnes,x.html
michal@karzynski.pl DevCon 2014
IMAGE CREDITS:

Weitere ähnliche Inhalte

Was ist angesagt?

RESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with DockerRESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with DockerBertrand Delacretaz
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty FrameworkOpenRestyCon
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentCarlos Perez
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django ArchitectureRami Sayar
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePiotr Pelczar
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Tatsuhiko Miyagawa
 
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with PuppetModern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with PuppetPuppet
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureColin Mackay
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript FrameworkAll Things Open
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejsAmit Thakkar
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Christian Joudrey
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
SockJS Intro
SockJS IntroSockJS Intro
SockJS IntroNgoc Dao
 
Configuring Django projects for multiple environments
Configuring Django projects for multiple environmentsConfiguring Django projects for multiple environments
Configuring Django projects for multiple environmentsApptension
 
Massively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHPMassively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHPDemin Yin
 
Puppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetPuppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetMarc Cluet
 

Was ist angesagt? (20)

Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
 
RESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with DockerRESTful OSGi middleware for NoSQL databases with Docker
RESTful OSGi middleware for NoSQL databases with Docker
 
Node js
Node jsNode js
Node js
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty Framework
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software Development
 
Scalable Django Architecture
Scalable Django ArchitectureScalable Django Architecture
Scalable Django Architecture
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
Intro to CloudStack API
Intro to CloudStack APIIntro to CloudStack API
Intro to CloudStack API
 
Modern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with PuppetModern Infrastructure from Scratch with Puppet
Modern Infrastructure from Scratch with Puppet
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
 
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate) Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
Puppet Camp Paris 2015: Continuous Integration of Puppet Code (Intermediate)
 
Choosing a Javascript Framework
Choosing a Javascript FrameworkChoosing a Javascript Framework
Choosing a Javascript Framework
 
Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
 
Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?Introduction to Node.js: What, why and how?
Introduction to Node.js: What, why and how?
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
SockJS Intro
SockJS IntroSockJS Intro
SockJS Intro
 
Configuring Django projects for multiple environments
Configuring Django projects for multiple environmentsConfiguring Django projects for multiple environments
Configuring Django projects for multiple environments
 
Massively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHPMassively Scaled High Performance Web Services with PHP
Massively Scaled High Performance Web Services with PHP
 
Puppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and PuppetPuppet Camp London Fall 2015 - Service Discovery and Puppet
Puppet Camp London Fall 2015 - Service Discovery and Puppet
 

Ähnlich wie DevOps tools for everyone - Vagrant, Puppet and Webmin

Vagrant - Team Development made easy
Vagrant - Team Development made easyVagrant - Team Development made easy
Vagrant - Team Development made easyMarco Silva
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefNathen Harvey
 
Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chefLeanDog
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with CapistranoRamazan K
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Stéphane Bégaudeau
 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsRyan Weaver
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011Carlos Sanchez
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionJoe Ferguson
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer ToolboxPablo Godel
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOpsAgile Spain
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantBrian Hogan
 
Getting started with puppet and vagrant (1)
Getting started with puppet and vagrant (1)Getting started with puppet and vagrant (1)
Getting started with puppet and vagrant (1)Puppet
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packerfrastel
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsasync_io
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with PuppetKris Buytaert
 
From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012Carlos Sanchez
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012Carlos Sanchez
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Stéphane Bégaudeau
 
Getting Started with Pelican
Getting Started with PelicanGetting Started with Pelican
Getting Started with PelicanNazrul Kamaruddin
 
Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Alex S
 

Ähnlich wie DevOps tools for everyone - Vagrant, Puppet and Webmin (20)

Vagrant - Team Development made easy
Vagrant - Team Development made easyVagrant - Team Development made easy
Vagrant - Team Development made easy
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
Practical introduction to dev ops with chef
Practical introduction to dev ops with chefPractical introduction to dev ops with chef
Practical introduction to dev ops with chef
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with Capistrano
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014
 
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other ToolsCool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
Cool like a Frontend Developer: Grunt, RequireJS, Bower and other Tools
 
From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011From Dev to DevOps - ApacheCON NA 2011
From Dev to DevOps - ApacheCON NA 2011
 
Laravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello ProductionLaravel Forge: Hello World to Hello Production
Laravel Forge: Hello World to Hello Production
 
The Modern Developer Toolbox
The Modern Developer ToolboxThe Modern Developer Toolbox
The Modern Developer Toolbox
 
From Dev to DevOps
From Dev to DevOpsFrom Dev to DevOps
From Dev to DevOps
 
Create Development and Production Environments with Vagrant
Create Development and Production Environments with VagrantCreate Development and Production Environments with Vagrant
Create Development and Production Environments with Vagrant
 
Getting started with puppet and vagrant (1)
Getting started with puppet and vagrant (1)Getting started with puppet and vagrant (1)
Getting started with puppet and vagrant (1)
 
Create your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and PackerCreate your very own Development Environment with Vagrant and Packer
Create your very own Development Environment with Vagrant and Packer
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
Automating Complex Setups with Puppet
Automating Complex Setups with PuppetAutomating Complex Setups with Puppet
Automating Complex Setups with Puppet
 
From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012From Dev to DevOps - FOSDEM 2012
From Dev to DevOps - FOSDEM 2012
 
From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012From Dev to DevOps - Codemotion ES 2012
From Dev to DevOps - Codemotion ES 2012
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014
 
Getting Started with Pelican
Getting Started with PelicanGetting Started with Pelican
Getting Started with Pelican
 
Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015Ansible is the simplest way to automate. SymfonyCafe, 2015
Ansible is the simplest way to automate. SymfonyCafe, 2015
 

Kürzlich hochgeladen

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 

Kürzlich hochgeladen (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 

DevOps tools for everyone - Vagrant, Puppet and Webmin

  • 1. DEVOPS TOOLS FOR EVERYONE: 
 VAGRANT, PUPPET AND WEBMIN ! Michał Karzyński, DevCon 2014
  • 2. TALK OUTLINE 1. Vagrant - create# 2. Puppet - configure# 3. Webmin - administer michal@karzynski.pl DevCon 2014
  • 3. YOURSTRULY Michał Karzyński# • project manager at Politechnika Gdańska# • freelance developer and consultant# • polyglot, currently: Python and JavaScript# • author# • web developer since 1996# • @postrational http://michal.karzynski.pl# michal@karzynski.pl DevCon 2014
  • 4. What does a webapp look like?
  • 10.
  • 13. $ git clone git://.../development.git $ cd development $ vagrant up
  • 14.
  • 15. HOW DOES IT WORK? VAGRANTFILE_API_VERSION = "2"! ! Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|! config.vm.box = "debian-wheezy-64"! config.vm.box_url = "https://.../debian-wheezy-64.box"! config.vm.hostname = "wheezy-vm"! end Vagrantfile
  • 16. • Ease of use# • Many pre-configured boxes available# • Support for multiple machines# • Local support forVirtualBox orVMware# • Build remote clouds on AWS, RackSpace, etc.# • Provisioning using:Ansible, Chef, Docker, Puppet, etc. FEATURES http://www.vagrantup.com
  • 17. PUPPET PROVISIONING Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|! config.vm.box = "debian-wheezy-64"! config.vm.box_url = "https://www.dropbox.com/s/foj5mml4ft3b363/debian-wheezy-64.box?dl=1"! config.vm.hostname = "wheezy-vm"! ! # Install puppet modules! config.vm.provision :shell do |shell|! shell.inline = "# Install modules from Puppet Forge!                     mkdir -p /etc/puppet/modules;!                     puppet module install puppetlabs/apt;!                     !                     # Install Puppet modules from GitHub!                     aptitude -y install git;!                     cd /etc/puppet/modules;!                     git clone git://github.com/stankevich/puppet-python.git python;!                     "! end! ! # Use Puppet to provision server configuration! config.vm.provision "puppet" do |puppet|! puppet.manifests_path = "manifests"! end! ! end Vagrantfile
  • 18.
  • 20. INSTALLING A PACKAGE $ vim /etc/apt/sources.list! ! deb http://download.webmin.com/download/repository sarge contrib! ! $ wget -qO - http://www.webmin.com/jcameron-key.asc | sudo apt-key add -! $ sudo aptitude update! $ sudo aptitude install webmin!
  • 21. WITH PUPPET include 'apt'! ! apt::source { 'webmin':! location => 'http://download.webmin.com/download/repository/',! release => 'sarge',! repos => 'contrib',! key => '11F63C51',! include_src => false,! }! ! apt::key { 'webmin':! key => '11F63C51',! key_source => 'http://www.webmin.com/jcameron-key.asc',! }! ! exec { "apt-update-webmin":! command => "/usr/bin/aptitude -y update",! require => [Apt::Source['webmin'], Apt::Key['webmin']],! }! ! package { ! 'webmin': ! ensure => present,! require => Exec['apt-update-webmin'],! } webmin.pp
  • 22. SET UP A DATABASE # Install the Postgres server! class { 'postgresql::server':! ensure => 'present',! listen_addresses => 'localhost',! encoding => 'UTF8',! manage_firewall => true,! }! ! # Install PostgreSQL client! class { 'postgresql::client': }! ! # And development libraries! class { 'postgresql::lib::devel': }! ! ! # Set up a PostgreSQL database named 'hello' ! # and user named 'hello_django' with a long passphrase! postgresql::server::db { 'hello':! user => 'hello_django',! password => postgresql_password('hello_django', 'xxxxxxxxxxxxx'),! } database.pp
  • 23. ADDING A USER package { ! 'sudo': ensure => present;! 'zsh': ensure => present;! 'git': ensure => present;! }! ! user { 'michal':! password => 'xxxxxxxxxxxxx',! groups => ['staff', 'sudo'],! ensure => 'present',! managehome => 'true',! shell => '/usr/bin/zsh',! require => Package['zsh'],! }! ! ssh_authorized_key{ 'michal@silver':! user => 'michal',! ensure => 'present', ! type => 'ssh-rsa', ! key => 'xxxxxxxxxxxxx', ! require => User['michal'],! } my_account.pp
  • 24. FEATURES • Store server configuration in text files (manifests)# • Automatically configure packages, user accounts, services, etc.# • Declarative language to describe machines# • Store configuration of multiple machines on a central Puppet master server# • Update configuration when manifest file changes http://puppetlabs.com
  • 25. MASTER OF PUPPETS Master Puppet Puppet Puppet Puppet
  • 35. FEATURES • Graphically manage packages, user accounts, services# • Install and configure server software# • Monitor server activity and log files# • Tweak and test settings# • Execute commands and access files through the browser# • Support for MySQL, PostgreSQL,Apache, PHP and many, many others http://webmin.com
  • 37. DEVOPSTOOLS FOR EVERYONE 1. Vagrant - create# 2. Puppet - configure# 3. Webmin - administer michal@karzynski.pl DevCon 2014