Despliegue automatizado sobre lxc



Á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





Homer
Barney
Lisa


Anfitrión

Esquema:
Paquetes necesarios
- LXC
- Ansible
- python-lxc
- yum
- git
LXC
Linux Containers es una tecnología de virtualización a nivel del sistema operativo.

Ejemplos
Creación de una máquina :

Podemos entrar en la máquina :
Y al acabar la borramos con :
lxc-create -t debian -n ejemplo-proyecto lxc-console -n ejemplo-proyectolxc-destroy -n ejemplo-proyectoAnsible
Ansible es una herramienta de orquestación.
Utiliza el protocolo ssh.

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 -kansible local -m apt -a "name=htop update_cache=yes state=present" -u root -kPlaybooks
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



Ejemplo
Playbook para crear una máquina:



---
- hosts: local
become: yes
become_user: root
tasks:
- name: Creación del contenedor Lisa
lxc_container:
name: lisa
container_log: true
template: centos
state: startedEjemplo
Preparación de la máquina:



---
- 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/sudoersEjemplo
Instalación de un servicio:



---
- 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:
- httpdPlaybook que llama al rol
Tarea main.yml
Prueba en directo




deck
By alvaro-rodriguez
deck
- 1,540