云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

京东云_阿里云docker加速_怎么样

小七 141 0

Terraform vSphere Provider简介

注意:本文最初是在Terraform vSphere provider于2017年12月发布1.0 GA版本后不久发布的。为确保本文中的信息有用,已对其进行了更新,以反映提供商截至2018年1月晚些时候发布的版本1.3的状态,并包括对虚拟机资源中的磁盘管理的重要更新。以后对提供者的更新将在新文章中介绍。自从HashiCorp Terraform 0.10发布以来,HashiCorp一直在努力改进我们的VMware vSphere provider for Terraform的功能。Terraform使组织能够使用一致的方法来提供任何基础设施。VMware是许多组织的内部部署和私有云基础设施的关键组件。我们为使供应商现代化做出了重大努力,不仅增加了管理虚拟机的资源,还增加了管理数据中心级资源和库存的资源。12月初,随着vSphere 1.0版的发布,我们达到了vSphere提供商的一个重要里程碑,它使许多旨在支持vSphere基本网络、存储和库存管理功能的重大改进正式化。这包括对vsphere_虚拟机资源的完全重写,克服了许多长期存在的设计障碍,并添加了许多新功能。我们也很快发布了1.1版,修正了vsphere_virtual_machine资源的几个发布后错误,并通过vsphere_virtual_machine数据源公开了更多数据,以帮助从现有虚拟机或模板克隆虚拟机。我们在邮件列表发布公告中包含了许多发布细节,但是我们想用这个博客来展示这个提供商的强大功能,因为它现在对新用户和老用户都是一样的。无论您是刚刚发现Terraform vSphere provider,使用它已有一段时间了,还是一直在等待改进以满足特定的用例,我们希望您能发现这些改进有帮助!»运行完整的示例在本文中,我们将介绍一个在全新的数据存储、分布式虚拟交换机和端口组上创建虚拟机的示例,这些都是通过Terraform管理的。我们的示例是一个三节点集群,我们将为每个主机创建一个虚拟机。每个虚拟机都将使用一个工作的网络配置进行定制,一旦一切都完成,就应该在网络上可用。这个例子比较复杂,对于整个文章来说有点复杂,所以我们将引用vSphere provider存储库本身。接下来,在这里获得完整的配置。按照该目录中自述文件中的说明进行配置设置,并通过向添加相关选项来配置端点和凭据tf提供商,或将它们设置为环境变量。有关提供程序级配置值的参考,请参阅此处。一旦您准备好了,您可以通过运行terraform plan,然后运行terraform apply来检查配置(如果您使用terraform 0.11,则只运行后者)。一旦您批准了应用程序,Terraform将创建您的数据存储、分布式虚拟交换机、端口组,最后是您的三个虚拟机,每个虚拟机都在自己的独立主机上。您甚至应该能够连接到每台机器,基于您设置的IP地址。»打开示例现在我们已经看到了它的作用,让我们回顾一下配置的每个主要部分。我们先从数据源开始,然后再转到资源。»数据源这是我们从数据中提取的数据源_来源.tf文件。为了简洁起见,删除了注释:数据"vsphere_数据中心""示例_数据中心"{名称="${可变数据中心}"}data"vsphere_host""示例_hosts"{count="${length(var.esxi_主机)}"名称="${var.esxi_主机[计数.索引]}"数据中心_id="${data.vsphere_数据中心。示例_数据中心.id}"}数据"vsphere_resource_pool""示例_resource_pool"{名称="${可变资源池}"数据中心_id="${data.vsphere_数据中心。示例_数据中心.id}"}数据"vsphere_virtual_machine""示例_模板"{名称="${变量模板名称}"数据中心_id="${data.vsphere_数据中心。示例_数据中心.id}"}我们在这里对数据源的使用是基于这样一个概念:您可能已经有了一个数据中心、ESXi主机和一个集群或资源池,您希望在其中部署所有相应的资源。同样,您也可能有一个模板,您希望将其用作创建vm的基础。因此,我们不需要在Terraform中管理这些资源,而是使用vsphere_数据中心、vsphere_主机、vsphere_资源_池和vsphere_虚拟机数据源从vsphere提取必要的信息,用作资源的输入。要了解每个资源的更多信息,可以单击上面的链接从Terraform vSphere provider reference中阅读它们的文档。还有一些其他的数据源,甚至是用于数据存储、分布式虚拟交换机和网络的数据源(除了DVS网络之外,还允许您查找由NSX管理的标准端口组和不透明网络)。这允许您在确定您想要的Terraform配置的范围时有很大的灵活性。要查看完整列表,请查看资源文档页。还要注意vsphere_主机数据源中的计数。这允许我们将所有3个主机数据源的配置合并到同一个声明中,从而节省了一些重复。»资源现在让我们回顾一下我们的资源。我们将更详细地回顾这一点,以便我们能够解释每个资源的作用和能力,特别是在虚拟机资源的情况下。»NAS数据存储资源我们使用vsphere_nas_数据存储资源创建一个NFS数据存储,以将我们的虚拟机存储在:资源"vsphere_nas_datastore""示例_datastore"{名称="${var.datastore_名称}"主机系统标识=${data.vsphere_主机.example\u hosts.*.id}"]type="NFS"远程主机=${var.nas_主机}"]远程路径="${变量nas路径}"}上面的示例使用datastore_name中定义的名称创建NFS数据存储。它使用nfsv3连接到我们在nas_host变量中定义的主机,以及在nas_path中定义的共享路径。这两个变量分别对应于nfs1这样的NFS路径。vsphere.local:/export/nfsds1。我们还传递多计数vsphere_主机数据源的输出,在所有三台主机上安装此数据存储。存储完成后,我们可以转到网络资源。»分布式虚拟交换机资源接下来,我们使用vsphere_分布式虚拟交换机资源来创建分布式虚拟交换机(DVS)。这是虚拟网络和物理硬件之间的桥梁,连接到每个主机上的网络接口:资源"vsphere_分布式虚拟交换机""示例\u dvs"{名称="${变量开关名称}"数据中心_id="${data.vsphere_数据中心。示例_数据中心.id}"主持人{主机\系统\标识="${data.vsphere_主机.example\u hosts.0.id}"设备=${变量网络接口}"]}主持人{主机\系统\标识="${data.vsphere_主机.example\u hosts.1.id}"设备=${变量网络接口}"]}主持人{主机\系统\标识="${data.vsphere_主机.example\u hosts.2.id}"设备=${变量网络接口}"]}}下面的示例从我们的vsphere_数据中心数据源创建一个名为switch_name的DVS。这次我们分别添加每个主机,因为每个主机/NIC组合都需要在它自己的独立主机子资源中声明。请注意,我们在每个实例中使用一个公用NIC列表(由network U interfaces变量定义),因此在本例中,每个主机必须具有完全相同的NIC组合,以用于此DVS。我们还没有完成网络的设置,现在需要向这个DVS添加一个端口组。»DVS端口组资源要添加端口组并完成网络配置,我们使用vsphere_distributed_port_group资源。这种资源非常宝贵;虽然您可能不需要为每个应用程序、业务单元或客户添加数据存储和端口组,但将VLAN或端口组作为逻辑分离单元是非常常见的。让我们看看下面的例子:资源"vsphere_distributed_port_group""示例_port_group"{名称="${变量端口组名称}"分布式虚拟交换机_开关示例.id}"vlan_id="${var.port_组_vlan}"}在这里,我们正在创建一个端口组,其名称在port_group_name中定义。这也将成为我们的网络名称(如果您决定使用vsphere_网络数据源查找)。我们传入从vsphere_分布式虚拟交换机资源创建的DVS的UUID,最后分配一个VLAN ID(或者只创建一个未标记的网络,如果VLAN ID为0)。这里的配置又漂亮又短。除非您需要更高级的设置或覆盖,否则不需要其他任何东西。我们终于准备好创建虚拟机了。####虚拟机资源最后,这里是vsphere_虚拟机资源。资源"vsphere_virtual_machine""示例""虚拟机"{count="${length(var.esxi_主机)}"名称="${var.virtual_machine_name_前缀}${计数.索引}"资源池_id="${data.vsphere_资源_池。示例_资源_池.id}"主机\系统\标识="${data.vsphere_主机.example\u hosts.*.id[计数.索引]}"datastore_id="${vsphere\u nas"_datastore.example_数据存储.id}"CPU数量=2内存=1024客人编号="${data.vsphere_虚拟机。示例_template.guest_id模板}"网络接口{network_id="${vsphere_分布式端口_group.example_端口_group.id}"适配器类型="${data.vsphere_虚拟机。示例_template.network_接口