ahnooie.lxd-container

Rol de Ansible para Contenedores LXD

Este rol gestiona Contenedores LXD/LXC en un Host de Contenedor Linux remoto. Más información sobre LXD

Estado de Construcción

Requisitos

  • Se debe instalar LXD 2.0 o superior en el host LXD y en el servidor Ansible (debería estar instalado por defecto en Ubuntu 16.04).

  • LXD debería estar configurado en el host remoto utilizando sudo lxd init o mediante un Rol de Ansible como juju4/lxd.

  • Para que Ansible gestione un host LXD de forma remota, se deben ejecutar los siguientes comandos con antelación:

En el host LXD remoto:

$ lxc config set core.https_address [::]:8443
$ lxc config set core.trust_password reemplaza-esto-por-una-contraseña-segura

En el host Ansible:

$ lxc config set core.https_address [::]:8443
$ lxc remote add lxd4 lxd4.ejemplo.com

(reemplaza lxd4.ejemplo.com con el nombre de tu host LXD, 'lxd4' puede tener cualquier nombre que desees, tendrás que hacer referencia a él en el archivo de inventario)

  • Probado en un host LXD y un host Ansible utilizando ambos Ubuntu 16.04 LTS (puede funcionar con otras distribuciones).

Variables del Rol

Estas variables están documentadas aquí: http://docs.ansible.com/ansible/latest/lxd_container_module.html

  • state: iniciado (por defecto), detenido, reiniciado, ausente, congelado
  • type: imagen (por defecto)
  • mode: pull (por defecto)
  • server: https://images.linuxcontainers.org (por defecto)
  • protocol: lxd (por defecto)
  • alias: ubuntu/xenial/amd64 (por defecto)
  • wait_for_ipv4_addresses: verdadero (por defecto)
  • timeout: 600 (por defecto)

Variables Adicionales:

  • public_key: "{{ lookup('file','~/.ssh/id_rsa.pub') }}" (por defecto) - ruta a la clave pública ssh para instalar en el contenedor
  • enable_ssh: verdadero (por defecto) - instala y activa el servidor openssh en el contenedor.
  • lxd_host: tu host de contenedor lxd

Dependencias

Ninguna

Instalación

$ ansible-galaxy install ahnooie.lxd-container

Ejemplo

El siguiente ejemplo instalará 6 contenedores con varias distribuciones de Linux en el host LXD lxd4.ejemplo.com; y en cada contenedor instalará python, añadirá una clave ssh pública para el usuario root, e instalará y comenzará el servicio sshd.

Ejemplo de Archivo de Inventario

# Host LXD Remoto
[lxd]
lxd4.ejemplo.com ansible_user=root

# Contenedores en Hosts LXD
[linux-containers]
ubuntu01.ejemplo.com ansible_host=lxd4:ubuntu01 alias=ubuntu/xenial/amd64
centos01.ejemplo.com ansible_host=lxd4:centos01 alias=centos/7/amd64
centos02.ejemplo.com ansible_host=lxd4:centos02 alias=centos/6/amd64
debian01.ejemplo.com ansible_host=lxd4:debian01 alias=debian/stretch/amd64
fedora01.ejemplo.com ansible_host=lxd4:fedora01 alias=fedora/27/amd64

[linux-containers:vars]
ansible_connection=lxd
lxd_host=lxd4.ejemplo.com

Ejemplo de Playbook containers.yml

---
- hosts: linux-containers
  gather_facts: false
  vars:
    public_key: "{{ lookup('file','public_keys/id_rsa.pub') }}"
  roles:
  - ahnooie.lxd-container

Ejemplo de Comando de Playbook

$ ansible-playbook -i inventario containers.yml

Licencia

MIT

Información del Autor

Creado por Benjamin Bryan

Acerca del proyecto

Manage LXD Containers

Instalar
ansible-galaxy install ahnooie.lxd-container
Licencia
mit
Descargas
206
Propietario