aws peru meetup - ansible y aws demo (by joseph paz)
TRANSCRIPT
Ansible y AWSAWS User Group Peru
AWSPeru:
Meetup
Comunidad de AWS Perú
Joseph Paz Aliaga
@martip07 @awsperu
Febrero 2017
Ansible¿Ansible?
Herramienta para automatizar configuraciones, administración de recursos y
actividades similares.
¿Donde?
- Infraestructura Local
- Infraestructura Cloud
- Redes / Network
- Contenedores
- Otros
¿Diferencias?
- No requiere un agente en los equipos a gestionar
- Curva de aprendizaje corta
- Módulos para diferentes servicios
- Integración con otras herramientas similares
Ansible - AWS
¿Que puedo hacer?
- Interactuar con los servicios de AWS.
- Crear recursos usando los servicios de
AWS.
- Trabajar etapas por ambientes de
desarrollo (valido en CI/CD).
- Recuperación de Infraestructura.
- Ahorrar costos,
Ejemplo 1: Crear VPC
---
#main.yaml: Crear VPC
- name: Crea VPC con el modulo ec2_vpc_net
ec2_vpc_net:
name: vpc_dojogeek_dev
cidr_block: 10.0.0.0/16
region: us-east-2
dns_hostnames: yes
dns_support: yes
state: present
tenancy: default
tags:
Name: vpc_dojogeek_dev
Ejemplo 2: Crear SG
---
#main.yaml: Crear grupo de seguridad
- name: Crear grupo de seguridad con el modulo ec2_group
ec2_group:
name: dev_web_sg
description: Grupo de seguridad para servidores web
vpc_id: "{{ vpc_facts.vpcs[0].id }}"
region: us-east-2
rules:
- proto: tcp
from_port: 80
to_port: 80
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 443
to_port: 443
cidr_ip: 0.0.0.0/0
- proto: tcp
from_port: 22
to_port: 22
cidr_ip: 0.0.0.0/0
register: sg_ec2
- name: Debug sg_ec2
debug: msg="{{ sg_ec2 }}"
Ejemplo 3: Crear Key
---
#main.yaml: Crear key para EC2
- name: Crear key usando el modulo ec2_key
ec2_key:
region: us-east-2
name: key_web_dev
key_material: ‘LLAVE PUBLICA'
state: present
register: dg_key
- name: Debug dg_key
debug: msg="{{ dg_key }}"
Ejemplo 4: Crear Instancia---
#main.yaml: Crear instancia
- name: Crear instancia usando el modulo ec2
ec2:
region: us-east-2
instance_type: t2.micro
count: 1
image: "{{ ami_id }}"
key_name: "{{ key_name }}"
state: present
instance_tags:
Name: dev-web-ghost
Date: "{{ ansible_date_time.date }}"
wait: yes
vpc_subnet_id: "{{ subnets.subnets[1].id }}"
assign_public_ip: yes
register: dg_instance
- name: Debug dg_instance
debug: msg="{{ dg_instance }}"
Ejemplo 5: Ejemplo App Host---
#dg-ejemplo-ghost-final.yaml: Playbook para ejemplo Ghost final.
- hosts: localhost
connection: localhost
gather_facts: True
vars_files:
- vars/vars.yaml
roles:
- vpc/crear_vpc
- vpc/datos_vpc
- vpc/crear_igw
- vpc/crear_subnet
- vpc/datos_subnet
- vpc/crear_routes
- seguridad/key/crear_key
- seguridad/sg/crear_sg
- instancia/ec2/crear_ec2
- domain/route53_list
- domain/route53_add
Idea Ansible - AWS HA
Consejos