SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

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 CloudStackbuildacloud
 
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 BuildDocker, Inc.
 
Automated Deployment with Capistrano
Automated Deployment with CapistranoAutomated Deployment with Capistrano
Automated Deployment with CapistranoSumit Chhetri
 
Mitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorpMitchell Hashimoto, HashiCorp
Mitchell Hashimoto, HashiCorpOntico
 
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 BreakoutDocker, Inc.
 
Continuous Integration with Docker on AWS
Continuous Integration with Docker on AWSContinuous Integration with Docker on AWS
Continuous Integration with Docker on AWSAndrew 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/ DockerDocker, Inc.
 
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 2016Patrick Chanezon
 
Deployment on Heroku
Deployment on HerokuDeployment on Heroku
Deployment on HerokuStoyan Zhekov
 
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 EstesDocker, 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 stepThe Incredible Automation Day
 
Docker at Spotify - Dockercon14
Docker at Spotify - Dockercon14Docker at Spotify - Dockercon14
Docker at Spotify - Dockercon14dotCloud
 
Installing WordPress on AWS
Installing WordPress on AWSInstalling WordPress on AWS
Installing WordPress on AWSManish Jain
 

La actualidad más candente (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 a 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/2Vincent Mercier
 
Fake IT, until you make IT
Fake IT, until you make ITFake IT, until you make IT
Fake IT, until you make ITBas Meijer
 
Detailed Introduction To Docker
Detailed Introduction To DockerDetailed Introduction To Docker
Detailed Introduction To Dockernklmish
 
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 & dockerJü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 developmentTroy Connor
 
Automated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAutomated Deployment and Configuration Engines. Ansible
Automated Deployment and Configuration Engines. AnsibleAlberto Molina Coballes
 
Automated Infrastructure and Application Management
Automated Infrastructure and Application ManagementAutomated Infrastructure and Application Management
Automated Infrastructure and Application ManagementClark Everetts
 
Docker and Microservice
Docker and MicroserviceDocker and Microservice
Docker and MicroserviceSamuel 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 2014biicode
 
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 ThailandTroublemaker 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 DatabricksGoDataDriven
 
habitat at docker bud
habitat at docker budhabitat at docker bud
habitat at docker budMandi Walls
 
DCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDCEU 18: Building Your Development Pipeline
DCEU 18: Building Your Development PipelineDocker, Inc.
 
Linux containers and docker
Linux containers and dockerLinux containers and docker
Linux containers and dockerFabio Fumarola
 

Similar a 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
 

Último

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 

Último (20)

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 

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