用于Nutanix的Ansible模块

  • 2019年4月25日
  • 19日回复
  • 6882的浏览量

有人用Ansible自动化Nutanix任务吗?有人能分享一些例子吗?

19日回复

Userlevel 1
徽章 +2
你好,

我正在用Ansible设置棱镜。DNS, NTP,警报,代理,认证,诸如此类。我将尝试清理我所有的特定数据,并发布到nutanix git,或我自己的git门户。
徽章
@itguyadam-我正在尝试使用ansible列出特定集群上的虚拟机-目前,我列出所有的虚拟机,然后基于cluster_name过滤。

有没有更好的方法,我可以传递cluster_name作为过滤器,并只在特定的集群上获得虚拟机?

蒂雅
Userlevel 1
徽章 +2
@hfg_nutanix我上传了一个ansible角色到git。我仍在处理一些任务,并准备发布,但所有内容的框架都已经存在了。

https://github.com/AD-Code/Automation/tree/master/ansible/nutanix_cluster_baseline
Userlevel 1
徽章 +2
@OkBeacon您当前使用的命令是什么?
徽章
@itguyadam-谢谢回复!
我最终找到了怎么做(找不到任何关于过滤器的文档)

代码:
- import_tasks: get_session_cookie.yml

—name:获取VMS列表
uri:
Url: "{{api_url_v3}}/vms/list"
身体:
:虚拟机
sort_order:提升
抵消:0
长度:1000
sort_attribute:“
筛选器:"cluster_name=={{cluster_name}}"
方法:文章
validate_certs:不
body_format: json
status_code: 200
标题:
Cookie:“{{session_cookie}}”

注册:vms_result
Userlevel 1
徽章 +2
@OkBeacon我还发现一些API文档在这方面有些欠缺。我很可能会窃取你的任务,并把它用在我正在编写的其他剧本中。谢谢
徽章
我重用代码
https://github.com/mbach04/nutanix_vm_provisioner

目前工作在供应k8s集群上的nutanix -我将把它放在github上,一旦我满意它。
Userlevel 1
徽章 +2

我刚刚创建了一个ansible角色(https://galaxy.ansible.com/cybergavin/nutanix_vm_create),用于批量创建使用不同镜像、不同子网的虚拟机。它还安装并启用NGT。

徽章

@itguyadam

-谢谢回复!
我最终找到了怎么做(找不到任何关于过滤器的文档)

过滤器规范简直要了我的命!谢谢你的分享。一旦我知道了上下文和语法,它就完美地工作了。

徽章

伙计们,

有可能自动化虚拟机快照过程与Ansible ?

我想采取VM的快照以及恢复相同的之前/之后的维护活动。

徽章

我添加了一个Ansible角色,用于对虚拟机进行快照:https://github.com/Fredouye/nutanix_ansible

也有用于创建虚拟机、为已有虚拟机添加磁盘的角色。

你好,

有人能帮助低于要求的人吗?

如何使用ansible删除nutanix虚拟机?

使用ansible如何获取虚拟机快照成功或失败?

虚拟机被放置在不同的nutanix集群,而采取虚拟机快照,如何使条件,如果虚拟机不存在在一个集群,然后检查其他集群?

如何列出虚拟机快照与日期和可?

问候

拉吉

徽章

你可以很容易地使用Ansible来删除一个虚拟机,使用“delete /vms/{{uuid}}”API调用。

我的Ansible角色检查快照是否完成,如果有问题,任务将失败。

要列出快照,可以使用“GET /快照”API调用。

在获取快照时,您不需要指定集群,但我猜Prism必须管理所有主机。我刚接触Nutanix,如果我错了,请原谅我:)

你好,

谢谢你提供的信息。Could you help to provide complete ansible playbook for snapshot removal? I tried it something like below doesn’t seems working.

—name: DELETE虚拟机快照{{inventory_hostname}}
uri:
Url: "{{base_urlv2}}/{{vm_uuid}}"
方法:删除
用户:“{{用户名}}”
密码:“{{Password}}”
身体:
snapshot_specs:
—uuid:“{{vm_uuid}}”
Snapshot_name:“{{inventory_hostname}}_test”
body_format: json
标题:
内容类型:application / json
接受:application / json
force_basic_auth:是的
validate_certs:不
status_code: 201

是的,我们正在使用棱镜控制台来管理主机/虚拟机。我们将虚拟机放置在不同的集群中,如果有任何条件,如果虚拟机在一个集群中不存在,那么寻找其他集群,那就太好了。

问候

拉吉

徽章

我添加了一个角色,该角色删除给定虚拟机的所有快照:https://github.com/Fredouye/nutanix_ansible/tree/main/roles/vm_snapshots_remove

嗨Fredouye,

谢谢。我t’s working as expected.

有没有办法获得人类可读格式的快照创建时间?默认情况下,它显示为epoch格式。

是否有办法使条件,如果虚拟机不存在于一个棱镜,然后检查其他棱镜?挑战在于,我们将vm置于不同的集群中,通过不同的棱镜进行管理。

问候

拉吉

徽章

你好,拉吉

看起来Nutanix的API只返回以微秒为单位的日期:

" json ": {
“cluster_uuid”:“0005 cec4 - 5 - d52 efbf - 2 - bb0 - 00505698 - bc02”,
“complete_time_usecs”:1636384114684320,
“create_time_usecs”:1636384114376874

你可以使用strfime过滤器将其转换为人类可读的格式:https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#handling-dates-and-times

—name:等待任务结束
uri:
Url: '{{api_url_v2}}/tasks/{{task_uuid}}'
方法:
validate_certs:假
force_basic_auth:真
Url_username: "{{prism_user}}"
Url_password: "{{prism_password}}"
return_content:真
注册:task_status
delegate_to: localhost
重试:10
延迟:5
直到:task_status.json。progress_status = = "成功"

—name:以人类可读的格式显示快照创建时间
调试:
msg: "快照创建时间:{{'%Y-%m-%d %H:% m:%S' | strftime((task_status.json.create_time_usecs|string)[:10])}}"

结果将是:

任务(snap_nutanix:显示快照创建时间为人类可读的格式 ] **********************************************************************************
[rhel7-1] => {
msg: "快照创建时间:2019-11-08 16:24:04"

徽章

关于多个集群,因为我只能访问一个节点Community Edition集群,我不知道……

也许您可以使用“GET /vms/”,并在集群中循环,直到找到VM。

Fredouye

感谢之前的帮助。

您能帮助解决以下问题吗?

在创建快照时,有时会遇到以下问题,而采取一堆虚拟机?是否有任何超时或需要增加的东西?

任务(VM的UUID ] **********************************************************************************************************************************************
2021年11月28日星期日23:27:21 +0800 (0:00:17.746)0:00:17.746 *******
致命:失败!=> {"changed": false, "content": "" ", "elapsed": 30, "msg": "Status code was -1 and not [200]: Connection failure:('The read operation timed out',)", "redirected": false, "Status ": -1, "url": ""}

—前一个任务快照成功,但快照成功后,有少数虚拟机快照失败(等待任务完成)

{"msg": "条件检查'task_status.json。progress_status == \"Succeeded\"' failed. "当计算条件(task_status.json。progress_status == \"Succeeded\"): 'dict object'没有属性'json'"}

—所提供的删除快照剧本运行良好,但它会删除所有与VM关联的快照。我们需要删除特定的快照?

-我们传递的虚拟机名称在库存文件的形式,但少数虚拟机的快照失败,因为库存名称和虚拟机显示名称是大小写敏感的?

问候

拉吉

回复


Baidu