hispanico.lxd
ansible-lxd
Dieses Modul verwaltet LXD-Profile und LXD-Container auf einem entfernten LXD-Server. https://linuxcontainers.org/lxd/
Anforderungen
LXD 2.0 oder höher muss auf dem LXD-Host und dem Ansible-Server installiert sein (es sollte standardmäßig auf Ubuntu 16.04 installiert sein).
LXD sollte bereits auf dem entfernten Host mit
sudo lxd init
eingerichtet sein.Damit Ansible einen LXD-Host aus der Ferne verwalten kann, müssen folgende Befehle im Voraus ausgeführt werden:
Auf dem entfernten LXD-Host:
$ lxc config set core.https_address [::]:8443
$ lxc config set core.trust_password ersetze-dies-mit-einem-sicheren-passwort
Auf dem Ansible-Host:
$ lxc config set core.https_address [::]:8443
$ lxc remote add lxd4 lxd4.example.com
(ersetze lxd4.example.com mit dem Hostnamen deines LXD-Hosts, 'lxd4' kann beliebig benannt werden, du musst darauf in der Inventardatei verweisen)
- Getestet auf einem LXD-Host und Ansible-Host mit Ubuntu 16.04 LTS (kann auch mit anderen Distributionen funktionieren)
Variablen des Moduls
LXD-Profilvariablen:
url:
unix:/var/snap/lxd/common/lxd/unix.socket (Standard)state:
vorhanden (Standard), abwesend
LXD-Containervariablen:
url:
unix:/var/snap/lxd/common/lxd/unix.socket (Standard)state:
gestartet (Standard), gestoppt, neu gestartet, abwesend, eingefrorentype:
image (Standard)mode:
pull (Standard)server:
https://cloud-images.ubuntu.com/releases (Standard)protocol:
simplestreams (Standard)alias:
"16.04" (Standard)architecture:
x86_64 (Standard)wait_for_ipv4_addresses:
true (Standard)timeout:
600 (Standard)
Diese Variablen sind hier dokumentiert:
- http://docs.ansible.com/ansible/latest/lxd_profile_module.html
- http://docs.ansible.com/ansible/latest/lxd_container_module.html
Zusätzliche Variablen:
cloud_init:
cloud-init Konfiguration (http://cloudinit.readthedocs.io/en/latest/index.html)
Standardwerte:
# LXD-Profile
lxd_profiles:
- name: default
description: "Standard LXD-Profil"
status: vorhanden
# LXD-Container
LXCs:
- name: mycontainer
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
profile: default
status: gestartet
Abhängigkeiten
Keine
Beispiel
Das folgende Beispiel konfiguriert ein Standard-LXD-Profil mit der cloud-init-Option, um Python-Pakete zu installieren und den Ansible-Benutzer zu konfigurieren, und installiert dann 2 Container auf dem LXD-Server.
- hosts: all
roles:
- ansible-lxd
vars:
lxd_profiles:
- name: default
description: "Standard LXD-Profil"
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: vorhanden
LXCs:
- name: MyContainer01
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
disk_space: 50GB # Festplattenspeicher des Containers
memory: 2GB # Arbeitsspeicher des Containers
storage_pool: default
network: lxdbr0
ipv4address: 10.0.0.2 # Statische IPv4-Adresse gemäß lxdbr0-Subnetz
profile: default
status: gestartet
- name: MyContainer02
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
disk_space: 50GB # Festplattenspeicher des Containers
memory: 2GB # Arbeitsspeicher des Containers
nesting: "true" # Container-Sicherheit.nesting aktiviert
storage_pool: default
network: lxdbr0
ipv4address: 10.0.0.3 # Statische IPv4-Adresse gemäß lxdbr0-Subnetz
profile: default
status: gestartet
Lizenz
Lizenziert unter der GPLv3-Lizenz. Siehe die LICENSE-Datei für Einzelheiten.
Autoreninformation
Hispanico
ansible-galaxy install hispanico.lxd