hispanico.lxd
ansible-lxd
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 :
- http://docs.ansible.com/ansible/latest/lxd_profile_module.html
- http://docs.ansible.com/ansible/latest/lxd_container_module.html
Variables supplémentaires :
cloud_init:
configuration cloud-init (http://cloudinit.readthedocs.io/en/latest/index.html)
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
Manage LXD Profile and LXD Containers
ansible-galaxy install hispanico.lxd