Nutanix的Ansible模块

  • 2019年4月25日
  • 19回复
  • 6882意见

是否有人使用Ansable来自动执行Nutanix任务。有人可以分享一些例子吗?

19回复

Userlevel 1
徽章 +2
你好,

我正在使用Ansible来配置Prism设置。DNS,NTP,警报,代理,身份验证等。我将尝试清理所有特定数据,并将其发布在Nutanix Git或我自己的Git门户网站上。
徽章
@itguyadam- 我正在尝试使用Ansible在特定群集上列出VM-目前,我列出了所有VM,然后根据cluster_name进行过滤。

有没有更好的方法可以将cluster_name作为过滤器传递并仅在该特定群集上获得VM?

tia
Userlevel 1
徽章 +2
@hfg_nutanix我已经上传了git的角色。我仍在处理一些任务,并准备出版,但是一切的骨头就在那里。

https://github.com/ad-code/automation/tree/master/ansible/nutanix_cluster_baseline
Userlevel 1
徽章 +2
@okbeacon您当前正在使用哪些命令?
徽章
@itguyadam- 谢谢您的回复!
我最终弄清楚了如何做(找不到有关过滤器的任何文档)

代码:
-  import_tasks:get_session_cookie.yml

- 名称:获取VMS列表
URI:
URL:“ {{api_url_v3}}/vms/list”
身体:
KIND:VM
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_proviseer

目前正在努力在Nutanix上配备K8S群集 - 一旦我对此感到满意,我将把它放在GitHub上。
Userlevel 1
徽章 +2

我刚刚创造了一个明智的角色(https://galaxy.ansible.com/cybergavin/nutanix_vm_create)用于使用不同图像和不同子网中的VMS创建。它还安装并启用NGT。

徽章

@itguyadam

- 谢谢您的回复!
我最终弄清楚了如何做(找不到有关过滤器的任何文档)

过滤器规格正在杀死我!感谢您分享这一点。一旦我知道上下文和语法,它就可以完美地工作。

徽章

伙计们,

是否可以使用Ansible自动化VM快照过程?

我想在维护活动之前/之后进行VM的快照,并在维护活动之前恢复相同的快照。

徽章

你好

我添加了一个明显的角色来拍摄VM的快照:https://github.com/fredouye/nutanix_ansible

也有创建VM的角色,并将磁盘添加到现有的VM中。

你好,

有人可以帮助低于要求吗?

如何使用Ansible删除Nutanix VM?

如果VM快照成功或Ansible失败,该如何获得?

在服用VM快照时,将VM放置在不同的Nutanix群集中,如果一个群集中不存在VM,请检查其他群集吗?

如何列出VM快照以及日期Ansible?

问候

拉吉

徽章

你好

您可以使用“ delete /vms /{{uuid}}” API调用轻松使用Ansible删除VM。

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

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

拍摄快照时,您无需指定群集,但我想您的Prism必须管理所有主机。我是Nutanix的新手,如果我错了,请原谅我:)

你好,

感谢您提供的信息。您是否可以帮助您提供完整的Ansible Playbook以删除快照?我尝试了下面的事情似乎不起作用。

- 名称:删除vm快照{{invoctory_hostname}}
URI:
url:“ {{base_urlv2}}/{{vm_uuid}}”
方法:删除
用户:“ {{用户名}}”
密码:“ {{passwass}}”
身体:
snapshot_specs:
- uuid:“ {{{vm_uuid}}”
snapshot_name:“ {{invoctory_hostname}} _ test”
Body_Format:JSON
标题:
内容类型:应用程序/JSON
接受:应用程序/JSON
force_basic_auth:是的
validate_certs:否
status_code:201

是的,我们使用Prism控制台来管理主机/VM。我们将VM放置在不同的群集中,如果可以在一个群集中存在VM,则可以做出任何条件,然后搜索另一个群集。

问候

拉吉

徽章

我添加了角色,该角色删除了给定VM的所有快照:https://github.com/fredouye/nutanix_ansible/tree/main/main/roles/vm_snapshots_remove

嗨,弗雷德,

谢谢。它按预期工作。

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

是否有方法可以使情况下VM不存在,然后检查其他棱镜吗?面临的挑战是,我们通过不同的棱镜将VM放置在不同的集群中。

问候

拉吉

徽章

嗨,拉吉

似乎Nutanix的API仅在微观秒内返回日期:

“ json”:{
“ cluster_uuid”:“ 0005CEC4-5D52-EFBF-2BB0-00505698BC02”,
“完整_time_usecs”:1636384114684320,
“ create_time_usecs”:1636384114376874

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

- 名称:等待任务结束
URI:
url:'{{api_url_v2}}/tasks/{{task_uuid}}}'
方法:获取
validate_certs:false
force_basic_auth:正确
url_username:“ {{prism_user}}”
url_password:“ {{prism_password}}”
return_content:true
注册:task_status
delegate_to:localhost
重试:10
延迟:5
直到:task_status.json.progress_status ==“成功”

- 名称:显示快照创建时间到人类可读格式
调试:
msg:“快照创建时间:{{{'%y-%m-%d%h:%m:%s'| strftime(((task_status.json.create_time_usecs_usecs | string)| string)[:10]}}}}}}}}}”

结果将是:

任务[snap_nutanix:显示快照创建时间人类可读格式] **************************************************************************************************************************************************************************************************
确定:[rhel7-1] => {
“ msg”:“快照创建时间:2021-11-08 16:24:04”
}

徽章

关于多个集群,由于我只能访问一个节点社区版群集,所以我不知道...

也许您可以使用“ get /vms /”,并在簇上循环,直到找到VM。

你好弗雷德,,,,

感谢您以前的所有帮助。

您能帮下面的问题吗?

- 在快照创建期间,有时会在采用一堆VM时面对以下问题?是否有超时或需要增加的东西?

任务[获取VM的UUID] *****************************************************************************************************************************************************************************
2021年11月28日,星期日23:27:21 +0800(0:00:17.746)0:00:17.746 *******
致命:失败!=> {“ change”:false,“ content”:“”,“ apaped”:30,“ msg”:“状态代码为-1而不是[200]:连接失败:('读取操作超时',),“重定向”:false,“状态”:-1,“ url”:“”}

- 在拍摄快照后,该条件正在失败(等到任务完成),但在以前的任务中取得了成功

{“ msg”:“条件检查'task_status.json.progress_status == \“成功\”''失败。对象'没有属性'json'}

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

- 我们正在以库存文件的形式传递VM名称,但是对于库存名称和vm显示名称而言,几个VM的快照失败是对病例敏感的吗?

问候

拉吉

回复


Baidu