debops.lxd default variables

Installation and packages

lxd__upstream_enabled

Enable or disable installation of LXD from upstream git repository. LXD currently is not packaged in Debian, therefore installation from source will be performed on Debian hosts. On Ubuntu hosts the role will install the distribution APT packages.

lxd__upstream_enabled: True
lxd__upstream_type

Specify the upstream installation type to use. Currently only apt (on Ubuntu) and git (elsewhere) are a valid option.

lxd__upstream_type: '{{ "apt"
                        if (ansible_distribution == "Ubuntu")
                        else "git" }}'
lxd__upstream_gpg_key

The GPG key used to sign LXD release tags in the repository, required for signature verification.

lxd__upstream_gpg_key:
  - '602F 5676 63E5 93BC BD14  F338 C638 974D 6479 2D67'
  - '5DE3 E050 9C47 EA3C F04A  42D3 4AEE 18F8 3AFD EB23'
lxd__upstream_git_repository

The URL of the git repository with LXD source code.

lxd__upstream_git_repository: 'https://github.com/lxc/lxd'
lxd__upstream_git_release

The git release tag to install. At the moment the LTS release of LXD does not correctly comile on Debian, so more recent release is used instead. This will change on the next working LTS release.

lxd__upstream_git_release: 'stable-4.0'
lxd__golang_gosrc

Directory with compiled source code of additional libraries required by LXD. They will be installed to the /usr/local/lib/ directory by the role.

lxd__golang_gosrc: '{{ ansible_local.golang.gosrc|d("") }}'
lxd__binary

Absolute path to the lxd binary installed by the debops.golang Ansible role. The path is used in various systemd unit files.

lxd__binary: '{{ ansible_local.golang.binaries["lxd"]
                 if (ansible_local.golang.binaries.lxd|d())
                 else "/usr/bin/lxd" }}'
lxd__base_packages

List of APT packages required by the LXD service.

lxd__base_packages: [ 'dnsmasq-base', 'lxcfs', 'squashfs-tools' ]
lxd__packages

List of additional APT packages to install with LXD.

lxd__packages: []

POSIX environment

lxd__group

The POSIX system group which grants full access to the LXD service.

lxd__group: 'lxd'
lxd__admin_accounts

List of POSIX accounts which will be granted full access to the LXD service by adding them to the LXD system group.

lxd__admin_accounts: '{{ ansible_local.core.admin_users|d([]) }}'

LXD configuration preseeding

These variables define the initial "preseed" YAML configuration which will be applied to the LXD service on first installation or on request. See lxd__preseed for more details.

lxd__default_preseed

List of the default preseed configuration entries defined by the role.

lxd__default_preseed:

  - name: 'server-default'
    seed:
      config: {}

  - name: 'network-default'
    seed:
      networks:
        - name: 'lxdbr0'
          config:
            ipv4.address: 'auto'
            ipv6.address: 'auto'
          description: ''
          managed: True
          type: ''

  - name: 'storage-default'
    seed:
      storage_pools:
        - name: 'default'
          config: {}
          description: ''
          driver: 'dir'

  - name: 'profile-default'
    seed:
      profiles:
        - name: 'default'
          config: {}
          description: ''
          devices:
            eth0:
              name: 'eth0'
              nictype: 'bridged'
              parent: 'lxdbr0'
              type: 'nic'
            root:
              path: '/'
              pool: 'default'
              type: 'disk'

  - name: 'cluster-default'
    seed:
      cluster: null
lxd__preseed

List of the preseed configuration entries defined on all hosts in the Ansible inventory.

lxd__preseed: []
lxd__group_preseed

List of the preseed configuration entries defined on hosts in a specific Ansible inventory group.

lxd__group_preseed: []
lxd__host_preseed

List of the preseed configuration entries defined on specific hosts in the Ansible inventory.

lxd__host_preseed: []
lxd__combined_preseed

Variable which combines all of the preseed confituration lists and is used in role tasks and templates.

lxd__combined_preseed: '{{ lxd__default_preseed
                           + lxd__preseed
                           + lxd__group_preseed
                           + lxd__host_preseed }}'
lxd__init_preseed

Variable which controls when the preseed configuration should be applied to the LXD service. It can be set via the --extra-vars Ansible argument to re-apply the preseed configuration on existing installations.

