最近,我被允许参加Nutanix Hackathon 4.0。每年的Nutanix每年都有至少一周的时间,鼓励工程师组建团队,并在我们可能喜欢的技术周围做出任何酷炫的想法。在许多情况下,这些会话会导致新产品或功能增强功能。今年,他们添加了面向的系统工程师,以使客户的声音更接近这些项目。
我的团队正在研究某些网络安全功能,作为该工作的一部分,我们希望利用AHV中内置的API和自动化功能来创建,部署和配置虚拟安全设备。
如您可能已经知道的那样,Nutanix拥有一套用于管理我们软件的Restfull API。您可能不知道的是,当使用我们的本机虚拟化时,我们还提供了一套全套API来管理存储,网络和VM配置之类的虚拟配置。其他人则详细介绍了这些API的基础知识,可以通过Prism UI或On找到文档my.nutanix.com
截至我们的4.7版本,我们添加了通过Prism GUI以及通过API和Cloud-Init自定义Linux和Windows VM的功能。在本文中,我将解释使用云机构自定义Linux VM的使用。
什么是云端?
云端是一组脚本和实用程序,可在启动时为在云实例上执行操作提供强大的技术。最初是为Ubuntu Linux在亚马逊EC2运行的Ubuntu Linux设计的,现在已广泛使用,并得到许多流行的Linux发行版以及主要的公共和私人云提供商的支持。
为了使云机构工作,您的Linux发行版必须安装Cloud-Init软件包。对于此示例和本博客文章,我使用了CentOS 7。
配置文件
该配置由元数据和用户数据组成。这两个部分都是YAML标记和原始文本或文本编码二进制文件的组合。元数据部分包含主机特定信息,例如实例ID,主机名和接口配置。UserData是所有其他配置。这一系列帖子将使用固定的ISO9660 CD-ROM驱动器涵盖Config Drive V2数据源,该驱动器通过Nutanix AHV中的自动化实现。
配置文件可以由许多不同的部分或模块制成。有用于软件包管理的模块(APT,YUM),SSH密钥交换,自动化工具(Puppet,Chef)以及捕获所有允许创建任意文件的所有模块。有关完整的模块文档,请参见文档http://cloudinit.readthedocs.io/en/latest/topics/modules.html。
在我的示例中,我们将完成两个基本任务:
- 设置主机和域名
- 通过创建所需的配置文件来配置网络
- 提出新配置的网络接口
#cloud-config将USERDATA部分界定,然后是模块命令。
#Cloud-Config
主机名:cloud_init_test fqdn:cloud_init_test.nutanix.com write_files: - 路径:/etc/sysconfig/sysconfig/network-scripts/ifcfg-eth0内容:|device = eth0 bootproto =“ none” netMask =“ 255.255.254.0” ipaddr =“ 10.0.0.10” gateway =“ 10.0.0.0.1” onboot =“ yes” yes'runcmd: - [ifdown,eth,eth0]
- [ifup,eth0]
通过Prism UI的云端定位
在第1部分中,我将展示如何使用Prism UI使用云机构。此方法最适合主要是需要基本自定义的静态配置。我将在第2部分中介绍NUTANIX REST API的使用。作为自动克隆操作的一部分,API更适合于编程构建云INIT USERDATA配置。
为了使事情变得简单,我从VM上的CentOS 7的最小安装开始。该图像已安装了云内置软件包。最小安装完成后,通过简单的“ YUM安装云机构”来完成。我将使用它作为“模板”,然后使用云机构自定义任何克隆。
首先克隆称为“ CloudInit”的模板VM
在“克隆VM”对话框中,向下滚动选项并检查“自定义脚本”。它将揭示用于自定义VM的其他选项。
在“自定义脚本”部分中,我们可以看到多个选项:
- ADSF路径 - 直接指向包含元数据的Nutanix文件系统上的文件
- 上传文件 - 允许从Prism用户的桌面上传元数据文件
- 键入或粘贴脚本 - 直接键入所需的元数据。
- 要复制的文件 - 添加一组文件以从Nutanix文件系统复制到VM中。
几个控制台命令验证是否设置了主机名并创建了文件。
这完成了第一部分使用Cloud-Init来自定义Nutanix AHV中的VM。有许多示例和许多文档可用,可以涵盖可以完成的各种配置和自定义。在下一篇文章中,我将使用REST API和Python脚本进行类似的练习。
其他资源
Nutanix Web控制台指南:https://portal.nutanix.com/#/page/docs/details?targetId=web_console_guide-guide-prism_v4_7:wc_linux_vm_cust_vm_customize_with_with_with_cloudinit_wc_wc_html
云初始文档:http://cloudinit.readthedocs.io/
Ubuntu文档:https://help.ubuntu.com/community/cloudinit
免责声明:此博客可能包含指向不属于Nutanix.com一部分的外部网站的链接。Nutanix不控制这些站点,并对任何外部站点的内容或准确性不承担所有责任。我们决定链接到外部站点的决定不应被视为对该网站上任何内容的认可。