Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
"Infrastructure as Code"
für Anfänger
XP Days Germany
David Völkel
27.11.2015
@davidvoelkel
@softwerkskammer
@codecentric
TDD & Design
CD & DevOp
Continuous Integration
Automatic Build
VCS Application
Automation
Quality
Reproducible
Faster
Docs
ApplicationVCS
Tip of the Iceberg?
AppVCS
Tip of the Iceberg?
VM
App
OS &
Packages
Config
OS &
Packages
Network
VCS
Continuous Delivery
Infrastructure? VM
App
OS &
Packages
Config
OS &
Packages
Network
VCS
Continuous Delivery
Infrastructure as Code
VM
Software
OS &
Packages
Config
OS &
Packages
Network
VCS
Agenda
1. Deployment
2. Provisioning
3. Environments
4. VM Management
5. SDN
DEMO
VM
App
OS &
Packages
Config
OS &
Packages
Network
1.DEPLOYMENT
Image: Rigo Peter
VM
App
OS &
Packages
Config
OS &
Packages
Deployment
SSH/SCP
mvn Plugins
Server
App
Auto Deployment
CI Build Pipeline
Server
Build &
Unit Tests
App
VCS
Deployment Integration
Tests
App Server Options
Distro Package Manager
Fat-JARs
Image: RRZEicons
2. PROVISION
VM
App
OS &
Packages
Config
OS &
Packages
Box by Даниил Пронин from the Noun Project
Snowflake Servers
Snowflake Servers
Work of Art
Image: KUKA Systems GmbH
Configuration Management
Server Provisioning
Installation
Config VCS
Configuration Management
CFEngine Chef
Puppet
Salt
Ansible
90er 00er 10er
Desired State Configuration
Declarative
Tests itself
Idempotent
> mvn package (per jdeb)
> scp software_and_provi.deb server
# dpkg –i *.deb
# puppet apply
> smoketest server
Server
Software
OS &
Packages
Config
OS &
Packages
Our Provision 1.0
Build &
Unit TestsVCS
Provision
Deployment
Refactoring to 2.0
no shell
no jdeb
faster
easier
Windows OK
3.ENVIRONMENTS
Computer by Danny Sturgess from the Noun Project
VM
App
OS &
Packages
Config
OS &
Packages
DEV TEST PROD
Configuration
Global vs. Environment
mail.send.retry=3
reminder.intervall=7
mysql.url = jdbc:mysql://test-mysql-db/users
mySql.driver = com.mysql.jdbc.Driver
mySql.user = username
mySql.password = secretPassword
oracle.url = jdbc:oracle://oracle-test/bills
oracle.driver = oracle.jdbc.driver.OracleDriver
oracle.user = username2
oracle.password = secretPassword2
Configuration
Global vs. Environment
mail.send.retry=3
reminder.intervall=7
mysql.url = jdbc:mysql://test-mysql-db/users
mySql.driver = com.mysql.jdbc.Driver
mySql.user = username
mySql.password = secretPassword
oracle.url = jdbc:oracle://oracle-test/bills
oracle.driver = oracle.jdbc.driver.OracleDriver
oracle.user = username2
oracle.password = secretPassword2
Configuration
Global vs. Environment
mail.send.retry=3
reminder.intervall=7
mySql.driver = com.mysql.jdbc.Driver
oracle.driver = oracle.jdbc.driver.OracleDriver
mysql.url = jdbc:mysql://test-mysql-db/users
mySql.user = username
mySql.password = secretPassword
oracle.url = jdbc:oracle://oracle-test/bills
oracle.user = username2
oracle.password = secretPassword2
Configuration
Global vs. Environment
deploy(ENV)
mail.send.retry=3
reminder.intervall=7
mySql.driver = com.mysql.jdbc.Driver
oracle.driver = oracle.jdbc.driver.OracleDriver
mysql.url = jdbc:mysql://test-mysql-db/users
mySql.user = username
mySql.password = secretPassword
oracle.url = jdbc:oracle://oracle-test/bills
oracle.user = username2
oracle.password = secretPassword2
Latest Config
No branching!
4. VM MANAGEMENT
Data Center Server Virtualization by Rahul KULKARNI from the Noun Project
VM
App
OS &
Packages
Config
OS &
Packages
Desired State Configuration
Drift! Drift
Phoenix Server
“clean slate“
Clone Golden Master
vs. DSC?
Phoenix Image: RoFra
Technology
Packer & AWS AMI
VMWare VSphere
Phoenix Image: RoFra
Security Patches?
Rotate by Thomas Helbig from the Noun Project
„Immutable Servers
Freeze State
Logs
Config
DB/Storage
Image: Deutsche Fotothek
Golden
Master
VM Image
Pipeline
VCS
Provision
DEV VM
OS &
Packages
Clone VM &
Provision
Golden
Master
VM Image
Pipeline
VCS
Provision
DEV VM
OS &
Packages
VCS
App Code
Build & UT
Clone VM &
Provision
Golden
Master
VM Image
Pipeline
VCS
Provision
DEV VM
App &
DEV Config
OS &
Packages
Deploy
VCS
App Code
Build & UT
Config
Clone VM &
Provision
Golden
Master
VM Image
Pipeline
VCS
Provision
DEV VM
App &
DEV Config
OS &
Packages
Deploy
VCS
App Code
Build & UT
Config
Clone VM &
Provision
Int Test
Pipeline
VCS
Provision
Deploy
VCS
App Code
Build & UT
Config
Int Test
Deploy
Test
Test VM
App &
TEST Config
OS &
Packages
DEV VM
App &
DEV Config
OS &
Packages
Clone VM &
Provision
Pipeline
VCS
Provision
Deploy
VCS
App Code
Build & UT
Config
Int Test
Deploy
Test
Test VM
App &
TEST Config
OS &
Packages
Clone VM &
Provision
Pipeline
VCS
Provision
Deploy
VCS
App Code
Build & UT
Config
Int Test
Deploy
Test
Test VM
App &
TEST Config
OS &
Packages
Clone VM &
Provision
Deploy
Prod
…
Golden
Master
AMI
Packer Pipeline
VCS
Provision
Temp Instance
Packer
Golden
Master
AMI
Packer Pipeline
VCS
Provision
Temp Instance
OS &
Packages
Packer
Golden
Master
AMI
Packer Pipeline
VCS
Provision
Temp Instance
OS &
Packages
Packer
Provisioned
AMI
Demo
VM
App
OS &
Packages
Config
OS &
Packages
Network
Ansible Jar Deploy
Ansible Provision
Vagrant, Packer,
Ansible EC2 Module
Terraform
https://github.com/davidvoelkel/infrastructure-as-code-demo
https://youtu.be/AiAOLpshguM
Resumee
Version & automate infrastructure
Living Documentation
Quality, “works on my machine“
Layers top to bottom
@davidvoelkel
Licence
Creative Commons
Attribution-ShareAlike 3.0

More Related Content

Infrastructure as Code for Beginners