SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
InfrastructureInfrastructure
as Codeas Code
Angel NúñezAngel Núñez
@snahider@snahider
Agile Developer,Agile Developer,
Consultant & TrainerConsultant & Trainer
IT Ops es un trabajoIT Ops es un trabajo
complicadocomplicado
Snowflake ServersSnowflake Servers
ProblemasProblemas
Difícil replicar un nuevo servidor con
las mismas funciones.
Difícil de escalar.
Desfases entre ambientes.
Muy frágiles y cambios con efectos
secundarios.
Baja confianza al realizar cambios.
Sin versionamiento y seguimiento a
los cambios.
¿Qué es¿Qué es
Infrastructure as Code?Infrastructure as Code?
Es una práctica donde se describe y maneja la
infraestructura de la misma manera que el código.
Utilizando un lenguaje de alto nivel
(DSL para infraestructura).
Utilizando buenas prácticas de desarrollo de software
(ejm: subir los cambios a un repositorio).
HerramientasHerramientas
PuppetPuppet ChefChef
package { 'apache2':
ensure => installed,
}
service { 'apache2':
ensure => running,
require => Package['apache2'],
}
file { '/var/www/html/index.html':
content => '<html>hello world</html>',
owner => 'root',
mode => '640',
ensure => present,
}
package 'apache2' do
action :install
end
service 'apache2' do
action [:enable, :start]
end
file '/var/www/html/index.html' do
content '<html>hello world</html>'
owner 'root'
mode '640'
action :create
end
Características: Abstracción e Idempotencia
¿Cómo es el código¿Cómo es el código
de infraestructura?de infraestructura?
BeneficiosBeneficios
(Utilizar un script automatizado(Utilizar un script automatizado
idempotente)idempotente)
Crear una nueva máquina automatizadamente desde 0.
Asegurar que los ambientes son consistentes.
Agregar un cambio y que se actualice en todos los servidores.
Generar el ambiente de trabajo al equipo de desarrollo.
BeneficiosBeneficios
(Utilizar código mediante una DSL de(Utilizar código mediante una DSL de
infraestructura)infraestructura)
Probar todos los cambios.
Versionado y seguimiento de los cambios.
Integración y entrega continua de la infraestructura.​
Infraestructura auto-documentada.
Herencia, composición, reusabilidad, encapsulamiento, etc.
DemostraciónDemostración
"Instalando y Configurando"Instalando y Configurando
Apache"Apache"
ProbandoProbando
Infrastructure CodeInfrastructure Code
Unit TestUnit Test
Probar unitariamente el
código sin provisionar (alterar)
un nodo real.
Integration TestsIntegration Tests
Verificar que el código
provisiona un nodo real de la
manera esperada.
Tipos de PruebasTipos de Pruebas
IntegrationIntegration
TestingTesting
Desafíos al RealizarDesafíos al Realizar
Integration TestingIntegration Testing
Crear ambientes de pruebas
de manera fácil y repetible.
Interrogar el estado real del servidor.
Un Test Harness que combine lo anterior.
RSpec-PuppetRSpec-Puppet
https://github.com/rodjek/rspec-puppet
VagrantVagrant
https://www.vagrantup.com/
ServerspecServerspec
http://serverspec.org/
BeakerBeaker
https://github.com/puppetlabs/beaker
PruebaPrueba
# spec/acceptance/jenkins_spec.rb
describe 'jenkins class' do
it 'should work with no errors' do
pp = "include jenkins"
expect(apply_manifest(pp).exit_code).to eq(0)
end
#Serverspec
describe service('jenkins') do
it { should be_enabled }
end
end
# spec/acceptance/nodesets/default.yml
HOSTS:
ubuntu-1404-x86:
roles:
- masterless
platform: ubuntu-1404-x86_64
hypervisor: vagrant
box: ubuntu14.04-x86
Ambiente de PruebaAmbiente de Prueba
Integration TestsIntegration Tests
Configuración delConfiguración del
AmbienteAmbiente
# spec/spec_helper_acceptance.rb
RSpec.configure do |c|
# Configure all nodes in nodeset
c.before :suite do
hosts.each do |host|
# Install this module
copy_module_to(host, :source => module_root,
:module_name => 'jenkins')
# copies all the module dependencies
rsync_to(host ,fixture_modules, '/etc/puppet/modules/')
end
end
end
DemostraciónDemostración
"Agregando Pruebas al"Agregando Pruebas al
módulo de Apache"módulo de Apache"
Porqué CD y DevopsPorqué CD y Devops
necesitannecesitan
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code es un habilitador:
Permite agregar la infraestructura al pipeline de
Continuous Delivery.
Permite que Operaciones pueda utilizar prácticas
ágiles para gestionar la infraestructura.
Rompe barreras entre Dev y OPS.
PreguntasPreguntas
ReferenciasReferencias
Presentación (código y slides):
https://github.com/snahider/test-driven-infrastructure

