XenServer

使用 Terraform 自动化 XenServer®

XenServer Terraform Provider 使 IT 管理员能够自动化 XenServer 环境的配置和管理任务。这在大规模部署中特别有用,因为自动化可以确保一致性、减少手动错误并节省时间。使用 Terraform Provider,您可以:

  • 创建虚拟机 (VMs)
  • 管理快照(创建和删除)
  • 配置存储(添加或删除本地和 NFS 类型)
  • 设置和管理网络
  • 检索有关 XenServer 主机的信息

XenServer Terraform Provider 的主要优势:

  • 自动化:通过基础设施即代码 (IaC) 实践简化 XenServer 环境的部署和管理。
  • 效率:自动化虚拟机创建、快照管理以及存储或网络配置等任务,最大限度地减少手动干预。
  • 一致性:确保大型环境中的配置统一,最大限度地减少错误。
  • 可扩展性:通过简化环境(例如 QA 设置)的创建和重建,支持基础设施的快速增长。

先决条件

在使用 XenServer Terraform Provider 之前,请确保您具备以下条件:

  • Terraform 1.8 或更高版本

    从官方的 Terraform 安装指南 下载 Terraform。

    Windows 用户可以通过运行以下命令使用 Chocolatey 安装 Terraform:

     choco install terraform
     <!--NeedCopy-->
    
  • 具有管理访问权限的 XenServer 实例

  • XenServer API 凭据

    这些包括用户名、密码以及您的 XenServer 的 IP 地址。

开始使用

  1. 准备 Terraform 配置。

    首先,将 XenServer Terraform Provider 添加到您的 Terraform 配置文件 main.tf 中:

    terraform {
        required_providers {
            xenserver = {
            source = "xenserver/xenserver"
            }
        }
    }
    
        provider "xenserver" {
            host     = "https://<ip address of XenServer>"
            username = "root"
            password = <root password>
        }
    <!--NeedCopy-->
    
  2. 定义资源。

    例如,要创建虚拟机,请在配置文件中定义资源:

    data "xenserver_sr" "sr" {
        name_label = "Local storage"
    }
    
    resource "xenserver_vdi" "vdi1" {
        name_label   = "local-storage-vdi-1"
        sr_uuid      = data.xenserver_sr.sr.data_items[0].uuid
        virtual_size = 100 * 1024 * 1024 * 1024
    }
    
    data "xenserver_network" "network" {}
    
    resource "xenserver_vm" "windows_vm" {
        name_label       = "Windows VM"
        template_name    = "Windows 11"
        static_mem_max   = 4 * 1024 * 1024 * 1024
        vcpus            = 4
        cores_per_socket = 2
        cdrom            = "win11-x64_uefi.iso"
        boot_mode        = "uefi_security"
        boot_order       = "cdn"
    
        hard_drive = [
            {
                vdi_uuid = xenserver_vdi.vdi1.uuid,
                bootable = true,
                mode     = "RW"
            }
        ]
    
        network_interface = [
            {
            device       = "0"
            network_uuid = data.xenserver_network.network.data_items[0].uuid,
            }
        ]
    
        other_config = {
            "tf_created" = "true"
        }
    }
    <!--NeedCopy-->
    

    或者,要创建 NFS 存储库 (SR):

    resource "xenserver_sr" "nfs" {
        name_label   = "Test NFS SR"
        type         = "nfs"
        content_type = ""
        shared       = true
        device_config = {
            server     = "192.0.2.1"
            serverpath = "/server/path"
            nfsversion = "3"
        }
        sm_config = {
            shared = "true"
        }
    }
    <!--NeedCopy-->
    
  3. 初始化并应用配置。

    要安装 XenServer Terraform Provider,请运行:

    terraform init
    <!--NeedCopy-->
    

    然后,要配置定义的资源,请运行:

    terraform apply
    <!--NeedCopy-->
    

有关高级配置和更多资源,请参阅 XenServer Terraform Provider 文档。如果您遇到任何问题,请联系支持人员或提交 GitHub 问题工单。

新增功能

XenServer Terraform Provider 独立于 XenServer 版本进行更新,以引入新的自动化功能、修复程序并确保持续兼容性。

XenServer Terraform 提供程序 0.2.2

发布于 Mar 27, 2025

此版本包含以下改进:

  • 更新 Terraform 提供程序依赖项,以修复上游软件包中的安全公告。
  • 发布附带 Go SDK v25.3.0 的 Terraform 提供程序。

早期版本

0.2.1

发布于 Jan 20, 2025

此版本引入了以下新的自动化功能:

  • 从模板创建带有完整磁盘复制的虚拟机。

此版本包含以下改进:

  • 返回 UUID 而不是内部引用,以提高可用性。

此版本包含以下问题的修复程序:

  • 创建、修改或销毁池有时会失败并以错误退出 SSH 命令。

0.2.0

发布于 Nov 11, 2024

此版本引入了以下新的自动化功能:

  • 轻松地从池中添加和移除主机,提高可伸缩性并简化维护。
  • 更新默认 SR 和管理网络。
  • 创建和删除 SMB/CIFS 存储,在存储配置方面提供更大的灵活性。

此版本包含以下改进:

  • 创建虚拟机时取消磁盘数量限制,减少硬件依赖并优化存储。
  • 使虚拟机能够回滚到快照,使恢复和回滚更加直接。
  • 使凭据能够从环境变量中读取,简化配置管理。

0.1.2

发布于 Oct 31, 2024

此版本包含以下问题的修复:

  • 如果您正在使用 XenServer Terraform Provider 0.1.1 版,在应用 XenServer 8.4 更新后,您可能会遇到兼容性问题,这些更新于 25 September 2024 发布到抢先体验版,并于 2 October 2024 发布到普通版。0.1.2 版解决了这些兼容性问题。
使用 Terraform 自动化 XenServer®