SlideShare a Scribd company logo
Automation in the Small: 
Code to Cloud 
Jay Barker 
21 August 2014
Why automation? 
Automation in the Small: Code to Cloud | Jay Barker 2 
Go Faster, 
Save Time 
flic.kr/p/nYT2s4 
Complexity 
& Scale 
flic.kr/p/28i54x 
Relax 
flic.kr/p/3tj1VR 
Be Flexible 
flic.kr/p/4wNdu5
xkcd.com 
Automation in the Small: Code to Cloud | Jay Barker 3
About your presenter 
• Jay Barker 
• 10+ years as software engineer & manager 
• Manager, Software Development 
@ mobile.de, an ebay company 
• Further details & contact information 
www.jbarker.com 
Automation in the Small: Code to Cloud | Jay Barker 4
Automation in the Small: 
Code to Cloud 
• Automation techniques for individuals and tiny teams 
• A set of integrated tools, just one example of many ways to 
automate local development & cloud deployment 
• Related code & documentation are on Github 
– github.com/jbarker/dev-automation-small 
– Further details in README.md file 
– Some ‘demo’ steps make use of this repository 
• This presentation is on SlideShare 
– slideshare.net/jbrkr/automation-smallcodeclouddevops 
Automation in the Small: Code to Cloud | Jay Barker 5
The Tools 
Automation in the Small: Code to Cloud | Jay Barker 6 
Homebrew 
packages 
brew.sh 
VirtualBox 
virtualization 
virtualbox.org 
Packer 
imaging 
packer.io 
Ansible 
provisioning 
ansible.com
AUTOMATION 
Easy software installation & upgrades
Use a Package Manager 
• Take control of software updates with a package manager 
• Linux has built-in options, e.g. apt, yum 
• For Windows, consider Chocolatey 
• For Max OS X, consider Homebrew with Cask 
– Some ‘demo’ steps assume both are installed 
• Demo: install Homebrew & Cask  
$ 
ruby 
-­‐e 
"$(curl 
-­‐fsSL 
https:// 
raw.github.com/Homebrew/homebrew/go/install)" 
$ 
brew 
config 
$ 
brew 
install 
caskroom/cask/brew-­‐cask 
brew.sh / caskroom.io 
Automation in the Small: Code to Cloud | Jay Barker 8
Automated package 
installation 
• Demo: install the latest stable git from the community to 
override the old version bundled by Apple  
$ 
brew 
install 
git 
$ 
git 
-­‐-­‐version 
> 
git 
version 
2.0.4 
• Demo: install & run a GUI application, Github for Mac  
$ 
brew 
cask 
install 
github 
$ 
github 
-­‐-­‐help 
$ 
github 
git-scm.com / mac.github.com 
Automation in the Small: Code to Cloud | Jay Barker 9
AUTOMATION 
Run prepared virtual machines
Automation in the Small: Code to Cloud | Jay Barker 11 
Use a local Virtualization app 
• Run virtual machines (VMs) on your host machine 
• Install a virtualization app running on your host machine 
• One free, cross-platform option is VirtualBox 
• Other options include: Parallels Desktop, VMWare Fusion 
• Demo: install VirtualBox for Mac  
$ 
brew 
cask 
install 
virtualbox 
$ 
virtualbox 
virtualbox.org
Automation in the Small: Code to Cloud | Jay Barker 12 
Use local VMs for testing 
• Example: testing web applications with Internet Explorer on 
Windows 
• Use the ievms project for automated VMs installation from 
Microsoft’s official source, modern.ie 
• Demo: clone the ievms project, then download & install 
various versions of Windows with Internet Explorer 
Warning: this may take awhile due to large downloads! 
$ 
git 
clone 
https://github.com/xdissent/ 
ievms.git 
$ 
cd 
ievms 
$ 
./ievms.sh 
github.com/xdissent/ievms
AUTOMATION 
Create custom virtual machines
Automation in the Small: Code to Cloud | Jay Barker 14 
Use a Provisioning tool 
• Let’s create a new custom virtual machine 
• We can use Packer to provision this virtual machine 
• Demo: install Packer using Homebrew  
$ 
brew 
tap 
homebrew/binary 
$ 
brew 
install 
packer 
packer.io
Automation in the Small: Code to Cloud | Jay Barker 15 
Provision a new local VM 
• For the operating system, let’s use Debian 7.x x86_64 
Network installation ISO 
• Tip: Be sure to configure SSH access to your VM! 
– Recommended is access by public/private key pair 
– Your public key may already be available in a 
convenient location 
• e.g. github.com/example-username.keys 
• Demo: provision the VM with Packer 
Warning: this may take awhile due to large downloads! 
$ 
cd 
packer 
$ 
packer 
build 
-­‐only=virtualbox-­‐iso 
-­‐force 
debian-­‐7.x-­‐amd64.json 
debian.org
Automation in the Small: Code to Cloud | Jay Barker 16 
Import & start the new VM 
• Import your virtual machine into VirtualBox 
• Start your virtual machine in headless mode (no UI!) 
• Demo: import the new VM created by Packer 
$ 
VBoxManage 
import 
packer-­‐debian-­‐7.x-­‐amd64-­‐ 
virtualbox/packer-­‐debian-­‐7.x-­‐amd64.ovf 
$ 
VBoxManage 
list 
vms 
• Demo: launch the new VM with VirtualBox 
$ 
VBoxHeadless 
-­‐s 
"packer-­‐debian-­‐7.x-­‐amd64"
Automation in the Small: Code to Cloud | Jay Barker 17 
Use a Configuration 
Management tool 
• Configure your VMs the same way, every time 
• Use a configuration management tool to define & maintain 
machine configurations 
• Let’s use Ansibile to configure the local virtual machine 
• Other options include: Chef, Puppet, Salt Stack 
• Demo: install Ansible using Homebrew  
$ 
brew 
install 
ansible 
ansible.com
Automation in the Small: Code to Cloud | Jay Barker 18 
Configure your new VM 
• Ansible will setup your machine using configuration that 
you define in a YAML file 
• Ansible requires SSH access to your VM 
– You should configure a public/private key pair for access 
when creating your VM 
• Demo: ping your running VM with Ansible 
$ 
cd 
ansible 
$ 
ansible 
-­‐i 
inventory.ini 
all 
-­‐m 
ping 
• Demo: configure your running VM with Ansible 
$ 
ansible 
-­‐i 
inventory.ini 
all 
-­‐m 
setup 
-­‐vvvv
AUTOMATION 
Configure a cloud server
Choose a Cloud provider 
Automation in the Small: Code to Cloud | Jay Barker 20 
• Many popular choices for cloud providers. Choose a cloud 
provider that best fits your needs! 
• Possible considerations 
– common operating system offering, like Debian 
– integration with preferred tools, like Packer 
• Some options with both Debian & Packer integration: 
– DigitalOcean 
• digitalocean.com/community/tags/debian 
– Amazon EC2 
• wiki.debian.org/Cloud/AmazonEC2Image 
– Google Compute Engine 
• wiki.debian.org/Cloud/GoogleComputeEngineImage 
– OpenStack 
• wiki.debian.org/OpenStack
Configure your Cloud server 
Automation in the Small: Code to Cloud | Jay Barker 21 
• Use the same tools for cloud development and local 
development 
• Provision a custom machine with Packer 
Many builders supported out-of-the-box 
• Configure your machine with Ansible 
Works great via standard SSH 
• Test in a Virtual Machine locally with VirtualBox 
Host in all popular desktop operating systems 
• Test in cloud instances with your preferred provider 
• Deploy to indentical cloud instances for production use 
?
AUTOMATION 
In summary
In summary + Q&A 
• Automation: Go Faster, Save Time / Be Flexible / 
Complexity & Scale / Relax 
• Package management for software installation & upgrades 
– Homebrew & Cask on Mac OS X 
– Similar options on Linux or Windows 
• Virtualization for local development & testing 
– VirtualBox for running custom & prepared machines 
• Provisioning & configuration management 
– Packer & Ansible with Debian Linux 
• Configure, test, & deploy to cloud instances 
– Your preferred provider with standard tools 
flic.kr/p/iVLZt 
Automation in the Small: Code to Cloud | Jay Barker 23

