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

Build Status

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 oder 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, eingefroren
  • type: 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 soll
  • enable_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

Über das Projekt

Manage LXD Containers

Installieren
ansible-galaxy install ahnooie.lxd-container
Lizenz
mit
Downloads
206
Besitzer