ahnooie.lxd-container
LXD Container Ansible Rolle
Diese Rolle verwaltet LXD/LXC-Container auf einem entfernten Linux-Container-Host. https://www.ubuntu.com/containers/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 initoder mit einer Ansible-Rolle wie juju4/lxd eingerichtet sein.Damit Ansible einen LXD-Host aus der Ferne verwalten kann, müssen die folgenden 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-das-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 es in der Inventardatei erwähnen)
- Getestet auf einem LXD-Host und Ansible-Host, beide mit Ubuntu 16.04 LTS (könnte auch mit anderen Distributionen funktionieren)
Rollenvariablen
Diese Variablen sind hier dokumentiert: http://docs.ansible.com/ansible/latest/lxd_container_module.html
state:gestartet (Standard), gestoppt, neu gestartet, nicht vorhanden, eingefrorentype:image (Standard)mode:pull (Standard)server:https://images.linuxcontainers.org (Standard)protocol:lxd (Standard)alias:ubuntu/xenial/amd64 (Standard)wait_for_ipv4_addresses:true (Standard)timeout:600 (Standard)
Zusätzliche Variablen:
public_key:"{{ lookup('file','~/.ssh/id_rsa.pub') }}" (Standard) - Pfad zum öffentlichen SSH-Schlüssel, der im Container installiert werden sollenable_ssh:true (Standard) - installiert und aktiviert den openssh-Server im Container.lxd_host:dein LXD-Container-Host
Abhängigkeiten
Keine
Installation
$ ansible-galaxy install ahnooie.lxd-container
Beispiel
Das folgende Beispiel installiert 6 Container mit verschiedenen Linux-Distributionen auf dem LXD-Host lxd4.example.com; und installiert auf jedem Host Python, fügt einen öffentlichen SSH-Schlüssel für den Root-Benutzer hinzu und installiert und startet den sshd-Dienst.
Beispiel für die Inventardatei
# Entferner LXD-Host
[lxd]
lxd4.example.com ansible_user=root
# Container auf LXD-Hosts
[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
Beispiel für die Playbook-Datei containers.yml
---
- hosts: linux-containers
gather_facts: false
vars:
public_key: "{{ lookup('file','public_keys/id_rsa.pub') }}"
roles:
- ahnooie.lxd-container
Beispiel für die Playbook-Befehlszeile
$ ansible-playbook -i inventory containers.yml
Lizenz
MIT
Autoreninformation
Erstellt von Benjamin Bryan
ansible-galaxy install ahnooie.lxd-container