More Related Content

What's hot

Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as codeAxel Quack
 
PaaS on top of CloudStack
PaaS on top of CloudStackPaaS on top of CloudStack
PaaS on top of CloudStack
buildacloud
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
Docker, Inc.
 
Automated Deployment with Capistrano
Automated Deployment with CapistranoAutomated Deployment with Capistrano
Automated Deployment with Capistrano
Sumit Chhetri
 
Mitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorpMitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorp
Ontico
 
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
Docker, Inc.
 
DockerCon SF 2015: Networking Breakout
DockerCon SF 2015: Networking BreakoutDockerCon SF 2015: Networking Breakout
DockerCon SF 2015: Networking Breakout
Docker, Inc.
 
Docker and CloudStack
Docker and CloudStackDocker and CloudStack
Docker and CloudStack
Sebastien Goasguen
 
Continuous Integration with Docker on AWS
Continuous Integration with Docker on AWSContinuous Integration with Docker on AWS
Continuous Integration with Docker on AWS
Andrew Heifetz
 
DockerCon SF 2015: Getting Started w/ Docker
DockerCon SF 2015: Getting Started w/ DockerDockerCon SF 2015: Getting Started w/ Docker
DockerCon SF 2015: Getting Started w/ Docker
Docker, Inc.
 
Ansible day 1.ppt
Ansible day 1.pptAnsible day 1.ppt
Ansible day 1.ppt
Gourav Varma
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016
Patrick Chanezon
 