Mais conteúdo relacionado

Mais procurados

Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a AnsibleOsvaldo
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlimaAngel Nuñez
 
Manejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmManejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmMario IC
 
Docker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeMario IC
 
Kubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingKubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingAngel Nuñez
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkMario IC
 
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de PruebasGlobant
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemMario IC
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineMario IC
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open sourcescrumecuador
 
Kubernetes - #gdglimasummit
Kubernetes - #gdglimasummitKubernetes - #gdglimasummit
Kubernetes - #gdglimasummitAngel Nuñez
 
Ansible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y AutomatizaciónAnsible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y Automatizaciónsergiovier
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Moisés Maciá
 

Mais procurados (19)

Introduccion a Ansible
Introduccion a AnsibleIntroduccion a Ansible
Introduccion a Ansible
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
Manejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con HelmManejo de packages en Kubernetes con Helm
Manejo de packages en Kubernetes con Helm
 
Docker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - ComposeDocker Ecosystem - Part II - Compose
Docker Ecosystem - Part II - Compose
 
Kubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingKubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and Scaling
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
 
Terraspace, the definitive terraform framework
Terraspace, the definitive terraform frameworkTerraspace, the definitive terraform framework
Terraspace, the definitive terraform framework
 
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
¡Introducción a Cypress! - Globant Tech Insiders: Automatización de Pruebas
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Docker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - EngineDocker Ecosystem - Part I - Engine
Docker Ecosystem - Part I - Engine
 
Dev ops infraestructura agil con open source
Dev ops   infraestructura agil con open sourceDev ops   infraestructura agil con open source
Dev ops infraestructura agil con open source
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Kubernetes - #gdglimasummit
Kubernetes - #gdglimasummitKubernetes - #gdglimasummit
Kubernetes - #gdglimasummit
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Introducción a Ansible
Introducción a AnsibleIntroducción a Ansible
Introducción a Ansible
 
Ansible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y AutomatizaciónAnsible para Gestión de la configuración y Automatización
Ansible para Gestión de la configuración y Automatización
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible
 

Semelhante a Infrastructure as Code

Test Driven Infrastructure
Test Driven InfrastructureTest Driven Infrastructure
Test Driven InfrastructureAngel Nuñez
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Gustavo Veliz
 
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...Plain Concepts
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerErnesto Cardenas Cangahuala
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioOsvaldo
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
After tests marzo 2017: Pruebas de Integración Automatizadas con Docker
After tests marzo 2017: Pruebas de Integración Automatizadas con DockerAfter tests marzo 2017: Pruebas de Integración Automatizadas con Docker
After tests marzo 2017: Pruebas de Integración Automatizadas con DockerFernando Llaca Romero
 
SUSE Expert Days 2017 HPE
SUSE Expert Days 2017 HPESUSE Expert Days 2017 HPE
SUSE Expert Days 2017 HPESUSE España
 
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructuraDevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructuraAlejandro García Miravet
 

Semelhante a Infrastructure as Code (20)

Test Driven Infrastructure
Test Driven InfrastructureTest Driven Infrastructure
Test Driven Infrastructure
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
DotNet 2019 | Pablo Santos Luaces - Como migrar un producto multiplataforma a...
 
Introduccion a Java
Introduccion a JavaIntroduccion a Java
Introduccion a Java
 
Clase 4 IaC.pptx
Clase 4 IaC.pptxClase 4 IaC.pptx
Clase 4 IaC.pptx
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation Server
 
Dprn3 u3 a1_guph
Dprn3 u3 a1_guphDprn3 u3 a1_guph
Dprn3 u3 a1_guph
 
Dokerize rails
Dokerize railsDokerize rails
Dokerize rails
 
Vuelven los "Pelochos"
Vuelven los "Pelochos"Vuelven los "Pelochos"
Vuelven los "Pelochos"
 
.Net framework
.Net framework.Net framework
.Net framework
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Continuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudioContinuous Delivery Un caso de estudio
Continuous Delivery Un caso de estudio
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
After tests marzo 2017: Pruebas de Integración Automatizadas con Docker
After tests marzo 2017: Pruebas de Integración Automatizadas con DockerAfter tests marzo 2017: Pruebas de Integración Automatizadas con Docker
After tests marzo 2017: Pruebas de Integración Automatizadas con Docker
 
