SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Organizando un 
datacenter virtual 
AWS VPC - VPN - Ansible 
Ignacio Nin 
VividCortex
Datacenter 
¿Qué es?
Temas típicos 
• Colocations remotas 
• Costo de transporte 
• Administración remota 
• ¿Este cable… ? 
• Servidores legacy 
• Exposición a fallas de 
hardware 
www.vividcortex.com | info@vividcortex.com
Administración remota 
•Cambios de hardware como tickets 
•Fallas en hardware como ticket 
•Topología 
•Topología plana 
•Firewall y enrutado en los servidores 
www.vividcortex.com | info@vividcortex.com
Un datacenter virtual 
www.vividcortex.com | info@vividcortex.com 
Algunas contras 
•Hardware virtual 
•Performance 
•Los recursos 
performantes pueden 
ser caros 
Algunas ventajas 
•Exposición a fallas 
físicas reducida 
•Versatilidad en 
"hardware" 
•Topología muy versátil 
•Clonación (AMIs)
AWS EC2 
Instancias clonadas desde una imagen base 
www.vividcortex.com | info@vividcortex.com
AWS EC2 
www.vividcortex.com | info@vividcortex.com
AWS VPC 
•Como un rack en un datacenter 
•Sin VPC, las instancias individuales están 
expuestas a las internes (IP elástica) 
•NAT 
•Subredes, aislamiento 
www.vividcortex.com | info@vividcortex.com
AWS VPC 
www.vividcortex.com | info@vividcortex.com
AWS VPC 
www.vividcortex.com | info@vividcortex.com
VPN 
•Tradicionalmente se implementa como hardware 
•Algunas contras 
•OpenVPN: VPN por software 
•SSL 
•Userland, usando tunnel devices 
•VPN means Very Poor Network 
•FUD 
www.vividcortex.com | info@vividcortex.com
VPN 
•Tradicionalmente se implementa como hardware 
•Algunas contras 
•OpenVPN: VPN por software 
•SSL 
•Userland, usando tunnel devices 
•VPN: Very Poor Network 
•FUD 
www.vividcortex.com | info@vividcortex.com
OpenVPN 
Los paquetes son cifrados y encapsulados 
www.vividcortex.com | info@vividcortex.com
OpenVPN 
Los paquetes son cifrados y encapsulados 
www.vividcortex.com | info@vividcortex.com
OpenVPN 
www.vividcortex.com | info@vividcortex.com
VPC <> VPN 
• El servidor OpenVPN vive en la VPC 
• Los clientes se conectan a la VPC a través de VPN 
• En el caso mas simple, los clientes VPN se conectan directamente a todos 
los servidores en la VPC 
• Opcionalmente, elementos en la VPC pueden hablarle a [algunos] clientes 
• Enrutado hacia adentro 
• Manejado por OpenVPN 
• Enrutado hacia afuera 
•El servidor OpenVPN puede hacer NAT hacia los clientes 
•Routing tables -> servidor OpenVPN -> -j MASQUERADE 
www.vividcortex.com | info@vividcortex.com
VPC <> VPN 
www.vividcortex.com | info@vividcortex.com
VPC <> VPN 
! 
# Push routes to the client to allow it! 
# to reach other private subnets behind! 
# the server. Remember that these! 
# private subnets will also need! 
# to know to route the OpenVPN client! 
# address pool (10.20.0.0/255.255.255.0)! 
# back to the OpenVPN server.! 
;push "route 10.10.1.0 255.255.255.0"! 
;push "route 10.10.10.0 255.255.255.0"! 
push "route 10.10.0.0 255.255.0.0"! 
push "route 10.30.0.0 255.255.0.0"! 
! 
# To assign specific IP addresses to specific! 
# clients or if a connecting client has a private! 
# subnet behind it that should also have VPN access,! 
# use the subdirectory "ccd" for client-specific! 
# configuration files (see man page for more info).! 
! 
www.vividcortex.com | info@vividcortex.com
AWS VPC: Subredes 
•Subredes públicas o privadas 
•Sistema de enrutado 
•Ligeramente diferente 
• Públicas: instancias conectadas directamente, como en EC2 
• Privadas: se necesita NAT 
•Routing tables 
•DNS 
•dnsmasq 
www.vividcortex.com | info@vividcortex.com
AWS VPC: Subredes 
www.vividcortex.com | info@vividcortex.com
AWS VPC: Subredes 
www.vividcortex.com | info@vividcortex.com
Instancias en una subred 
www.vividcortex.com | info@vividcortex.com
Routing tables 
www.vividcortex.com | info@vividcortex.com
Orquestado: Ansible 
• Puppet: declarativo 
• Chef: imperativo 
• Ansible: imperativo 
• Independiente del lenguaje de implementación 
• declaraciones .yml declarations, comunicación por ssh(1) 
• Algunas contras: 
• Muy ad-hoc 
• Pocos elementos para programar 
• Pero estas podrían considerarse ventajas a su vez 
www.vividcortex.com | info@vividcortex.com
Orquestado: Ansible 
---! 
- name: Install dnsmasq! 
yum: name=dnsmasq state=present! 
! 
- name: Set dnsmasq configuration file! 
copy: src={{ item }} dest=/etc/dnsmasq.d/ owner=root group=root mode=0644! 
with_items:! 
- dns-server.conf! 
notify:! 
- reload dnsmasq! 
! 
- name: Set hosts file! 
tags: light! 
template: src={{ item }}.j2 dest=/etc/dnsmasq.d/{{ item }}! 
owner=root group=root mode=0644! 
with_items:! 
- hosts! 
notify:! 
- reload dnsmasq! 
www.vividcortex.com | info@vividcortex.com
Orquestado: Ansible 
---! 
- name: Install dnsmasq! 
yum: name=dnsmasq state=present! 
! 
- name: Set dnsmasq configuration file! 
copy: src={{ item }} dest=/etc/dnsmasq.d/ owner=root group=root mode=0644! 
with_items:! 
- dns-server.conf! 
notify:! 
- reload dnsmasq! 
! 
- name: Set hosts file! 
tags: light! 
template: src={{ item }}.j2 dest=/etc/dnsmasq.d/{{ item }}! 
owner=root group=root mode=0644! 
with_items:! 
- hosts! 
notify:! 
- reload dnsmasq! 
www.vividcortex.com | info@vividcortex.com
Orquestado: Ansible 
---! 
- name: Install dnsmasq! 
yum: name=dnsmasq state=present! 
! 
- name: Set dnsmasq configuration file! 
copy: src={{ item }} dest=/etc/dnsmasq.d/ owner=root group=root mode=0644! 
with_items:! 
- dns-server.conf! 
notify:! 
- reload dnsmasq! 
! 
- name: Set hosts file! 
tags: light! 
template: src={{ item }}.j2 dest=/etc/dnsmasq.d/{{ item }}! 
owner=root group=root mode=0644! 
with_items:! 
- hosts! 
notify:! 
- reload dnsmasq! 
www.vividcortex.com | info@vividcortex.com
Orquestado: Ansible 
with_items:! 
- hosts! 
notify:! 
- reload dnsmasq! 
! 
- name: Enable dnsmasq configuration file! 
lineinfile: dest=/etc/dnsmasq.conf regexp='^conf-file='! 
line=conf-file=/etc/dnsmasq.d/dns-server.conf! 
insertafter='^#conf-file='! 
notify:! 
- reload dnsmasq! 
! 
- name: Start dnsmasq service! 
service: name=dnsmasq state=started enabled=yes! 
www.vividcortex.com | info@vividcortex.com
Orquestado: Ansible 
with_items:! 
- hosts! 
notify:! 
- reload dnsmasq! 
! 
- name: Enable dnsmasq configuration file! 
lineinfile: dest=/etc/dnsmasq.conf regexp='^conf-file='! 
line=conf-file=/etc/dnsmasq.d/dns-server.conf! 
insertafter='^#conf-file='! 
notify:! 
- reload dnsmasq! 
! 
- name: Start dnsmasq service! 
service: name=dnsmasq state=started enabled=yes! 
www.vividcortex.com | info@vividcortex.com
Orquestado: Ansible 
Now deploying too! 
www.vividcortex.com | info@vividcortex.com
Ansible y AWS 
•Ansible puede obtener su lista de hosts desde 
AWS: ec2.py 
•Podés escribir tu propio ec2.{py,sh,*} 
•Soporte básico de operaciones de instancia 
www.vividcortex.com | info@vividcortex.com
Pensá diferente 
•Máquinas para tirar 
•Los servidores deberían poder ser reemplazados de 
inmediato 
•Reemplazar seguido significa un script depurado 
•Hacé scripts idempotentes 
•Pensá diferente[mente] 
•Servidores estáticos 
•Servidores de aplicación: Estático + deploy 
•Servidores de datos: Estático + restaurar respaldo 
www.vividcortex.com | info@vividcortex.com
¡Gracias! 
•Mas de esto? 
•nacho at vividcortex com / twitter @nachexnachex 
•Futuros webinarios/blogposts 
•Mas de VividCortex: info@vividcortex.com 
www.vividcortex.com | info@vividcortex.com