Deployment on Heroku
Deployment on HerokuDeployment on Heroku
Deployment on HerokuStoyan Zhekov
 
Azure workshop
Azure workshopAzure workshop
Azure workshop
Wei-Ting Kuo
 
Containerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil EstesContainerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil Estes
Docker, Inc.
 
TIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by stepTIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by step
The Incredible Automation Day
 
7+1 myths of the new os
7+1 myths of the new os7+1 myths of the new os
7+1 myths of the new os
Alexis Richardson
 
Docker at Spotify - Dockercon14
Docker at Spotify - Dockercon14Docker at Spotify - Dockercon14
Docker at Spotify - Dockercon14
dotCloud
 
Installing WordPress on AWS
Installing WordPress on AWSInstalling WordPress on AWS
Installing WordPress on AWS
Manish Jain
 
TIAD : Automating the modern datacenter
TIAD : Automating the modern datacenterTIAD : Automating the modern datacenter
TIAD : Automating the modern datacenter
The Incredible Automation Day
 

What's hot (20)

Infrastructure as code
Infrastructure as codeInfrastructure as code
Infrastructure as code
 
PaaS on top of CloudStack
PaaS on top of CloudStackPaaS on top of CloudStack
PaaS on top of CloudStack
 
How to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker BuildHow to Improve Your Image Builds Using Advance Docker Build
How to Improve Your Image Builds Using Advance Docker Build
 
Automated Deployment with Capistrano
Automated Deployment with CapistranoAutomated Deployment with Capistrano
Automated Deployment with Capistrano
 
Mitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorpMitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorp
 
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
DockerCon EU 2015: Speed Up Deployment: Building a Distributed Docker Registr...
 
DockerCon SF 2015: Networking Breakout
DockerCon SF 2015: Networking BreakoutDockerCon SF 2015: Networking Breakout
DockerCon SF 2015: Networking Breakout
 
Docker and CloudStack
Docker and CloudStackDocker and CloudStack
Docker and CloudStack
 
Continuous Integration with Docker on AWS
Continuous Integration with Docker on AWSContinuous Integration with Docker on AWS
Continuous Integration with Docker on AWS
 
DockerCon SF 2015: Getting Started w/ Docker
DockerCon SF 2015: Getting Started w/ DockerDockerCon SF 2015: Getting Started w/ Docker
DockerCon SF 2015: Getting Started w/ Docker
 
Ansible day 1.ppt
Ansible day 1.pptAnsible day 1.ppt
Ansible day 1.ppt
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016
 
