Liviu DamianFreelancer
We want you here :-)
Co-organizer and Technology Partner
Recruitment Partner
Code your Infrastructurewith Packer, Ansible and Terraform
Today’s Landscape
Complex apps === Complex infrastructure
Hundreds of repetitive tasks === less time for innovation
Infrastructure roll-back is difficult
● Complex apps === Complex infrastructure
● Hundreds of repetitive tasks === less time for innovation
● Infrastructure roll-back is difficult
Possible Solutions?
Configuration Management(Ansible, Chef, cfengine, Puppet, SaltStack)
Continuous Deployment(Spinnaker, GoCD)
Infrastructure Orchestration(Packer, Terraform, CloudFormation, Heat)
● Configuration Management○ Ansible
● Infrastructure Orchestration○ Packer, Terraform
Less risk for human error
Faster provisioning
Easier scalability
Roll-back and Versioning
● Less risk for human error● Faster provisioning● Reduced downtime● Easier scalability● Consistency● Roll-back and Versioning
Modern tool for creating (not only) Cloud machine images
Packer Components
Multiple Providers(AWS, Azure, DO, GCE, OpenStack, VirtualBox, etc.)
Great provisioner support(Shell scripts, Ansible, Chef, Puppet, Salt, Powershell)
Post-processors(save artifacts as Docker Image, Vagrant Machine,
etc.)
Extendable through plugins
JSON Configuration File
● Multiple Providers○ AWS, Azure, DO, GCE, OpenStack, VirtualBox,
etc.● Great provisioner support
○ Shell scripts, Ansible, Chef, Puppet, Salt, Powershell
● Post-processors○ Save artifacts as Docker Image, Vagrant
Machine, etc.● Extendable through plugins● JSON Configuration File
Idempotent Configuration Management
Agentless architecture
Orchestration over SSH (might feel slower compared to other solutions)
Actions are defined in “Playbooks”
Playbooks are essentially YAML files
Reusable components (roles) in Ansible Galaxy - https://galaxy.ansible.com/
● Idempotent Configuration Management● Agentless architecture● Orchestration over SSH (slower, but more secure
than other solutions)● Actions are defined in “Playbooks”● Playbooks are essentially YAML files● Reusable components (roles) in Ansible Galaxy -
https://galaxy.ansible.com/
Building, Changing and Versioning Infrastructure made easy
Platform Agnostic
Simultaneously orchestrate across multiple platforms
Not a Configuration Management tool
High Level Syntax for describing resources(similar to JSON)
IaaS Support(AWS, Azure, CloudStack, DO, GCE, OpenStack, etc.)
PaaS Support(Heroku)
SaaS Support(CloudFlare, DNSimple, Mailgun, etc.)
Service Support(Cobbler, Consul, MySQL, PostgreSQL, PowerDNS )
● Building, Changing and Versioning Infrastructure made easy
● Platform Agnostic● Simultaneously orchestrate across multiple
platforms● Not a Configuration Management tool● High Level Syntax for describing resources● IaaS Support● SaaS Support● Service Support
github.com/liviudm/cdo_cyi