hispanico.lxd

ansible-lxd

Estado de construcción Galaxy

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, congelado
  • type: 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í:

Variables adicionales:

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

Acerca del proyecto

Manage LXD Profile and LXD Containers

Instalar
ansible-galaxy install hispanico.lxd
Licencia
gpl-3.0
Descargas
357
Propietario
@openwisp Contributor and @ninuxorg Member