Deployment on Heroku
Deployment on HerokuDeployment on Heroku
Deployment on Heroku
 
Azure workshop
Azure workshopAzure workshop
Azure workshop
 
Containerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil EstesContainerize All the (Multi-Platform) Things! by Phil Estes
Containerize All the (Multi-Platform) Things! by Phil Estes
 
TIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by stepTIAD - DYI: A simple orchestrator built step by step
TIAD - DYI: A simple orchestrator built step by step
 
7+1 myths of the new os
7+1 myths of the new os7+1 myths of the new os
7+1 myths of the new os
 
Docker at Spotify - Dockercon14
Docker at Spotify - Dockercon14Docker at Spotify - Dockercon14
Docker at Spotify - Dockercon14
 
Installing WordPress on AWS
Installing WordPress on AWSInstalling WordPress on AWS
Installing WordPress on AWS
 
TIAD : Automating the modern datacenter
TIAD : Automating the modern datacenterTIAD : Automating the modern datacenter
TIAD : Automating the modern datacenter
 

Similar to Automation in the Small: Code to Cloud

DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
Vincent Mercier
 
Fake IT, until you make IT
Fake IT, until you make ITFake IT, until you make IT
Fake IT, until you make IT
Bas Meijer
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Docker
nklmish
 
ASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & dockerASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & docker
Jürgen Gutsch
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoHannes Hapke
 
How to Use Your Own Private Registry
How to Use Your Own Private RegistryHow to Use Your Own Private Registry
How to Use Your Own Private RegistryDocker, Inc.
 
Using Minikube for Node.js development
Using Minikube for Node.js developmentUsing Minikube for Node.js development
Using Minikube for Node.js development
Troy Connor
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
ColdFusionConference
 
Automated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAutomated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. Ansible
Alberto Molina Coballes
 
Automated Infrastructure and Application Management
Automated Infrastructure and Application ManagementAutomated Infrastructure and Application Management
Automated Infrastructure and Application Management
Clark Everetts
 
Docker and Microservice
Docker and MicroserviceDocker and Microservice
Docker and Microservice
Samuel Chow
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .netIbon Landa
 
Virtualization with Vagrant (ua.pycon 2011)
Virtualization with Vagrant (ua.pycon 2011)Virtualization with Vagrant (ua.pycon 2011)
Virtualization with Vagrant (ua.pycon 2011)
Dmitry Guyvoronsky
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
biicode
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
Troublemaker Khunpech
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
GoDataDriven
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
Mandi Walls
 
AWS Code Services
AWS Code ServicesAWS Code Services
AWS Code Services
Amazon Web Services
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
Docker, Inc.
 
Linux containers and docker
Linux containers and dockerLinux containers and docker
Linux containers and docker
Fabio Fumarola
 

Similar to Automation in the Small: Code to Cloud (20)

DevOPS training - Day 2/2
DevOPS training - Day 2/2DevOPS training - Day 2/2
DevOPS training - Day 2/2
 
Fake IT, until you make IT
Fake IT, until you make ITFake IT, until you make IT
Fake IT, until you make IT
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Docker
 
ASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & dockerASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & docker
 
PDXPortland - Dockerize Django
PDXPortland - Dockerize DjangoPDXPortland - Dockerize Django
PDXPortland - Dockerize Django
 
How to Use Your Own Private Registry
How to Use Your Own Private RegistryHow to Use Your Own Private Registry
How to Use Your Own Private Registry
 
Using Minikube for Node.js development
Using Minikube for Node.js developmentUsing Minikube for Node.js development
Using Minikube for Node.js development
 
Instant ColdFusion with Vagrant
Instant ColdFusion with VagrantInstant ColdFusion with Vagrant
Instant ColdFusion with Vagrant
 
Automated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAutomated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. Ansible
 
Automated Infrastructure and Application Management
Automated Infrastructure and Application ManagementAutomated Infrastructure and Application Management
Automated Infrastructure and Application Management
 
Docker and Microservice
Docker and MicroserviceDocker and Microservice
Docker and Microservice
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .net
 
