hispanico.lxd

ansible-lxd

构建状态 Galaxy

此角色用于管理远程 LXD 服务器上的 LXD 配置文件和 LXD 容器。 访问链接:https://linuxcontainers.org/lxd/

要求

  • LXD 2.0 或更高版本必须安装在 LXD 主机和 ansible 服务器上(在 Ubuntu 16.04 上应已默认安装)

  • LXD 应已在远程主机上通过 sudo lxd init 设置

  • 为了让 Ansible 能够远程管理 LXD 主机,必须提前运行以下命令:

在远程 LXD 主机上:

$ lxc config set core.https_address [::]:8443
$ lxc config set core.trust_password 将此替换为安全密码

在 Ansible 主机上:

$ lxc config set core.https_address [::]:8443
$ lxc remote add lxd4 lxd4.example.com

(将 lxd4.example.com 替换为你的 LXD 主机的主机名,'lxd4' 可以命名为你所需的任何名字,你需要在清单文件中引用它)

  • 在 LXD 主机和 Ansible 主机上都经过测试,均使用 Ubuntu 16.04 LTS(可能适用于其他发行版)

角色变量

LXD 配置文件变量:

  • url: unix:/var/snap/lxd/common/lxd/unix.socket(默认)
  • state: present(默认),absent

LXD 容器变量:

  • url: unix:/var/snap/lxd/common/lxd/unix.socket(默认)
  • state: started(默认),stopped,restarted,absent,frozen
  • type: image(默认)
  • mode: pull(默认)
  • server: https://cloud-images.ubuntu.com/releases(默认)
  • protocol: simplestreams(默认)
  • alias: "16.04"(默认)
  • architecture: x86_64(默认)
  • wait_for_ipv4_addresses: true(默认)
  • timeout: 600(默认)

这些变量在此处有详细文档:

额外变量:

默认值:

# LXD 配置文件
lxd_profiles:
  - name: default
    description: "默认 LXD 配置文件"
    status: present

# 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

依赖关系

示例

以下示例将配置一个默认的 LXD 配置文件,并包含 cloud-init 选项以安装 Python 包和配置 ansible 用户,然后在 LXD 服务器上安装 2 个容器。

  - hosts: all
    roles:
      - ansible-lxd
    vars:
      lxd_profiles:
        - name: default
          description: "默认 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          # 容器的磁盘限制
          memory: 2GB               # 容器的内存限制
          storage_pool: default
          network: lxdbr0
          ipv4address: 10.0.0.2     # 根据 lxdbr0 子网的静态 IPv4 地址
          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          # 容器的磁盘限制
          memory: 2GB               # 容器的内存限制
          nesting: "true"           # 容器的 security.nesting 启用
          storage_pool: default
          network: lxdbr0
          ipv4address: 10.0.0.3     # 根据 lxdbr0 子网的静态 IPv4 地址
          profile: default
          status: started

许可证

根据 GPLv3 许可证授权。有关详细信息,请参阅 LICENSE 文件。

作者信息

Hispanico

关于项目

Manage LXD Profile and LXD Containers

安装
ansible-galaxy install hispanico.lxd
许可证
gpl-3.0
下载
357
拥有者
@openwisp Contributor and @ninuxorg Member