Más contenido relacionado

La actualidad más candente

Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Luis Bosque
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto Gimeno
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
betabeers
 

La actualidad más candente (18)

Nuevo QNAP SO QTS 4.2 en Español
Nuevo QNAP SO QTS 4.2 en EspañolNuevo QNAP SO QTS 4.2 en Español
Nuevo QNAP SO QTS 4.2 en Español
 
Como reducir costos en AWS
Como reducir costos en AWSComo reducir costos en AWS
Como reducir costos en AWS
 
SQL Server 2017 soporte en Linux
SQL Server 2017 soporte en LinuxSQL Server 2017 soporte en Linux
SQL Server 2017 soporte en Linux
 
Cómo crear una VPN con OpenVPN
Cómo crear una VPN con OpenVPNCómo crear una VPN con OpenVPN
Cómo crear una VPN con OpenVPN
 
Windows server 2012 para it
Windows server 2012 para itWindows server 2012 para it
Windows server 2012 para it
 
Tools for High Availability
Tools for High AvailabilityTools for High Availability
Tools for High Availability
 
Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810Qnap nas training latam 2016 0810
Qnap nas training latam 2016 0810
 
Hostening
HosteningHostening
Hostening
 
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
Alto rendimiento y escalabilidad en plataformas Rails: Casos prácticos. Soluc...
 
