hispanico.lxd
ansible-lxd
Ta rola zarządza profilami LXD oraz kontenerami LXD na zdalnym serwerze LXD. https://linuxcontainers.org/lxd/
Wymagania
LXD w wersji 2.0 lub nowszej musi być zainstalowane na hoście LXD oraz na serwerze Ansible (na Ubuntu 16.04 powinno być już zainstalowane domyślnie).
LXD powinno być już skonfigurowane na zdalnym hoście za pomocą
sudo lxd init
.Aby Ansible mógł zdalnie zarządzać hostem LXD, muszą być wcześniej wykonane następujące polecenia:
Na zdalnym hoście LXD:
$ lxc config set core.https_address [::]:8443
$ lxc config set core.trust_password zamień-to-na-bezpieczne-hasło
Na hoście Ansible:
$ lxc config set core.https_address [::]:8443
$ lxc remote add lxd4 lxd4.example.com
(zamień lxd4.example.com na nazwę hosta swojego hosta LXD, 'lxd4' może mieć dowolną nazwę, będziesz musiał odwołać się do niej w pliku inwentory).
- Testowano na hoście LXD i hoście Ansible, oba działające na Ubuntu 16.04 LTS (może działać z innymi dystrybucjami).
Zmienne roli
Zmienne profilu LXD:
url:
unix:/var/snap/lxd/common/lxd/unix.socket (domyślne)state:
obecny (domyślny), nieobecny
Zmienne kontenerów LXD:
url:
unix:/var/snap/lxd/common/lxd/unix.socket (domyślne)state:
uruchomiony (domyślny), zatrzymany, ponownie uruchomiony, nieobecny, zamrożonytype:
obraz (domyślny)mode:
pull (domyślny)server:
https://cloud-images.ubuntu.com/releases (domyślny)protocol:
simplestreams (domyślny)alias:
"16.04" (domyślny)architecture:
x86_64 (domyślny)wait_for_ipv4_addresses:
true (domyślny)timeout:
600 (domyślny)
Te zmienne są dokumentowane tutaj:
- http://docs.ansible.com/ansible/latest/lxd_profile_module.html
- http://docs.ansible.com/ansible/latest/lxd_container_module.html
Dodatkowe zmienne:
cloud_init:
konfiguracja cloud-init (http://cloudinit.readthedocs.io/en/latest/index.html)
Domyślne wartości:
# Profile LXD
lxd_profiles:
- name: default
description: "Domyślny profil LXD"
status: present
# Kontenery LXD
LXCs:
- name: mycontainer
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
profile: default
status: started
Zależności
Brak
Przykład
Poniższy przykład skonfiguruje domyślny profil LXD z opcją cloud-init do instalacji pakietów python i skonfiguruje użytkownika ansible, a następnie zainstaluje 2 kontenery na serwerze LXD.
- hosts: all
roles:
- ansible-lxd
vars:
lxd_profiles:
- name: default
description: "Domyślny profil LXD"
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: present
LXCs:
- name: MyContainer01
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
disk_space: 50GB # Limit dysku kontenera
memory: 2GB # Limit pamięci kontenera
storage_pool: default
network: lxdbr0
ipv4address: 10.0.0.2 # statyczny adres IPv4 zgodny z podsiecią lxdbr0
profile: default
status: started
- name: MyContainer02
mode: pull
server: https://cloud-images.ubuntu.com/releases
alias: "16.04"
protocol: simplestreams
architecture: x86_64
disk_space: 50GB # Limit dysku kontenera
memory: 2GB # Limit pamięci kontenera
nesting: "true" # Włączone bezpieczeństwo.nest
storage_pool: default
network: lxdbr0
ipv4address: 10.0.0.3 # statyczny adres IPv4 zgodny z podsiecią lxdbr0
profile: default
status: started
Licencja
Licencjonowane na mocy Licencji GPLv3. Zobacz plik LICENSE, aby uzyskać więcej informacji.
Informacje o autorze
Hispanico
ansible-galaxy install hispanico.lxd