hispanico.lxd
ansible-lxd
Este rol gestiona Perfiles LXD y Contenedores LXD en un servidor LXD remoto. https://linuxcontainers.org/lxd/
Requisitos
LXD 2.0 o superior debe estar instalado en el host de LXD y en el servidor de Ansible (debería estar instalado por defecto en Ubuntu 16.04)
LXD ya debe estar configurado en el host remoto usando
sudo lxd init
Para que Ansible gestione un host LXD de forma remota, los siguientes comandos deben ejecutarse previamente:
En el host remoto de LXD:
$ lxc config set core.https_address [::]:8443
$ lxc config set core.trust_password reemplaza-esto-con-una-contraseña-segura
En el host de Ansible:
$ lxc config set core.https_address [::]:8443
$ lxc remote add lxd4 lxd4.ejemplo.com
(reemplaza lxd4.ejemplo.com con el nombre de host de tu servidor LXD, 'lxd4' puede tener el nombre que desees, necesitarás referenciarlo en el archivo de inventario)
- Probado en un host LXD y en un host de Ansible, ambos usando Ubuntu 16.04 LTS (puede funcionar con otras distribuciones)
Variables del rol
Variables de perfil de LXD:
url:
unix:/var/snap/lxd/common/lxd/unix.socket (por defecto)state:
presente (por defecto), ausente
Variables de contenedores LXD:
url:
unix:/var/snap/lxd/common/lxd/unix.socket (por defecto)state:
iniciado (por defecto), detenido, reiniciado, ausente, congeladotype:
imagen (por defecto)mode:
pull (por defecto)server:
https://cloud-images.ubuntu.com/releases (por defecto)protocol:
simplestreams (por defecto)alias:
"16.04" (por defecto)architecture:
x86_64 (por defecto)wait_for_ipv4_addresses:
true (por defecto)timeout:
600 (por defecto)
Estas variables están documentadas aquí:
- http://docs.ansible.com/ansible/latest/lxd_profile_module.html
- http://docs.ansible.com/ansible/latest/lxd_container_module.html
Variables adicionales:
cloud_init:
configuración de cloud-init (http://cloudinit.readthedocs.io/en/latest/index.html)
Valores por defecto:
# Perfiles LXD
lxd_profiles:
- name: default
description: "Perfil LXD por defecto"
status: present
# Contenedores LXD
LXCs:
- name: mycontainer
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
profile: default
status: started
Dependencias
Ninguna
Ejemplo
El siguiente ejemplo configurará un perfil LXD por defecto con la opción cloud-init para instalar paquetes de python y configurar el usuario ansible, luego instalará 2 contenedores en el servidor LXD.
- hosts: all
roles:
- ansible-lxd
vars:
lxd_profiles:
- name: default
description: "Perfil LXD por defecto"
storage_pool: default
network: lxdbr0
cloud_init: |
#cloud-config
packages:
- python
users:
- name: ansible
group: sudo
shell: /bin/bash
sudo: ALL=(ALL) NOPASSWD:ALL
ssh_authorized_keys:
- {{ lookup('file', '$HOME/.ssh/id_rsa.pub' ) }}
status: present
LXCs:
- name: MyContainer01
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
disk_space: 50GB # Límite de disco del contenedor
memory: 2GB # Límite de memoria del contenedor
storage_pool: default
network: lxdbr0
ipv4address: 10.0.0.2 # dirección IPv4 estática según la subred de lxdbr0
profile: default
status: started
- name: MyContainer02
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
disk_space: 50GB # Límite de disco del contenedor
memory: 2GB # Límite de memoria del contenedor
nesting: "true" # Seguridad.nesting habilitado del contenedor
storage_pool: default
network: lxdbr0
ipv4address: 10.0.0.3 # dirección IPv4 estática según la subred de lxdbr0
profile: default
status: started
Licencia
Licenciado bajo la Licencia GPLv3. Ver el archivo LICENSE para más detalles.
Información del autor
Hispanico
Manage LXD Profile and LXD Containers
ansible-galaxy install hispanico.lxd