hispanico.lxd

ansible-lxd

Statut de construction Galaxy

Ce rôle gère les profils LXD et les conteneurs LXD sur un serveur LXD distant. https://linuxcontainers.org/lxd/

Exigences

  • LXD 2.0 ou version supérieure doit être installé sur l'hôte LXD et le serveur Ansible (il doit déjà être installé par défaut sur Ubuntu 16.04)

  • LXD doit déjà être configuré sur l'hôte distant en utilisant sudo lxd init

  • Pour qu'Ansible gère un hôte LXD à distance, les commandes suivantes doivent être exécutées au préalable :

Sur l'hôte LXD distant :

$ lxc config set core.https_address [::]:8443
$ lxc config set core.trust_password remplacez-cela-par-un-mot-de-passe-sécurisé

Sur l'hôte Ansible :

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

(remplacez lxd4.example.com par le nom d'hôte de votre hôte LXD, 'lxd4' peut être nommé comme vous le souhaitez, vous devrez vous y référer dans le fichier d'inventaire)

  • Testé sur un hôte LXD et un hôte Ansible, tous deux utilisant Ubuntu 16.04 LTS (peut fonctionner avec d'autres distributions)

Variables de rôle

Variables de profils LXD :

  • url: unix:/var/snap/lxd/common/lxd/unix.socket (par défaut)
  • state: présent (par défaut), absent

Variables de conteneurs LXD :

  • url: unix:/var/snap/lxd/common/lxd/unix.socket (par défaut)
  • state: démarré (par défaut), arrêté, redémarré, absent, gelé
  • type: image (par défaut)
  • mode: pull (par défaut)
  • server: https://cloud-images.ubuntu.com/releases (par défaut)
  • protocol: simplestreams (par défaut)
  • alias: "16.04" (par défaut)
  • architecture: x86_64 (par défaut)
  • wait_for_ipv4_addresses: true (par défaut)
  • timeout: 600 (par défaut)

Ces variables sont documentées ici :

Variables supplémentaires :

Valeurs par défaut :

# Profils LXD
lxd_profiles:
  - name: default
    description: "Profil LXD par défaut"
    status: présent

# Conteneurs LXD
LXCs:
  - name: monconteneur
    mode: pull
    server: https://cloud-images.ubuntu.com/releases
    alias: "16.04"
    protocol: simplestreams
    architecture: x86_64
    profile: default
    status: démarré

Dépendances

Aucune

Exemple

L'exemple suivant va configurer un profil LXD par défaut avec l'option cloud-init pour installer des paquets python et configurer l'utilisateur ansible, puis installer 2 conteneurs sur le serveur LXD.

  - hosts: all
    roles:
      - ansible-lxd
    vars:
      lxd_profiles:
        - name: default
          description: "Profil LXD par défaut"
          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: présent

      LXCs:
        - name: MonConteneur01
          mode: pull
          server: https://cloud-images.ubuntu.com/releases
          alias: "16.04"
          protocol: simplestreams
          architecture: x86_64
          disk_space: 50Go          # Limite de disque du conteneur
          memory: 2Go               # Limite de mémoire du conteneur
          storage_pool: default
          network: lxdbr0
          ipv4address: 10.0.0.2     # adresse IPv4 statique selon le sous-réseau lxdbr0
          profile: default
          status: démarré

        - name: MonConteneur02
          mode: pull
          server: https://cloud-images.ubuntu.com/releases
          alias: "16.04"
          protocol: simplestreams
          architecture: x86_64
          disk_space: 50Go          # Limite de disque du conteneur
          memory: 2Go               # Limite de mémoire du conteneur
          nesting: "true"           # Sécurité.nesting du conteneur activée
          storage_pool: default
          network: lxdbr0
          ipv4address: 10.0.0.3     # adresse IPv4 statique selon le sous-réseau lxdbr0
          profile: default
          status: démarré

Licence

Sous licence GPLv3. Voir le fichier LICENCE pour plus de détails.

Informations sur l'auteur

Hispanico

À propos du projet

Manage LXD Profile and LXD Containers

Installer
ansible-galaxy install hispanico.lxd
Licence
gpl-3.0
Téléchargements
357
Propriétaire
@openwisp Contributor and @ninuxorg Member