SUSE Expert Days 2017 HPE
SUSE Expert Days 2017 HPESUSE Expert Days 2017 HPE
SUSE Expert Days 2017 HPE
 
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructuraDevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
DevOpsDays Madrid 2020 - Audita y evalua la seguridad de tu infraestructura
 
Azure infrastructure testing con inspec
Azure infrastructure testing con inspecAzure infrastructure testing con inspec
Azure infrastructure testing con inspec
 
CI integración continua
CI   integración continuaCI   integración continua
CI integración continua
 

Mais de Angel Nuñez

Structural Agility
Structural AgilityStructural Agility
Structural AgilityAngel Nuñez
 
Architecting Sociotechnical Systems
Architecting Sociotechnical SystemsArchitecting Sociotechnical Systems
Architecting Sociotechnical SystemsAngel Nuñez
 
Product Development Flow
Product Development FlowProduct Development Flow
Product Development FlowAngel Nuñez
 
Hackeando la Cultura Organizacional
Hackeando la Cultura OrganizacionalHackeando la Cultura Organizacional
Hackeando la Cultura OrganizacionalAngel Nuñez
 
Liderazgo Transformacional
Liderazgo TransformacionalLiderazgo Transformacional
Liderazgo TransformacionalAngel Nuñez
 
Liderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOpsLiderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOpsAngel Nuñez
 
Exploratory Testing
Exploratory TestingExploratory Testing
Exploratory TestingAngel Nuñez
 
Agile Test Strategy
Agile Test StrategyAgile Test Strategy
Agile Test StrategyAngel Nuñez
 
Agile Testing - Software Testing Club
Agile Testing - Software Testing ClubAgile Testing - Software Testing Club
Agile Testing - Software Testing ClubAngel Nuñez
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteAngel Nuñez
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NETAngel Nuñez
 
Refactoring to Patterns
Refactoring to PatternsRefactoring to Patterns
Refactoring to PatternsAngel Nuñez
 
Continuous Integration - Going from Zero to Hero
Continuous Integration - Going from Zero to HeroContinuous Integration - Going from Zero to Hero
Continuous Integration - Going from Zero to HeroAngel Nuñez
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas AutomatizadasAngel Nuñez
 
Desarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVCDesarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVCAngel Nuñez
 

Mais de Angel Nuñez (20)

Structural Agility
Structural AgilityStructural Agility
Structural Agility
 
Architecting Sociotechnical Systems
Architecting Sociotechnical SystemsArchitecting Sociotechnical Systems
Architecting Sociotechnical Systems
 
Product Development Flow
Product Development FlowProduct Development Flow
Product Development Flow
 
Chaos Engineering
Chaos EngineeringChaos Engineering
Chaos Engineering
 
Hackeando la Cultura Organizacional
Hackeando la Cultura OrganizacionalHackeando la Cultura Organizacional
Hackeando la Cultura Organizacional
 
Liderazgo Transformacional
Liderazgo TransformacionalLiderazgo Transformacional
Liderazgo Transformacional
 
Liderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOpsLiderazgo Transformacional y DevOps
Liderazgo Transformacional y DevOps
 
Exploratory Testing
Exploratory TestingExploratory Testing
Exploratory Testing
 
Coding Dojo
Coding DojoCoding Dojo
Coding Dojo
 
Agile Test Strategy
Agile Test StrategyAgile Test Strategy
Agile Test Strategy
 
Agile Testing - Software Testing Club
Agile Testing - Software Testing ClubAgile Testing - Software Testing Club
Agile Testing - Software Testing Club
 
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo HolísticamenteSoftware Debt: Qué Es y Cómo Gestionarlo Holísticamente
Software Debt: Qué Es y Cómo Gestionarlo Holísticamente
 
Unit testing
Unit testingUnit testing
Unit testing
 
Test Automation .NET
Test Automation .NETTest Automation .NET
Test Automation .NET
 
Refactoring
RefactoringRefactoring
Refactoring
 
Refactoring to Patterns
Refactoring to PatternsRefactoring to Patterns
Refactoring to Patterns
 
Continuous Integration - Going from Zero to Hero
Continuous Integration - Going from Zero to HeroContinuous Integration - Going from Zero to Hero
Continuous Integration - Going from Zero to Hero
 
Refactoring Golf
Refactoring GolfRefactoring Golf
Refactoring Golf
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas Automatizadas
 
Desarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVCDesarrollo Web con ASP.NET MVC
Desarrollo Web con ASP.NET MVC
 

Infrastructure as Code