Servicios de Storage en AWS
Servicios de Storage en AWSServicios de Storage en AWS
Servicios de Storage en AWS
 
Intsalacion de word_press_en_local
Intsalacion de word_press_en_localIntsalacion de word_press_en_local
Intsalacion de word_press_en_local
 
Garbage Collection en el JVM
Garbage Collection en el JVMGarbage Collection en el JVM
Garbage Collection en el JVM
 
Introducción a Ansible
Introducción a AnsibleIntroducción a Ansible
Introducción a Ansible
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
EC2: Cómputo en la nube a profundidad
EC2: Cómputo en la nube a profundidadEC2: Cómputo en la nube a profundidad
EC2: Cómputo en la nube a profundidad
 
John Espino plantillas
John Espino plantillasJohn Espino plantillas
John Espino plantillas
 
John Espino slideshare
John Espino slideshareJohn Espino slideshare
John Espino slideshare
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 

Similar a Organizando un datacenter virtual

4 tecnologías de protección de datos contra desastres
4 tecnologías de protección de datos contra desastres4 tecnologías de protección de datos contra desastres
4 tecnologías de protección de datos contra desastres
Omega Peripherals
 
Actividad 05 implementación de servicios de infraestructura de red(1)
Actividad 05   implementación de servicios de infraestructura de red(1)Actividad 05   implementación de servicios de infraestructura de red(1)
Actividad 05 implementación de servicios de infraestructura de red(1)
Diana Marcela Samboni
 
AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice
Raul Hugo
 

Similar a Organizando un datacenter virtual (20)

BORJA_ESCOLAR_COLADO_TFC_2022.pptx
BORJA_ESCOLAR_COLADO_TFC_2022.pptxBORJA_ESCOLAR_COLADO_TFC_2022.pptx
BORJA_ESCOLAR_COLADO_TFC_2022.pptx
 
Sql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql server
 
Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)
 
Docker ECS en AWS
Docker ECS en AWS Docker ECS en AWS
Docker ECS en AWS
 
SQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nubeSQL Server 2014 infraestructura hibrida y nube
SQL Server 2014 infraestructura hibrida y nube
 
Seguridad de las Redes
Seguridad de las RedesSeguridad de las Redes
Seguridad de las Redes
 
Game of pods - Kubernetes
Game of pods - KubernetesGame of pods - Kubernetes
Game of pods - Kubernetes
 
Training LATAM
Training LATAMTraining LATAM
Training LATAM
 
4 tecnologías de protección de datos contra desastres
4 tecnologías de protección de datos contra desastres4 tecnologías de protección de datos contra desastres
4 tecnologías de protección de datos contra desastres
 
Actividad 05 implementación de servicios de infraestructura de red(1)
Actividad 05   implementación de servicios de infraestructura de red(1)Actividad 05   implementación de servicios de infraestructura de red(1)
Actividad 05 implementación de servicios de infraestructura de red(1)
 
AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice AWSPeru Meetup marzo - introduccion a elastic containers seervice
AWSPeru Meetup marzo - introduccion a elastic containers seervice
 
Deploying Wordpress
Deploying WordpressDeploying Wordpress
Deploying Wordpress
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Webinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPS
Webinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPSWebinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPS
Webinar –Qué servidor elegir para tu proyecto, Cloud, Dedicados o VPS
 
Versiones y tipos de virtualizacion
Versiones y tipos de virtualizacionVersiones y tipos de virtualizacion
Versiones y tipos de virtualizacion
 
Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrollo
 
Introduccion hyper v
Introduccion hyper vIntroduccion hyper v
Introduccion hyper v
 
Virtualizacion, seguridad (utm) y alta disponibilidad kamal majaiti
Virtualizacion, seguridad (utm) y alta disponibilidad kamal majaitiVirtualizacion, seguridad (utm) y alta disponibilidad kamal majaiti
Virtualizacion, seguridad (utm) y alta disponibilidad kamal majaiti
 
Configuracion del servidor dns en linux
Configuracion del servidor dns en linuxConfiguracion del servidor dns en linux
Configuracion del servidor dns en linux
 
Tecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup CassandraTecnicas Big Data: Meetup Cassandra
Tecnicas Big Data: Meetup Cassandra
 

