ahnooie.lxd-container

Rôle Ansible pour les Conteneurs LXD

Ce rôle gère des conteneurs LXD/LXC sur un hôte de conteneurs Linux à distance. https://www.ubuntu.com/containers/lxd

État de la construction

Exigences

  • LXD 2.0 ou supérieur doit être installé sur l'hôte LXD et le serveur Ansible (il devrait 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 ou un rôle Ansible tel que juju4/lxd

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

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 le référencer dans le fichier d'inventaire)

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

Variables de Rôle

Ces variables sont documentées ici : http://docs.ansible.com/ansible/latest/lxd_container_module.html

  • state: démarré (par défaut), arrêté, redémarré, absent, gelé
  • type: image (par défaut)
  • mode: pull (par défaut)
  • server: https://images.linuxcontainers.org (par défaut)
  • protocol: lxd (par défaut)
  • alias: ubuntu/xenial/amd64 (par défaut)
  • wait_for_ipv4_addresses: vrai (par défaut)
  • timeout: 600 (par défaut)

Variables supplémentaires :

  • public_key: "{{ lookup('file','~/.ssh/id_rsa.pub') }}" (par défaut) - chemin vers la clé ssh publique à installer dans le conteneur
  • enable_ssh: vrai (par défaut) - installe et active le serveur openssh dans le conteneur.
  • lxd_host: votre hôte de conteneurs lxd

Dépendances

Aucune

Installation

$ ansible-galaxy install ahnooie.lxd-container

Exemple

L'exemple suivant installera 6 conteneurs avec différentes distributions Linux sur l'hôte LXD lxd4.example.com ; et sur chaque hôte installera Python, ajoutera une clé ssh publique pour l'utilisateur root, installera et démarrera le service sshd.

Exemple de Fichier d'Inventaire

# Hôte LXD Distant
[lxd]
lxd4.example.com ansible_user=root

# Conteneurs sur les Hôtes LXD
[linux-containers]
ubuntu01.example.com ansible_host=lxd4:ubuntu01 alias=ubuntu/xenial/amd64
centos01.example.com ansible_host=lxd4:centos01 alias=centos/7/amd64
centos02.example.com ansible_host=lxd4:centos02 alias=centos/6/amd64
debian01.example.com ansible_host=lxd4:debian01 alias=debian/stretch/amd64
fedora01.example.com ansible_host=lxd4:fedora01 alias=fedora/27/amd64

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

Exemple de Playbook containers.yml

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

Exemple de Commande Playbook

$ ansible-playbook -i inventory containers.yml

Licence

MIT

Informations sur l'Auteur

Créé par Benjamin Bryan

À propos du projet

Manage LXD Containers

Installer
ansible-galaxy install ahnooie.lxd-container
Licence
mit
Téléchargements
206
Propriétaire