lxd__init_preseed: '{{ False
                       if (ansible_local|d() and ansible_local.lxd|d() and
                           (ansible_local.lxd.installed|d())|bool)
                       else True }}'
lxd__preseed_data

Variable which holds the YAML configuration data passed to the lxd init --preseed command via stdin.

lxd__preseed_data: '{{ lookup("template", "lookup/lxd__preseed_data.j2") }}'

Configuration for other Ansible roles

lxd__golang__dependent_packages

Configuration for the debops.golang Ansible role.

lxd__golang__dependent_packages:

  - name: 'lxd'
    state: '{{ "present" if lxd__upstream_enabled|bool else "absent" }}'
    upstream_type: '{{ lxd__upstream_type }}'
    apt_packages: [ 'lxd', 'lxd-client' ]
    apt_dev_packages: [ 'autoconf', 'automake', 'tcl', 'libacl1-dev', 'libcap-dev',
                        'liblxc1', 'lxc-dev', 'libtool', 'libuv1-dev', 'make',
                        'pkg-config', 'libapparmor-dev', 'libseccomp-dev',
                        'libcap-dev', 'libudev-dev', 'libsqlite3-dev',
                        'liblz4-dev' ]
    gpg: '{{ lxd__upstream_gpg_key }}'
    git:
      - repo: '{{ lxd__upstream_git_repository }}'
        version: '{{ lxd__upstream_git_release }}'
        depth: 50
        build_script: |
          export GOPATH="${HOME}/go"
          make deps
          export CGO_CFLAGS="-I${HOME}/go/deps/sqlite/ -I${HOME}/go/deps/libco/ -I${HOME}/go/deps/raft/include/ -I${HOME}/go/deps/dqlite/include/"
          export CGO_LDFLAGS="-L${HOME}/go/deps/sqlite/.libs/ -L${HOME}/go/deps/libco/ -L${HOME}/go/deps/raft/.libs -L${HOME}/go/deps/dqlite/.libs/"
          export LD_LIBRARY_PATH="${HOME}/go/deps/sqlite/.libs/:${HOME}/go/deps/libco/:${HOME}/go/deps/raft/.libs/:${HOME}/go/deps/dqlite/.libs/"
          export CGO_LDFLAGS_ALLOW="(-Wl,-wrap,pthread_create)|(-Wl,-z,now)"
          make
    git_binaries:

      - src: '{{ lxd__upstream_git_repository.split("://")[1] + "/../../../../bin/lxd" }}'
        dest: 'lxd'

      - src: '{{ lxd__upstream_git_repository.split("://")[1] + "/../../../../bin/lxd-agent" }}'
        dest: 'lxd-agent'

      - src: '{{ lxd__upstream_git_repository.split("://")[1] + "/../../../../bin/lxd-benchmark" }}'
        dest: 'lxd-benchmark'

      - src: '{{ lxd__upstream_git_repository.split("://")[1] + "/../../../../bin/lxd-p2c" }}'
        dest: 'lxd-p2c'

      - src: '{{ lxd__upstream_git_repository.split("://")[1] + "/../../../../bin/lxc" }}'
        dest: 'lxc'

      - src: '{{ lxd__upstream_git_repository.split("://")[1] + "/../../../../bin/lxc-to-lxd" }}'
        dest: 'lxc-to-lxd'

      - src: '{{ lxd__upstream_git_repository.split("://")[1] + "/../../../../bin/fuidshift" }}'
        dest: 'fuidshift'
lxd__logrotate__dependent_config

Configuration for the debops.logrotate Ansible role.

lxd__logrotate__dependent_config:

  - filename: 'lxd'
    divert: '{{ False if lxd__upstream_enabled|bool else True }}'
    log: '/var/log/lxd/lxd.log'
    options: |
      copytruncate
      daily
      rotate 7
      delaycompress
      compress
      notifempty
      missingok
    state: 'present'
lxd__sysctl__dependent_parameters

Configuration for the debops.sysctl Ansible role.

lxd__sysctl__dependent_parameters:

  - name: 'lxd-inotify'
    divert: '{{ False if lxd__upstream_enabled|bool else True }}'
    weight: '10'
    options:

      - name: 'fs.inotify.max_user_instances'
        comment: |
          Increase the user inotify instance limit to allow for about
          100 containers to run before the limit is hit again
        value: 1024