Virtualization with Vagrant (ua.pycon 2011)
Virtualization with Vagrant (ua.pycon 2011)Virtualization with Vagrant (ua.pycon 2011)
Virtualization with Vagrant (ua.pycon 2011)
 
Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014Dependencies Managers in C/C++. Using stdcpp 2014
Dependencies Managers in C/C++. Using stdcpp 2014
 
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day ThailandCI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
CI/CD with Jenkins and Docker - DevOps Meetup Day Thailand
 
CI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure DatabricksCI/CD with Azure DevOps and Azure Databricks
CI/CD with Azure DevOps and Azure Databricks
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker bud
 
AWS Code Services
AWS Code ServicesAWS Code Services
AWS Code Services
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development Pipeline
 
Linux containers and docker
Linux containers and dockerLinux containers and docker
Linux containers and docker
 

Recently uploaded

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 

Recently uploaded (20)

Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 

Automation in the Small: Code to Cloud

  • 1. Automation in the Small: Code to Cloud Jay Barker 21 August 2014
  • 2. Why automation? Automation in the Small: Code to Cloud | Jay Barker 2 Go Faster, Save Time flic.kr/p/nYT2s4 Complexity & Scale flic.kr/p/28i54x Relax flic.kr/p/3tj1VR Be Flexible flic.kr/p/4wNdu5
  • 3. xkcd.com Automation in the Small: Code to Cloud | Jay Barker 3
  • 4. About your presenter • Jay Barker • 10+ years as software engineer & manager • Manager, Software Development @ mobile.de, an ebay company • Further details & contact information www.jbarker.com Automation in the Small: Code to Cloud | Jay Barker 4
  • 5. Automation in the Small: Code to Cloud • Automation techniques for individuals and tiny teams • A set of integrated tools, just one example of many ways to automate local development & cloud deployment • Related code & documentation are on Github – github.com/jbarker/dev-automation-small – Further details in README.md file – Some ‘demo’ steps make use of this repository • This presentation is on SlideShare – slideshare.net/jbrkr/automation-smallcodeclouddevops Automation in the Small: Code to Cloud | Jay Barker 5
  • 6. The Tools Automation in the Small: Code to Cloud | Jay Barker 6 Homebrew packages brew.sh VirtualBox virtualization virtualbox.org Packer imaging packer.io Ansible provisioning ansible.com
  • 7. AUTOMATION Easy software installation & upgrades
  • 8. Use a Package Manager • Take control of software updates with a package manager • Linux has built-in options, e.g. apt, yum • For Windows, consider Chocolatey • For Max OS X, consider Homebrew with Cask – Some ‘demo’ steps assume both are installed • Demo: install Homebrew & Cask  $ ruby -­‐e "$(curl -­‐fsSL https:// raw.github.com/Homebrew/homebrew/go/install)" $ brew config $ brew install caskroom/cask/brew-­‐cask brew.sh / caskroom.io Automation in the Small: Code to Cloud | Jay Barker 8
  • 9. Automated package installation • Demo: install the latest stable git from the community to override the old version bundled by Apple  $ brew install git $ git -­‐-­‐version > git version 2.0.4 • Demo: install & run a GUI application, Github for Mac  $ brew cask install github $ github -­‐-­‐help $ github git-scm.com / mac.github.com Automation in the Small: Code to Cloud | Jay Barker 9
  • 10. AUTOMATION Run prepared virtual machines
  • 11. Automation in the Small: Code to Cloud | Jay Barker 11 Use a local Virtualization app • Run virtual machines (VMs) on your host machine • Install a virtualization app running on your host machine • One free, cross-platform option is VirtualBox • Other options include: Parallels Desktop, VMWare Fusion • Demo: install VirtualBox for Mac  $ brew cask install virtualbox $ virtualbox virtualbox.org
  • 12. Automation in the Small: Code to Cloud | Jay Barker 12 Use local VMs for testing • Example: testing web applications with Internet Explorer on Windows • Use the ievms project for automated VMs installation from Microsoft’s official source, modern.ie • Demo: clone the ievms project, then download & install various versions of Windows with Internet Explorer Warning: this may take awhile due to large downloads! $ git clone https://github.com/xdissent/ ievms.git $ cd ievms $ ./ievms.sh github.com/xdissent/ievms
  • 13. AUTOMATION Create custom virtual machines
  • 14. Automation in the Small: Code to Cloud | Jay Barker 14 Use a Provisioning tool • Let’s create a new custom virtual machine • We can use Packer to provision this virtual machine • Demo: install Packer using Homebrew  $ brew tap homebrew/binary $ brew install packer packer.io
  • 15. Automation in the Small: Code to Cloud | Jay Barker 15 Provision a new local VM • For the operating system, let’s use Debian 7.x x86_64 Network installation ISO • Tip: Be sure to configure SSH access to your VM! – Recommended is access by public/private key pair – Your public key may already be available in a convenient location • e.g. github.com/example-username.keys • Demo: provision the VM with Packer Warning: this may take awhile due to large downloads! $ cd packer $ packer build -­‐only=virtualbox-­‐iso -­‐force debian-­‐7.x-­‐amd64.json debian.org
  • 16. Automation in the Small: Code to Cloud | Jay Barker 16 Import & start the new VM • Import your virtual machine into VirtualBox • Start your virtual machine in headless mode (no UI!) • Demo: import the new VM created by Packer $ VBoxManage import packer-­‐debian-­‐7.x-­‐amd64-­‐ virtualbox/packer-­‐debian-­‐7.x-­‐amd64.ovf $ VBoxManage list vms • Demo: launch the new VM with VirtualBox $ VBoxHeadless -­‐s "packer-­‐debian-­‐7.x-­‐amd64"
  • 17. Automation in the Small: Code to Cloud | Jay Barker 17 Use a Configuration Management tool • Configure your VMs the same way, every time • Use a configuration management tool to define & maintain machine configurations • Let’s use Ansibile to configure the local virtual machine • Other options include: Chef, Puppet, Salt Stack • Demo: install Ansible using Homebrew  $ brew install ansible ansible.com
  • 18. Automation in the Small: Code to Cloud | Jay Barker 18 Configure your new VM • Ansible will setup your machine using configuration that you define in a YAML file • Ansible requires SSH access to your VM – You should configure a public/private key pair for access when creating your VM • Demo: ping your running VM with Ansible $ cd ansible $ ansible -­‐i inventory.ini all -­‐m ping • Demo: configure your running VM with Ansible $ ansible -­‐i inventory.ini all -­‐m setup -­‐vvvv
  • 19. AUTOMATION Configure a cloud server
  • 20. Choose a Cloud provider Automation in the Small: Code to Cloud | Jay Barker 20 • Many popular choices for cloud providers. Choose a cloud provider that best fits your needs! • Possible considerations – common operating system offering, like Debian – integration with preferred tools, like Packer • Some options with both Debian & Packer integration: – DigitalOcean • digitalocean.com/community/tags/debian – Amazon EC2 • wiki.debian.org/Cloud/AmazonEC2Image – Google Compute Engine • wiki.debian.org/Cloud/GoogleComputeEngineImage – OpenStack • wiki.debian.org/OpenStack
  • 21. Configure your Cloud server Automation in the Small: Code to Cloud | Jay Barker 21 • Use the same tools for cloud development and local development • Provision a custom machine with Packer Many builders supported out-of-the-box • Configure your machine with Ansible Works great via standard SSH • Test in a Virtual Machine locally with VirtualBox Host in all popular desktop operating systems • Test in cloud instances with your preferred provider • Deploy to indentical cloud instances for production use ?
  • 23. In summary + Q&A • Automation: Go Faster, Save Time / Be Flexible / Complexity & Scale / Relax • Package management for software installation & upgrades – Homebrew & Cask on Mac OS X – Similar options on Linux or Windows • Virtualization for local development & testing – VirtualBox for running custom & prepared machines • Provisioning & configuration management – Packer & Ansible with Debian Linux • Configure, test, & deploy to cloud instances – Your preferred provider with standard tools flic.kr/p/iVLZt Automation in the Small: Code to Cloud | Jay Barker 23