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-proyecto
lxc-destroy -n ejemplo-proyecto
Ansible
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 -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
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: started
Ejemplo
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/sudoers
Ejemplo
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:
- httpd
Playbook que llama al rol
Tarea main.yml
Prueba en directo
deck
By alvaro-rodriguez
deck
- 1,334