Despliegue automatizado sobre lxc
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917333/ansible.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917313/containers.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917354/mas.png)
Álvaro Rodríguez Márquez
Introducción al proyecto
Mi proyecto es un conjunto de recetas con las cuales desplegaremos un escenario de pruebas .
Objetivos del proyecto
Conseguir un sistema:
- Sin requisitos de hardware
- Fácil de montar
- Desechable
¿Sobre que sistema?
Recomiendo que el despliegue sea sobre Ubuntu 16.04
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921465/ubuntu.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921465/ubuntu.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921657/debian.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921465/ubuntu.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921662/centos_logo.png)
Homer
Barney
Lisa
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921712/apache.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921713/mysql.png)
Anfitrión
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3921726/DNS.jpg)
Esquema:
Paquetes necesarios
- LXC
- Ansible
- python-lxc
- yum
- git
LXC
Linux Containers es una tecnología de virtualización a nivel del sistema operativo.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917313/containers.png)
Ejemplos
Creación de una máquina :
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917312/lxc.png)
Podemos entrar en la máquina :
Y al acabar la borramos con :
lxc-create -t debian -n ejemplo-proyecto
lxc-console -n ejemplo-proyecto
lxc-destroy -n ejemplo-proyecto
Ansible
Ansible es una herramienta de orquestación.
Utiliza el protocolo ssh.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917333/ansible.png)
Origen del nombre
El Ansible es un dispositivo de comunicación mas rápido que la luz.
Ejemplos
Prueba con ping:
Instalación de paquete:
ansible local -m ping -u usuario -k
ansible local -m apt -a "name=htop update_cache=yes state=present" -u root -k
Playbooks
Los playbooks son archivos con instrucciones .
Con ellos podemos instalar y configurar servicios.
Playbooks
---
- hosts: lxc
become: yes
become_user: root
tasks:
- name: prueba de ping + ssh
ping:
Playbook para probar la conexión:
Ansible y Lxc
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917333/ansible.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917313/containers.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917354/mas.png)
Ejemplo
Playbook para crear una máquina:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917333/ansible.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917313/containers.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917354/mas.png)
---
- hosts: local
become: yes
become_user: root
tasks:
- name: Creación del contenedor Lisa
lxc_container:
name: lisa
container_log: true
template: centos
state: started
Ejemplo
Preparación de la máquina:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917333/ansible.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917313/containers.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917354/mas.png)
---
- hosts: local
become: yes
become_user: root
tasks:
- name: instalación ssh lisa
lxc_container:
name: lisa
container_command: |
yum update | yum install openssh-server sshpass sudo -y
- name: creación de usuario
lxc_container:
name: lisa
container_command: useradd usuario -s /bin/bash -m
- name: configuración del usuario
lxc_container:
name: lisa
container_command: |
echo -e "usuario\nusuario" | passwd usuario
- name: configuración de sudo
lxc_container:
name: lisa
container_command: |
echo "usuario ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Ejemplo
Instalación de un servicio:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917333/ansible.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917313/containers.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917354/mas.png)
---
- name: instalación de httpd (apache)
yum: name=httpd state=present
- name: instalación de php
yum: name=php state=present
- name: Copiar la página de presentación
copy: src=index.html dest=/var/www/html/index.html
---
- hosts: lisa
become: yes
become_user: root
roles:
- httpd
Playbook que llama al rol
Tarea main.yml
Prueba en directo
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917313/containers.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917333/ansible.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917410/corazon.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/728964/images/3917354/mas.png)
deck
By alvaro-rodriguez
deck
- 1,270