使用nutanix群集上的自定义ACLI脚本立即管理多个UVM

  • 2020年7月14日
  • 1回复
  • 1911年的观点

UserLevel 6
徽章 +5

在某些情况下,在系统管理员或管理Nutanix集群的工程师中,会说:

执行某些动作,例如使用某些匹配的critearia,例如,诸如公共启动名称或常用的终端名称,名称中的某些模式以及所有功率的所有功率- 在UVMS等

一种方法是一对一地对所有VM中的Prism执行该动作,这在我们说我们有20个VM等的情况下非常乏味,我们想执行相同的动作,例如将其关闭。

我们可以做什么 ?

在这种情况下,我们可以使用一些基本的外壳脚本ACLI(Acrocolis命令行工具)。

所以ACLI是用于管理Nutanix群集上的主机,网络快照,UVM等的CMDLINE工具。这是一个文档,说明了如何使用ACLIhttps://portal.nutanix.com/page/documents/details?targetid=command-ref-aos-v5_17%3aman-acli-c.html

因此,以下是此类场景的一些示例,我们想使用Shell脚本和ACLI命令在多个VM上执行一些vms的操作。在某些情况下,这些非常简单,非常方便,可以为您节省很多时间。

方案1)关闭所有名称以“ nutanix-”开头的UVM。

要实现上述内容,您可以登录群集中的一个CVM,并执行以下命令:

cvm $ for`acli vm.list power_state = on | in |grep -i ^'nutanix-'|awk'{print $ 1}'`;do acli vm.force_off $ vm_name;完毕

因此,此脚本以参数中指定的名称为“ nutanix-”开始关闭所有VM

Grep -i

格雷普过滤器搜索命令的输出'acli vm.list power_state = on’上面列出了用户VM上的所有功率,以特定的名称模式开头nutanix-’。也是^正则表达式模式指定行的开始。可以在GREP中使用以匹配以给定的字符串或图案开头的行。

现在为了循环运行/迭代次数的次数,我们观察到一个VM,该VM供电并以名称开头nutanix-’。还有循环变量’vm_name’存储符合上述标准的那些UVM的名称。

do acli vm.force_off $ vm_name

以上定义了我们要在这些VM上执行的操作。在这种情况下,我们将关闭所有这些VM。ACLI命令'acli vm.force_off $ vm_name’驱动那些名称以“nutanix-’。使用循环变量VM_NAME访问VM名称$ vm_name

要了解有关ACLI VM操作的更多信息ACLI VM OPS

它的简单而没有火箭科学。因此,它们全部分为3个零件,运行A用于循环,然后使用GREP过滤一些结果,然后在for Loop的DO部分中执行一些操作。

方案2)以“ nutanix-”开头的所有具有名称的UVM的电源:

现在,我们要做的就是执行其他操作并使用正确的ACLI命令。

cvm $ for`acli vm.list power_state = OFF |grep -i ^'nutanix-'|awk'{print $ 1}'`;do acli vm.on $ vm_name;完毕

因此,我们只列出了所有电源的VM,然后搜索所有以名称开头的VM‘nutanix-’并为他们提供动力。

方案3)删除所有VM及其名称以“克隆”结尾的关联快照。

cvm $ for`acli vm.list power_state = OFF |grep -i $'clone'|awk'{print $ 1}'`;do acli vm.delete $ vm_name delete_snapshots =“ true”;完毕

我们在这里使用了$通配符使用GREP搜索输出中的名称,该名称以名称为“”克隆'。

在上述命令中“acli vm.delete $ vm_name delete_snapshots =“ true“删除了所有名称以'结尾的VM克隆’及其所有相关的快照。

注意:一个谨慎的话,请明智而谨慎地使用上述脚本。

因此,以上是一些基本示例,说明了如何执行此类操作,例如批量上的电动,电源,删除,删除等,以符合某些条件,例如以通用名称开头,以特定名称等结尾。

现在,可以针对不同的用例调整上述情况。您所需要的只是一些有关外壳脚本的基本知识,特别是使用用于循环, 使用格雷普明智地过滤结果,并且已经完成。格雷普可以以多种方式使用过滤结果并搜索文件或输出中的模式。

我会坚持要读者经历一些基础知识用于循环在外壳脚本和使用格雷普过滤/搜索模式

本文也很好地解释了GREPhttps://www.geeksforgeeks.org/grep-command-in-unixlinux/

因此,继续学习一些新的东西可以帮助您并节省很多时间。我希望这篇文章可以节省您的宝贵时间,并更轻松地帮助您管理集群。


1回复

好的!我使用您的想法明确启用了所有VM的VGA_Console。我们发现,我们的Ansible VM供应过程正在导致VGA_Console设置为False for forse for new VM,这可以禁用从Prism启动VM控制台的能力。

对于`acli vm.list中的vm_name |awk'{print $ 1}'`;do acli vm.update $ vm_name vga_console = true;完毕

回复


Baidu