Organizando un datacenter virtual

  • 1. Organizando un datacenter virtual AWS VPC - VPN - Ansible Ignacio Nin VividCortex
  • 3. Temas típicos • Colocations remotas • Costo de transporte • Administración remota • ¿Este cable… ? • Servidores legacy • Exposición a fallas de hardware www.vividcortex.com | info@vividcortex.com
  • 4. Administración remota •Cambios de hardware como tickets •Fallas en hardware como ticket •Topología •Topología plana •Firewall y enrutado en los servidores www.vividcortex.com | info@vividcortex.com
  • 5. Un datacenter virtual www.vividcortex.com | info@vividcortex.com Algunas contras •Hardware virtual •Performance •Los recursos performantes pueden ser caros Algunas ventajas •Exposición a fallas físicas reducida •Versatilidad en "hardware" •Topología muy versátil •Clonación (AMIs)
  • 6. AWS EC2 Instancias clonadas desde una imagen base www.vividcortex.com | info@vividcortex.com
  • 7. AWS EC2 www.vividcortex.com | info@vividcortex.com
  • 8. AWS VPC •Como un rack en un datacenter •Sin VPC, las instancias individuales están expuestas a las internes (IP elástica) •NAT •Subredes, aislamiento www.vividcortex.com | info@vividcortex.com
  • 9. AWS VPC www.vividcortex.com | info@vividcortex.com
  • 10. AWS VPC www.vividcortex.com | info@vividcortex.com
  • 11. VPN •Tradicionalmente se implementa como hardware •Algunas contras •OpenVPN: VPN por software •SSL •Userland, usando tunnel devices •VPN means Very Poor Network •FUD www.vividcortex.com | info@vividcortex.com
  • 12. VPN •Tradicionalmente se implementa como hardware •Algunas contras •OpenVPN: VPN por software •SSL •Userland, usando tunnel devices •VPN: Very Poor Network •FUD www.vividcortex.com | info@vividcortex.com
  • 13. OpenVPN Los paquetes son cifrados y encapsulados www.vividcortex.com | info@vividcortex.com
  • 14. OpenVPN Los paquetes son cifrados y encapsulados www.vividcortex.com | info@vividcortex.com
  • 15. OpenVPN www.vividcortex.com | info@vividcortex.com
  • 16. VPC <> VPN • El servidor OpenVPN vive en la VPC • Los clientes se conectan a la VPC a través de VPN • En el caso mas simple, los clientes VPN se conectan directamente a todos los servidores en la VPC • Opcionalmente, elementos en la VPC pueden hablarle a [algunos] clientes • Enrutado hacia adentro • Manejado por OpenVPN • Enrutado hacia afuera •El servidor OpenVPN puede hacer NAT hacia los clientes •Routing tables -> servidor OpenVPN -> -j MASQUERADE www.vividcortex.com | info@vividcortex.com
  • 17. VPC <> VPN www.vividcortex.com | info@vividcortex.com
  • 18. VPC <> VPN ! # Push routes to the client to allow it! # to reach other private subnets behind! # the server. Remember that these! # private subnets will also need! # to know to route the OpenVPN client! # address pool (10.20.0.0/255.255.255.0)! # back to the OpenVPN server.! ;push "route 10.10.1.0 255.255.255.0"! ;push "route 10.10.10.0 255.255.255.0"! push "route 10.10.0.0 255.255.0.0"! push "route 10.30.0.0 255.255.0.0"! ! # To assign specific IP addresses to specific! # clients or if a connecting client has a private! # subnet behind it that should also have VPN access,! # use the subdirectory "ccd" for client-specific! # configuration files (see man page for more info).! ! www.vividcortex.com | info@vividcortex.com
  • 19. AWS VPC: Subredes •Subredes públicas o privadas •Sistema de enrutado •Ligeramente diferente • Públicas: instancias conectadas directamente, como en EC2 • Privadas: se necesita NAT •Routing tables •DNS •dnsmasq www.vividcortex.com | info@vividcortex.com
  • 20. AWS VPC: Subredes www.vividcortex.com | info@vividcortex.com
  • 21. AWS VPC: Subredes www.vividcortex.com | info@vividcortex.com
  • 22. Instancias en una subred www.vividcortex.com | info@vividcortex.com
  • 23. Routing tables www.vividcortex.com | info@vividcortex.com
  • 24. Orquestado: Ansible • Puppet: declarativo • Chef: imperativo • Ansible: imperativo • Independiente del lenguaje de implementación • declaraciones .yml declarations, comunicación por ssh(1) • Algunas contras: • Muy ad-hoc • Pocos elementos para programar • Pero estas podrían considerarse ventajas a su vez www.vividcortex.com | info@vividcortex.com
  • 25. Orquestado: Ansible ---! - name: Install dnsmasq! yum: name=dnsmasq state=present! ! - name: Set dnsmasq configuration file! copy: src={{ item }} dest=/etc/dnsmasq.d/ owner=root group=root mode=0644! with_items:! - dns-server.conf! notify:! - reload dnsmasq! ! - name: Set hosts file! tags: light! template: src={{ item }}.j2 dest=/etc/dnsmasq.d/{{ item }}! owner=root group=root mode=0644! with_items:! - hosts! notify:! - reload dnsmasq! www.vividcortex.com | info@vividcortex.com
  • 26. Orquestado: Ansible ---! - name: Install dnsmasq! yum: name=dnsmasq state=present! ! - name: Set dnsmasq configuration file! copy: src={{ item }} dest=/etc/dnsmasq.d/ owner=root group=root mode=0644! with_items:! - dns-server.conf! notify:! - reload dnsmasq! ! - name: Set hosts file! tags: light! template: src={{ item }}.j2 dest=/etc/dnsmasq.d/{{ item }}! owner=root group=root mode=0644! with_items:! - hosts! notify:! - reload dnsmasq! www.vividcortex.com | info@vividcortex.com
  • 27. Orquestado: Ansible ---! - name: Install dnsmasq! yum: name=dnsmasq state=present! ! - name: Set dnsmasq configuration file! copy: src={{ item }} dest=/etc/dnsmasq.d/ owner=root group=root mode=0644! with_items:! - dns-server.conf! notify:! - reload dnsmasq! ! - name: Set hosts file! tags: light! template: src={{ item }}.j2 dest=/etc/dnsmasq.d/{{ item }}! owner=root group=root mode=0644! with_items:! - hosts! notify:! - reload dnsmasq! www.vividcortex.com | info@vividcortex.com
  • 28. Orquestado: Ansible with_items:! - hosts! notify:! - reload dnsmasq! ! - name: Enable dnsmasq configuration file! lineinfile: dest=/etc/dnsmasq.conf regexp='^conf-file='! line=conf-file=/etc/dnsmasq.d/dns-server.conf! insertafter='^#conf-file='! notify:! - reload dnsmasq! ! - name: Start dnsmasq service! service: name=dnsmasq state=started enabled=yes! www.vividcortex.com | info@vividcortex.com
  • 29. Orquestado: Ansible with_items:! - hosts! notify:! - reload dnsmasq! ! - name: Enable dnsmasq configuration file! lineinfile: dest=/etc/dnsmasq.conf regexp='^conf-file='! line=conf-file=/etc/dnsmasq.d/dns-server.conf! insertafter='^#conf-file='! notify:! - reload dnsmasq! ! - name: Start dnsmasq service! service: name=dnsmasq state=started enabled=yes! www.vividcortex.com | info@vividcortex.com
  • 30. Orquestado: Ansible Now deploying too! www.vividcortex.com | info@vividcortex.com
  • 31. Ansible y AWS •Ansible puede obtener su lista de hosts desde AWS: ec2.py •Podés escribir tu propio ec2.{py,sh,*} •Soporte básico de operaciones de instancia www.vividcortex.com | info@vividcortex.com
  • 32. Pensá diferente •Máquinas para tirar •Los servidores deberían poder ser reemplazados de inmediato •Reemplazar seguido significa un script depurado •Hacé scripts idempotentes •Pensá diferente[mente] •Servidores estáticos •Servidores de aplicación: Estático + deploy •Servidores de datos: Estático + restaurar respaldo www.vividcortex.com | info@vividcortex.com
  • 33. ¡Gracias! •Mas de esto? •nacho at vividcortex com / twitter @nachexnachex •Futuros webinarios/blogposts •Mas de VividCortex: info@vividcortex.com www.vividcortex.com | info@vividcortex.com