Ansible &引用;搜索“;“中的字符串”;什么时候;条件语句?
在下面的剧本中,我必须在Ansible &引用;搜索“;“中的字符串”;什么时候;条件语句?,ansible,Ansible,在下面的剧本中,我必须在when:语句中使用search。当:item.name是search(domain_list)时,您能告诉我语句有什么问题吗domain_list是在files.yml中定义的数组变量,如下所示 --- -主机:本地主机 收集事实:错误 连接:本地 vars_文件: -files.yml 变量: 下文: -名称:ironman.vcloud-lab.com 连接状态:已连接 -名称:hulk.vcloud-lab.com 连接状态:已连接 -姓名:captain.vcl
when:
语句中使用search
。当:item.name是search(domain_list)时,您能告诉我语句有什么问题吗domain_lis
t是在files.yml
中定义的数组变量,如下所示
---
-主机:本地主机
收集事实:错误
连接:本地
vars_文件:
-files.yml
变量:
下文:
-名称:ironman.vcloud-lab.com
连接状态:已连接
-名称:hulk.vcloud-lab.com
连接状态:已连接
-姓名:captain.vcloud-lab.com
连接状态:已断开
-名称:hawkeye.vcloud-lab.com
连接状态:已断开
任务:
-名称:仅连接的esxi的筛选器列表
设定事实:
esxilist:{{esxilist}默认值([])+[item]}”
带_项:“{{infra}}”
当:item.name为search(domain_list)##时,选择短名称并测试列表中是否存在。例如,使用regex_replace
-名称:仅连接esxi的筛选器列表
设定事实:
esxilist:{{esxilist}默认值([])+[item]}”
循环:“{infra}}”
时间:\域中的\u短\u列表
变量:
_缩写:{{item.name | regex_replace('^(.*?\\.(.*)$','\\1')}
给予
esxilist:
-连接状态:已连接
名称:ironman.vcloud-lab.com
-连接状态:已断开
姓名:captain.vcloud-lab.com
下一个选项是拆分字符串并选择第一项。比如说
vars:
_缩写:{{item.name.split('.')|first}”
给出了相同的结果
看。比如说
-hosts:localhost
变量:
域列表:[a,b]
下文:
-{name:a.vcloud-lab.com,状态:CONNECTED}
-{名称:b.vcloud-lab.com,状态:断开连接}
-{名称:c.vcloud-lab.com,状态:CONNECTED}
任务:
-设定事实:
l1:{{l1}默认值([])+[item]}”
带_项:“{{infra}}”
时间:\域中的\u短\u列表
变量:
_缩写:{{item.name.split('.')|first}”
-调试:
变量:l1
谢谢,成功了!然而,它在类似的剧本中不起作用,但在更复杂的格言中起作用。我应该在这里做什么改变:“``请看任务”--设置事实:“在那里”。再次感谢你!请看这篇文章的第一个元素,``我试过:``简短:“{{{my_ontap.ontap\info.volume\u info[item].split(':')| first}}”,但它不起作用。“AWS_logs”是“volume_list”的值,因为实例分析复杂代码非常耗时。很抱歉打开一个新问题,并提出它。你的工作是删除不相关的代码和数据。是的。我在开始时已经尝试并使用了一个简化的代码。但是,真正的代码/指令更复杂。再次感谢,不客气。关键是删除不相关的代码,并使之成为现实。我已经添加了一个例子,说明它在实践中的意义。